---
title: "Machine Storefront -- try-before-buy (jurisdiction coverage or per-parcel quote)"
method: GET
path: "/api/v1/storefront/availability"
tags: ["Storefront"]
---

# Machine Storefront -- try-before-buy (jurisdiction coverage or per-parcel quote)

`GET /api/v1/storefront/availability`

## Request

- Base URL: `https://propraven.com`
- URL: `https://propraven.com/api/v1/storefront/availability`
- Auth: one of:
  - HTTP bearer
  - none

Try-before-buy at two scopes, both FREE and answered from the sealed catalog:

JURISDICTION mode (pass ?state=, optional &county=): how complete each field is in that state/county side-by-side with the national average, plus the worst local gaps and the base dossier quote. No parcel scan.

PARCEL mode (pass ?parcel_id=): the exact value-tiered dossier price for ONE parcel BEFORE paying, with the V/R/F multiplier breakdown, band, and the cheap signals it was derived from. This uses the SAME quote math as the x402 402 on /parcels/{id}/report, so the previewed price equals the amount the payer is charged. Does one light, indexed single-parcel read.

Provide EITHER parcel_id OR state. Same access model as the catalog: authenticated callers unmetered/uncapped, anonymous callers served and IP-throttled.

## Query parameters

- `parcel_id` string
- `state` string
- `county` string
- `limit` integer

## Response `200`

JURISDICTION mode: coverage for the jurisdiction plus the base dossier quote. PARCEL mode: the value-tiered per-parcel dossier quote.

- object: Shape depends on mode. Both carry contract_version, catalog_version, generated_at and seal. PARCEL mode adds mode='parcel', a `parcel` identity block, and `dossier_quote`; JURISDICTION mode adds `jurisdiction`, `coverage`, `fields`, `worst_gaps`, `quote`, `warts` and `counties`.
  - `contract_version` number, required
  - `catalog_version` string, required
  - `generated_at` string, required
  - `seal` object, required
    - `algorithm` string, required
    - `value` string, required
    - `covers` string, required
  - `disclosures` object, required
    - `annotation_version` string, required
    - `seal_scope` string, required
    - `withheld_fields` object[], required
      - `field` string, nullable, required
      - `reason` string, nullable, required
      - `withheld_on` string, nullable, required
      - `note` string, nullable, required
    - `annotation_basis` string, required
    - `reference_catalog` object, required
      - `version` string, required
      - `seal` string, required
    - `reference_catalog_matches` boolean, required
    - `catalog_published_at` string, required
    - `catalog_generated_at` string, required
    - `serving_epoch_match` string, required
    - `current_source_vintage` string, required
    - `freshness_scope` string, required
    - `coverage_scope` string, required
    - `pricing_scope` string, required
    - `applicability` string, required
    - `field_advisories` object[], required
      - `field` string, nullable, required
      - `documented_at` string, nullable, required
      - `evidence_source` string, nullable, required
      - `evidence_scope` string, nullable, required
      - `reference_catalog_version` string, nullable, required
      - `reference_catalog_seal` string, nullable, required
      - `reference_catalog_matches` boolean, nullable, required
      - `current_value_verified` boolean, nullable, required
      - `code` string, nullable, required
      - `note` string, nullable, required
  - `jurisdiction` object: JURISDICTION mode: the state/county being described.
    - `level` string, required
    - `state` string, required
    - `state_fips` string, required
    - `county_fips` string, required
    - `county_name` string, required
    - `parcels` number, required
    - `share_of_national` number, required
    - `counties` integer, required
    - `last_analyze` string, required
  - `coverage` object: JURISDICTION mode: headline coverage facts and parcel counts.
    - `headline_facts` object, required
      - `address` number, required
      - `geocode` number, required
      - `owner` number, required
      - `value` number, required
      - `geometry` number, required
    - `headline_facts_scope` string, required
    - `state_rollup_parcels` number, required
    - `state_ratified_parcels` number, required
    - `state_parcel_counts_unit` string, required
    - `national` object, required
      - `parcel_counts_epoch` string, required
      - `parcels` number, required
      - `mapped_locations` number, required
      - `geocoded_parcels` number, required
      - `rows` number, required
      - `parcel_count_definitions` object, required
        - `parcels` string, required
        - `mapped_locations` string, required
        - `geocoded_parcels` string, required
        - `rows` string, required
    - `national_parcels` number, required
  - `fields` object: JURISDICTION mode: national vs in-jurisdiction field-coverage summaries.
    - `sellable` number, required
    - `national` object, required
      - `measured_fields` number, required
      - `unmeasured_fields` number, required
      - `at_or_above` object, required
        - `0.95` number, required
        - `0.80` number, required
        - `0.60` number, required
        - `0.30` number, required
      - `tiers` object, required
        - `prime` number, required
        - `strong` number, required
        - `good` number, required
        - `partial` number, required
        - `sparse` number, required
        - `trace` number, required
      - `red_cells` number, required
      - `red_cell_rule` string, required
    - `in_jurisdiction` unknown, required
    - `county_field_resolution` string, required
  - `worst_gaps` object[]
    - `name` string, nullable, required
    - `label` string, nullable, required
    - `national` number, nullable, required
    - `state` number, nullable, required
    - `section` string, nullable, required
  - `quote` object: JURISDICTION mode: the base dossier quote.
    - `price` object, required
      - `amount` string, required
      - `currency` string, required
    - `currency` string, required
    - `add_ons` object[], required
      - `code` string, nullable, required
      - `label` string, nullable, required
      - `price` object, required
        - `amount` string, nullable, required
        - `currency` string, nullable, required
      - `available` boolean, nullable, required
      - `purchasable` boolean, nullable, required
      - `note` string, nullable, required
    - `pay` unknown[], required
      - unknown
    - `purchase_flow` string, required
  - `warts` object[]
    - `dataset` string, nullable, required
    - `surface` string, nullable, required
    - `status` string, nullable, required
    - `observed_max_date` string, nullable, required
    - `age_days` number, nullable, required
    - `max_age_days` integer, nullable, required
    - `probed_at` string, nullable, required
    - `reason` string, nullable, required
  - `counties` object: JURISDICTION mode: the state's counties by parcel count.
    - `total` integer, required
    - `returned` number, required
    - `rows` object[], required
      - `state_fips` string, required
      - `county_fips` string, required
      - `state` string, nullable, required
      - `name` string, nullable, required
      - `parcels` number, nullable, required
      - `coverage` object, required
        - `address` number, nullable, required
        - `geocode` number, nullable, required
        - `owner` number, nullable, required
        - `value` number, nullable, required
        - `geometry` number, nullable, required
  - `mode` 'parcel': 'parcel' in PARCEL mode; absent in JURISDICTION mode.
  - `parcel` object: PARCEL mode: the resolved parcel identity.
    - `canonical_id` string, required
    - `state_fips` string, required
    - `county_fips` string, required
    - `county_fips_5` string, required
    - `parcel_id` string, required
  - `dossier_quote` object: PARCEL mode: the value-tiered quote for this parcel.
    - `basis` string, required
    - `price` Money, required: A money amount as a decimal string plus its currency code.
      - `amount` string, required
      - `currency` string, required
    - `price_usd` number, required
    - `price_atomic_usdc` string, required: What the x402 402 advertises as maxAmountRequired (USDC atomic, 6dp).
    - `asset` string, required
    - `band` object, required: Asset-class band (residential|multifamily|premium) derived from assessed value.
      - `key` string, required
      - `label` string, required
      - `range` string, required
    - `breakdown` object, required: The auditable multipliers: base, V (asset value), R (data richness), F (freshness).
      - `base` number, required
      - `V` number, required
      - `R` number, required
      - `F` number, required
    - `signals` object, required: The cheap signals the multipliers were derived from.
      - `assessed_value` number, required
      - `populated_fields` number, required
      - `has_deeds` boolean, required
      - `has_permits` boolean, required
      - `freshness` string, required
    - `geometry_add_on` object, required
      - `code` string, required
      - `label` string, required
      - `price` object, required
        - `amount` string, required
        - `currency` string, required
      - `purchasable` boolean, required
    - `pay` string[], required
    - `note` string, required

## Other responses

- `400`: Missing/unknown state or county, or an invalid parcel_id.
- `401`: Missing, malformed or invalid credential.
- `404`: PARCEL mode: the parcel does not resolve, or has no serving row in the current epoch (so no dossier can be priced). JURISDICTION mode: the state/county is not served.
- `405`: The endpoint exists but does not support this method. `Allow` lists the methods it does.
- `429`: Rate limit exceeded.
- `500`: Unexpected server error. The body never carries database or driver text.

---

[API](https://skmtc.dev/propraven/apis/propraven-api.md) · [All operations](https://skmtc.dev/propraven/apis/propraven-api/llms.txt) · [OpenAPI document](https://skmtc.dev/propraven/apis/propraven-api/revisions/37f8158c4eda?raw)
