Get market statistics for a ZIP code
const url = 'https://app-api.landinsights.co/api/public/v1/markets-stats/zip/81133/stats/';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://app-api.landinsights.co/api/public/v1/markets-stats/zip/81133/stats/ \ --header 'Authorization: Bearer <token>'Returns aggregated market statistics for a single 5-digit ZIP code. Includes median sale price, days on market, price per acre, and listing volume by acreage bucket — the same metrics as the county endpoint, scoped to one ZIP.
Cost: 10 tokens per call. Returns 404 (0 tokens) when the ZIP code is not recognized.
The fips field is empty on ZIP responses; the ZIP code in name is the identifier. For county-wide statistics, use get_market_stats.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”5-digit ZIP code.
Examples
San Luis, CO (Costilla County)
81133Deming, NM (Luna County)
88030Sierra Blanca, TX (Hudspeth County)
79851Cody, WY (Park County)
82414Responses
Section titled “ Responses ”Market statistics for a region (county / ZIP).
object
Internal region identifier.
Region type — ‘county’ for full-county stats, ‘zip’ for a single ZIP.
county- Whole county.zip- Single ZIP code.
County name (when type=‘county’) or ZIP code (when type=‘zip’).
Two-letter US state code (e.g., ‘CA’).
Primary county name. For ZIP regions, the county the ZIP falls into.
5-digit county FIPS code.
List of statistic buckets, one per acreage range. May be empty for regions where no stats have been computed yet.
object
Acreage bucket label. The list contains overlapping ranges (e.g. both 5 acre-10 acre and 5 acre-100 acre) because the pipeline emits multiple useful slices; pick the bucket closest to the acreage you’re analysing.
Aggregated metrics for parcels in this acreage bucket. Field names mirror the internal pipeline labels — abbreviations: STR = sell-through rate, DOM = days on market, PPA = price per acre, Gini = Gini coefficient of PPA dispersion (0–100, lower = tighter).
object
Number of currently-active listings in this bucket.
Number of pending (under-contract) listings.
Closed sales in the trailing 1 month.
Closed sales in the trailing 3 months.
Closed sales in the trailing 6 months.
Closed sales in the trailing 12 months.
Pending sell-through rate (%): pending listings as a fraction of active inventory.
1-month sell-through rate (%): trailing-month sales as a fraction of active inventory.
3-month sell-through rate (%).
6-month sell-through rate (%).
12-month sell-through rate (%).
Average days-on-market for sales closed in the trailing month.
Average days-on-market over the trailing 3 months.
Average days-on-market over the trailing 6 months.
Average days-on-market over the trailing 12 months.
Median closed sale price (USD) in the trailing month.
Median closed sale price (USD) over the trailing 3 months.
Median closed sale price (USD) over the trailing 6 months.
Median closed sale price (USD) over the trailing 12 months.
Median asking price (USD) across pending listings.
Median asking price (USD) across active listings.
Median acreage across active listings.
Median acreage across pending listings.
Median acreage across closed sales (trailing 12 months).
Median price per acre (USD) across pending listings.
Median price per acre (USD) across active listings.
Median price per acre (USD) across closed sales in the trailing 12 months.
Minimum price per acre observed across active listings.
Maximum price per acre observed across active listings.
Minimum price per acre observed across pending listings.
Maximum price per acre observed across pending listings.
Minimum price per acre in sales closed during the trailing month.
Maximum price per acre in sales closed during the trailing month.
Minimum price per acre in sales closed during the trailing 3 months.
Maximum price per acre in sales closed during the trailing 3 months.
Minimum price per acre in sales closed during the trailing 6 months.
Maximum price per acre in sales closed during the trailing 6 months.
Minimum price per acre in sales closed during the trailing 12 months.
Maximum price per acre in sales closed during the trailing 12 months.
Gini coefficient (0–100) of price-per-acre in trailing-month sales. Lower = tighter clustering.
Gini coefficient (0–100) over the trailing 3 months.
Gini coefficient (0–100) over the trailing 6 months.
Gini coefficient (0–100) over the trailing 12 months.
Examples
San Luis, CO (81133) — ZIP statistics
{ "id": "7a1b2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d", "type": "zip", "name": "81133", "state": "CO", "county_name": "Costilla County", "fips": "", "stats": [ { "type": "2 acre-5 acre", "data": { "Active": 41, "Pending": 2, "Sold: 1yr": 17, "1yr STR": 45.95, "Avg DOM 1yr": 198, "Median Active Price": 8900, "Median Active PPA": 2966.67, "Median Sold PPA": 2750, "Median Active Acreage": 3.1, "Gini 1yr": 58.4 } }, { "type": "5 acre-10 acre", "data": { "Active": 63, "Pending": 8, "Sold: 1yr": 34, "1yr STR": 53.97, "Avg DOM 1yr": 151, "Median Active Price": 11500, "Median Active PPA": 1950, "Median Sold PPA": 1875, "Median Active Acreage": 5.4, "Gini 1yr": 35.2 } } ]}Validation error.
object
object
Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, payment_required, validation_error, not_found, method_not_allowed, rate_limited, internal_error.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}Missing or invalid credentials.
object
object
Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, payment_required, validation_error, not_found, method_not_allowed, rate_limited, internal_error.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}A Pro subscription or higher API tier is required.
object
object
Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, payment_required, validation_error, not_found, method_not_allowed, rate_limited, internal_error.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}Authenticated but not permitted.
object
object
Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, payment_required, validation_error, not_found, method_not_allowed, rate_limited, internal_error.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}Resource not found.
object
object
Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, payment_required, validation_error, not_found, method_not_allowed, rate_limited, internal_error.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}Rate limit exceeded.
object
object
Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, payment_required, validation_error, not_found, method_not_allowed, rate_limited, internal_error.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}Internal error.
object
object
Stable machine-readable error code. One of: unauthorized, forbidden, subscription_required, tier_upgrade_required, usage_limit_exceeded, payment_required, validation_error, not_found, method_not_allowed, rate_limited, internal_error.
Human-readable description of the error.
Echoes the request’s X-Request-Id (or a server-issued id). Quote it in support requests.
Present on validation errors only: maps each rejected field to its list of messages.
object
Example generated
{ "error": { "code": "example", "message": "example", "request_id": "example", "details": {} }}