Production update: Great Britain, New Zealand, Australia, and Estonia are live alongside the U.S. property stack, with native identifiers and source-aware provenance. Open the 8-page PPIE guide →
Docs API Workspace Property API Global Property Property Intelligence Community Intelligence EPA FRS proximity Market API AI + MCP 2026.08 PDF Guide Data Sources Get API Access
PROPDATA API SURFACE v1 · DOCS 2026.08 COUNTRY-AWARE API · 166M+ U.S. PARCELS · 40M+ GB PROPERTY IDENTITIES BASE: propdata-api-worker.sales-fd3.workers.dev
Overview
Five-country production footprint

One key. Property identity across borders.

PropData is now country-aware. Existing U.S. requests remain backward compatible, while Great Britain supports exact UPRN property identity with linked USRN and TOID identifiers. Every country adapter preserves native identifiers, source provenance, coverage status, and explicit unavailable states instead of forcing different land systems into one lossy schema.

SERVER-SIDE QUICKSTARTx-api-key
export PROPDATA_API_KEY="propdata_pk_..." curl "https://propdata-api-worker.sales-fd3.workers.dev/v1/property?county_fips=36061&parcel=1008350041&enrich=full" \ -H "x-api-key: $PROPDATA_API_KEY"
US PARCEL · GB UPRN · NZ · AU · EE · SOURCE-AWARE IDENTITYFULL JSON

Country-aware property identity

PropData routes property identity through an explicit country contract instead of pretending every jurisdiction uses U.S.-style parcels. Existing requests remain backward compatible: when country is omitted, the API defaults to US.

USProduction default · 166M+ indexed parcels
GBProduction · exact UPRN identity lookup
USRNLinked identifier coverage complete
TOIDLinked identifier coverage complete
Great Britain is live for identity. Exact UPRN lookup returns source-aware property identity and coordinates plus linked USRN and TOID identifiers where available. The production identity graph contains 40M+ GB property identities.
Enrichment status is layer-specific. Great Britain, New Zealand, Australia, and Estonia are live identity footprints, but individual enrichment layers still expose their own source, freshness, linkage, and availability states. A live country never implies every optional field is universally present.

/v1/countries

Country discovery for the international property contract. Use this route to inspect which adapters are production-ready and which are still ingesting or validating.

GET/v1/countriesCountry registry + status
curl "https://propdata-api-worker.sales-fd3.workers.dev/v1/countries" \   -H "x-api-key: $PROPDATA_API_KEY"

Current production states include US, GB, NZ, AU, and EE. The U.S. remains the backward-compatible default; international adapters preserve source-native identifiers and provenance. Treat the returned registry as authoritative for layer-level availability.

Great Britain · exact UPRN lookup

Use the standard /v1/property route with country=GB and an exact Unique Property Reference Number. This is an identity lookup, not a U.S.-style parcel/APN lookup.

GET/v1/property?country=GB&uprn=...Exact GB property identity
ParameterTypeDescription
countryrequiredSet to GB.
uprnrequiredExact Great Britain Unique Property Reference Number.
curl "https://propdata-api-worker.sales-fd3.workers.dev/v1/property?country=GB&uprn=1" \   -H "x-api-key: $PROPDATA_API_KEY"
Production verified. Exact UPRN identity resolution is live. Responses can include coordinates, confidence, provenance, and linked identifiers including USRN and TOID.
Do not infer unavailable title or transaction joins. HMLR Price Paid and INSPIRE geometry are separate evidence layers. Their presence in the data platform does not imply a deterministic title/transaction relationship to every UPRN until the response explicitly exposes that linkage.

Property Intelligence Engine candidate

PPIE moves beyond a stateless property record. It resolves an exact property, assembles source-aware evidence, computes a persistent property state, and can detect which dimensions changed between snapshots.

VALUEsource-aware value context
ALPHArelative-performance research signal
LIQUIDITYlocal market pressure
RISKproperty evidence + bounded market pressure
STATEmarket-regime classification
TRAJECTORYbear / base / bull candidate scenarios
Candidate / pre-production. PPIE is deployed behind PropData x-api-key authentication, but it has not yet been promoted into the canonical /v1 namespace. Candidate scores and scenarios are not appraisals, guarantees, or calibrated production probabilities.
GET/functions/v1/propdata-property-intelligence-v1One-call property intelligence candidate
ParameterTypeDescription
addressrequiredProperty address to resolve.
cityoptionalCity constraint.
staterecommendedTwo-letter U.S. state code for reliable U.S. resolution.
ziprecommendedConstrains identity and attaches local market evidence.
current_valueoptionalCaller-supplied current-value override.
capture_snapshotoptionalPersist the current state for later change detection. Endpoint default: false.
curl "https://rlfyavnhbngwbldebrid.supabase.co/functions/v1/propdata-property-intelligence-v1?address=651%20Fuller%20Avenue&city=Saint%20Paul&state=MN&zip=55104" \   -H "x-api-key: $PROPDATA_API_KEY"

Candidate responses can include resolution, property_state, market_evidence, property_evidence, explanation, confidence, snapshot, change_detection, and limitations.

Property Alpha research

Property Alpha is being developed as expected annualized property performance relative to the broader market. PropData intentionally returns null when calibrated cohort evidence is insufficient.

65,887qualified repeat-sale outcomes in the research spine
3,1072025 out-of-time V3 holdout observations
4.1672 ppV3 holdout MAE
72.32%V3 directional accuracy
Research metrics, not a performance guarantee. Alpha V3 remains candidate. The next modeling work is focused on property-specific historical outcome features rather than endlessly reweighting geography.

Outcome Engine V1 · models with receipts

The internal Outcome Engine preserves what a model believed at prediction time and later scores that prediction against observed reality. Prediction state and evidence stay separate from later outcomes, so model history cannot be rewritten after the fact.

prediction_snapshot
→ exact model version + evidence + horizon
→ outcome_event
→ prediction_score
→ MAE · RMSE · signed error · direction

The ledger is designed to score Alpha, liquidity, risk, trajectory, and market-state outcomes and to let future model versions compete on the same realized outcomes.

Internal evaluation infrastructure. Current ledger records include canaries / candidates. Tiny internal scorecards are not model-validation statistics and are not presented as production performance.

Estonia · cadastral + ADS property identity

Use country=EE on the standard property contract. Estonia preserves the national cadastral identifier and official ADS identity graph instead of translating the market into a U.S.-style APN model.

EEProduction country adapter
ADSOfficial national address + object identity
ADR_IDCanonical address identity preserved
ADS_OIDProperty-object identity preserved with ADOB_ID versions
GET/v1/property?country=EE&parcel=29601:014:0290Exact Estonia cadastral identity
ParameterTypeDescription
countryrequiredSet to EE.
parcelrecommendedNational cadastral identifier, for example 29601:014:0290.
addressoptionalOfficial ADS address text when resolving by address.
curl "https://propdata-api-worker.sales-fd3.workers.dev/v1/property?country=EE&parcel=29601:014:0290" \   -H "x-api-key: $PROPDATA_API_KEY"
ESTONIA · LIVE. Official national cadastral and ADS data power the production identity layer, including cadastral IDs, address identities, object identities, building-to-parcel relationships, representative coordinates, and provenance.
Native identifiers stay native. PropData preserves cadastral identifiers plus ADR_ID, ADS_OID, and ADOB_ID where available rather than fabricating U.S.-style fields.
Complete portable reference

The current contract + Property Intelligence Engine, ready to hand off.

Use the live documentation while building and the updated 8-page guide for architecture review, procurement, security review, and implementation handoff. The PDF now covers the current production contract plus the candidate Property Intelligence Engine, Alpha V3 validation, persistent state vectors, change detection, and Outcome Engine V1.

8 PAGESPPIE CANDIDATEALPHA V3OUTCOME ENGINEREST + MCP
UPDATED AUGUST 26, 2026 · VERSION 2026.08 · PRODUCTION + PPIE CANDIDATE REFERENCE
Live in production VERIFIED AUGUST 13, 2026 · DATASET 2026-08

Community Intelligence is live

Builder-tier and higher credentials can call both standalone geography routes and receive both intelligence layers during enrich=full. Read-only production verification returned HTTP 200 with published coverage for the exact tract and block group below, and the Empire State Building Full Enrich response returned an available root summary with both record-level objects attached. Successful Community responses expose x-propdata-community-intelligence: 2026-08.

TRACT · LIVE36061007600
Published record · coverage available
BLOCK GROUP · LIVE360610076001
Published record · coverage available
FULL ENRICH · LIVE36061 / 1008350041
Both intelligence records attached
# Standalone tract
curl "https://propdata-api-worker.sales-fd3.workers.dev/v1/tract-intelligence?geoid=36061007600" -H "x-api-key: $PROPDATA_API_KEY"

# Standalone block group
curl "https://propdata-api-worker.sales-fd3.workers.dev/v1/block-group-intelligence?geoid=360610076001" -H "x-api-key: $PROPDATA_API_KEY"

# Property + both Community Intelligence layers
curl "https://propdata-api-worker.sales-fd3.workers.dev/v1/property?county_fips=36061&parcel=1008350041&enrich=full" -H "x-api-key: $PROPDATA_API_KEY"
Raw Full Enrich placement. The response keeps the existing property envelope. A top-level community_intelligence object summarizes dataset, status, resolved GEOIDs, and geography source. The full tract_intelligence, block_group_intelligence, and independent coverage objects are attached to each returned property record—not nested inside the root summary and not wrapped in a new data object.
Fail-open property delivery. Community decoration uses an internal lookup path and never calls the public API recursively. A geography miss, unpublished record, timeout, or lookup error cannot turn a valid core property lookup into an enrichment failure. Intelligence fields remain null with explicit unavailable coverage when possible; if decoration itself fails, the original core response is returned unchanged.
National layer · live in production VERIFIED AUGUST 14, 2026 · SOURCE RELEASE 2026-08-01

EPA FRS facility proximity is live in Full Enrich

Builder-tier and higher /v1/property?enrich=full requests can screen a verified parcel coordinate against PropData's indexed U.S. EPA Facility Registry Service snapshot. The property contract returns independent coverage, distance-ranked proximity context, program associations, provenance, and limitations without changing the core property envelope.

5,300,149Federal source rows
4,185,694Coordinate-bearing records
1,114,455Records without coordinates
2026-08-01Source release
{
  "epa_frs_proximity_coverage": {
    "status": "available",
    "coordinate_source": "verified_parcel_centroid",
    "source_release_data_as_of": "2026-08-01"
  },
  "epa_frs_proximity": {
    "status": "matched",
    "matching_facility_count": 5744,
    "records_returned": 5,
    "nearest_distance_miles": 0.022748
  },
  "environmental_facility_intelligence": {
    "source": "U.S. EPA Facility Registry Service",
    "source_aware": true,
    "screening_only": true
  }
}
Authenticated production canary. Manhattan parcel 36061 / 1008350041 returned HTTP 200 with coverage available from a verified_parcel_centroid, status matched, five distance-ranked results, and a nearest indexed facility distance of 0.022748 miles.
Screening context, not a liability determination. Proximity or a program association does not prove contamination, liability, or current regulatory status. Records without coordinates cannot support a favorable universal negative. Always inspect coverage, provenance, release date, distance, and the underlying agency record before making a regulated or high-stakes decision.
Current release ledgerProduction truth, with status attached.
National EPA FRS proximityLive

Published inside enrich=full from the private, versioned 2026-08-01 snapshot. Authenticated customer canary passed.

Bexar County · 480292026 validation

Production metadata now reflects the current 2025 roll instead of stale 2019 metadata. The exact 730,721-row official 2026 roll has passed bounded dry-run validation and is not labeled live until publication completes.

Overview

PropData is independent, country-aware property data infrastructure. The U.S. production stack is backed by 166M+ indexed parcels across all 50 states; Great Britain production now adds 40M+ property identities with exact UPRN resolution and linked USRN and TOID identifiers. Country-specific contracts preserve native land identifiers and source provenance while sharing one REST and MCP access layer.

166M+indexed U.S. parcel records across all 50 states
40M+Great Britain property identities with native UPRN support
UPRN+linked USRN and TOID identifiers exposed in production
<50mstypical edge response target for cached requests
Production access starts at $79/month. Monthly plans bill immediately, include defined request allowances, and can be canceled anytime. View plans.

What the API can return

  • Market intelligence - rent trends, HUD Fair Market Rents by bedroom, listing velocity, inventory, sale-to-list context, FHFA appreciation, Census affordability, mortgage rates, and deterministic investor signals
  • Property identity - U.S. parcel/APN identity and official attributes plus Great Britain exact UPRN identity with linked USRN and TOID identifiers
  • Location + environmental screening - ZIP and state signals, neighborhood Census profiles, coordinate-to-parcel resolution, county FIPS routing, verified polygon geometry, and national EPA FRS facility proximity where coordinates are available
  • Leads - Pre-foreclosure leads with auction dates, default amounts, lender, trustee; skip trace (owner phones + email)
  • Change feeds - Property delta and pre-foreclosure delta since any ISO 8601 timestamp, with cursor pagination
  • Country discovery - use /v1/countries to inspect supported country adapters and their current production or ingest status

Fail-open delivery, fail-closed facts

Community Intelligence and EPA FRS decoration are non-blocking: a geography, coordinate, snapshot, or lookup miss does not fail the underlying property response. At the same time, the data contract remains fail-closed—unsupported geometry, low-confidence matches, unpublished records, records without coordinates, and unavailable attributes stay explicit or null instead of being estimated, broadened to a different geography, or fabricated.

Quickstart

Keep the credential in a secrets manager or server-side environment variable. The examples below never embed a live key in a URL, browser bundle, repository, or copied request path.

# Server-side environment
export PROPDATA_API_KEY="propdata_pk_..."

curl "https://propdata-api-worker.sales-fd3.workers.dev/v1/market?zip=55101" \
  -H "x-api-key: $PROPDATA_API_KEY"
const response = await fetch("https://propdata-api-worker.sales-fd3.workers.dev/v1/market?zip=55101", {
  headers: { "x-api-key": process.env.PROPDATA_API_KEY }
});
const data = await response.json();
import os, requests

data = requests.get(
  "https://propdata-api-worker.sales-fd3.workers.dev/v1/market",
  params={"zip": "55101"},
  headers={"x-api-key": os.environ["PROPDATA_API_KEY"]},
).json()
Want to test without editing code? The PropData API Workspace includes a guarded Request Lab, live quota telemetry, key inventory, and session-only request diagnostics.

Authentication

All endpoints except /v1/health, /v1/stats, and /v1/changelog require a PropData API key. Send it in the x-api-key request header.

Required header

x-api-key: YOUR_API_KEY
Query-string keys are intentionally excluded. URLs can leak through browser history, analytics, proxies, logs, screenshots, and referrer headers. Keep the key in a server-side environment variable or secrets manager and send it only as a header.

Credential formats

  • propdata_pk_... credentials support server-side creation, listing, and revocation.
  • Existing legacy account keys remain valid while an account migrates to managed keys.
  • MCP clients use an OAuth authorization flow. Do not paste a static REST secret into a connector field unless the client-specific setup guide explicitly asks for it.
Browser applications: do not ship a production PropData key to end users. Place the request behind your own trusted server or edge function and enforce your application’s authorization there.

API key lifecycle

Managed keys can be listed, created, and revoked without replacing the account’s legacy credential. The connected credential must be authorized to manage the account.

GET/v1/auth/keysList key metadata

Returns items, limit, remaining, and max. Key metadata can include id, name, prefix, created_at, last_used_at, and revoked_at. Full secrets are never returned by list operations.

curl "https://propdata-api-worker.sales-fd3.workers.dev/v1/auth/keys" \
  -H "x-api-key: $PROPDATA_API_KEY"
POST/v1/auth/keysCreate a managed key

Send a clear key name. The new secret is shown once in the successful response; immediately store it in a secrets manager.

curl -X POST "https://propdata-api-worker.sales-fd3.workers.dev/v1/auth/keys" \
  -H "Content-Type: application/json" \
  -H "x-api-key: $PROPDATA_API_KEY" \
  -d '{"name":"Production API"}'
DELETE/v1/auth/keys/:idRevoke a managed key

Revocation is immediate. Confirm the target ID from the key inventory and rotate every dependent service before revoking a production credential.

curl -X DELETE "https://propdata-api-worker.sales-fd3.workers.dev/v1/auth/keys/key_id" \
  -H "x-api-key: $PROPDATA_API_KEY"

Rate Limits

PropData enforces account, key, endpoint, source, and time-window limits where applicable. Exceeding an active limit returns HTTP 429. The authenticated usage response and rate-limit headers are authoritative for the connected account.

PlanReq/hrReq/minReq/monthMonthly / annual
Starter5006010,000$79 / $799
Builder50012050,000$199 / $1,999
Scale1,500Unlimited250,000$499 / $4,999
EnterpriseCustomCustomCustom$1,499 / $14,999
Your live entitlement is authoritative. Use /v1/auth/usage to confirm the tier, used requests, allowance, remaining requests, and reset metadata attached to the current key. Responses can also expose X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset. Contracted and RapidAPI plans can have account-specific limits.
Builder+ routes: /v1/tract-intelligence, /v1/block-group-intelligence, /v1/property?enrich=full, and /v1/skip-trace require Builder tier or above. Nationwide delta queries without a ZIP/state filter also require Builder tier or above.

What Counts as One Request?

PropData meters customer-visible API operations—not the number of fields returned or the number of internal sources used to assemble a response. One successful authenticated request to one metered data endpoint consumes one request unit.

enrich=full consumes one request. A single property request can assemble 100+ schema fields across property, parcel, market, Census, Community Intelligence, risk, and other available layers while consuming only one request unit. Returned fields, internal enrichment layers, and upstream source lookups do not create additional customer charges.
Request patternUsageHow it is counted
Single endpoint request1 unitOne successful request to one metered PropData endpoint.
/v1/property?enrich=full1 unit totalThe complete enriched response counts once, regardless of field or layer count.
Cached response1 unitA repeated lookup served from cache is still one customer-requested API operation.
Multi-step workflow1 unit per requestA coordinate lookup followed by a Full Enrich property lookup is two external requests and therefore two units.
Internal source fan-out0 additional unitsCensus, FEMA, HUD, EPA FRS, county GIS, database, or other internal lookups performed inside the same request are not billed separately.
Batch operation1 unit per input recordA supported batch containing 100 submitted properties consumes 100 request units.
Account and system checks0 units/v1/auth/usage, health, stats, changelog, documentation, and CORS preflight requests are not metered as data operations.
RapidAPI and contracted accounts. A single RapidAPI request using enrich=full is still one request. Account-specific allowances and reset windows can differ, so the authenticated /v1/auth/usage response remains authoritative for the connected credential.

A client-initiated retry is a new external request. Cache repeated results in your application where appropriate, debounce autocomplete traffic, and avoid calling a multi-step workflow when one endpoint already returns the contract you need.

Base URL

https://propdata-api-worker.sales-fd3.workers.dev

All documented routes are prefixed with /v1/ and require HTTPS. Edge caching can reduce latency for eligible repeated reads, but source-backed and live-enrichment requests can take longer. Always use measured response time and the endpoint’s timeout guidance instead of treating the edge target as a universal guarantee.

RapidAPI subscribers use: https://propdata-real-estate-market-intelligence-api.p.rapidapi.com

Production architecture: even where a route permits cross-origin requests, do not expose a live credential in customer-facing browser code. Route calls through a trusted server or edge layer.

/v1/market

Full market profile. Returns rent, listing velocity, demand signals, affordability, home price appreciation, FRED macro context, and computed investor signals - from 7 sources in one call.

GET /v1/market Full market snapshot
ParameterTypeDescription
zipoptional5-digit ZIP. e.g. 55104
stateoptional2-letter state. e.g. MN
metrooptionalMetro name. e.g. Minneapolis
One of zip, state, or metro is required.
const res = await fetch(
  'https://propdata-api-worker.sales-fd3.workers.dev/v1/market?zip=55104',
  { headers: { 'x-api-key': 'YOUR_KEY' } }
);
const d = await res.json();
d.snapshot.median_rent;         // 1534
d.macro.mortgage_rate_30yr;     // 6.75
d.snapshot.investor_signal;     // "watchlist"
d.snapshot.gross_yield_pct;     // 5.75
import requests

r = requests.get(
  'https://propdata-api-worker.sales-fd3.workers.dev/v1/market',
  params={'zip': '55104'},
  headers={'x-api-key': 'YOUR_KEY'}
)
d = r.json()
print(d['snapshot']['median_rent'], d['macro']['mortgage_rate_30yr'])
curl "https://propdata-api-worker.sales-fd3.workers.dev/v1/market?zip=55104" \
  -H "x-api-key: YOUR_KEY"

/v1/markets/top

Ranked market intelligence for discovery workflows. Returns scored markets with coverage, confidence, missing-field visibility, and methodology context so rankings can be evaluated instead of treated as a black box.

GET /v1/markets/top Ranked market opportunities
ParameterTypeDescription
modeoptionalRanking profile: balanced, rental, cash_flow, or premium
stateoptionalRestrict the ranking to a 2-letter state
limitoptionalMaximum ranked markets to return
curl "https://propdata-api-worker.sales-fd3.workers.dev/v1/markets/top?mode=balanced&limit=10" \
  -H "x-api-key: YOUR_KEY"

Responses expose requested scope, resolved scope, ranking mode, score components, coverage, confidence, missing fields, and methodology. Scope mismatches are rejected rather than silently substituted.

/v1/rent

Rent-focused endpoint. Returns Zillow ZORI asking rent + HUD Fair Market Rents by bedroom. Lighter than /v1/market when you only need rent data.

GET /v1/rent ZORI + HUD FMR rent data
ParameterTypeDescription
zipoptional5-digit ZIP
stateoptional2-letter state
metrooptionalMetro name

Returns: estimated_rent, zori, fmr_2br, median_rent, history[] (12 months), source attribution.

/v1/estimate

Proprietary weighted rent AVM. Returns low/mid/high range with confidence score and full model weight transparency. Full estimate engine docs ->

GET /v1/estimate Weighted rent estimate
ParameterTypeDescription
zipoptional5-digit ZIP (required if no state)
stateoptional2-letter state
bedsoptional0=Studio, 1-4. Default: 2
const res = await fetch(
  'https://propdata-api-worker.sales-fd3.workers.dev/v1/estimate?zip=55104&beds=2',
  { headers: { 'x-api-key': 'YOUR_KEY' } }
);
const { estimate } = await res.json();
estimate.monthly_low;     // 1482
estimate.monthly_mid;     // 1609
estimate.monthly_high;    // 1738
estimate.confidence_pct;  // 85

Model weights

SourceWeightWhy
Zillow ZORI40%Current asking rent - strongest market signal
Census ACS25%Actual renter-paid rent - affordability anchor
HUD FMR20%Government bedroom benchmark
Assessor cap rate15%Implied from sale price - investor sanity check

/v1/listing

Active listing market data from Realtor.com Research. Returns median listing price, active inventory, and median days on market.

GET /v1/listing Active inventory + DOM
ParameterTypeDescription
zipoptional5-digit ZIP
stateoptional2-letter state
metrooptionalMetro name

/v1/zip-intel

ZIP-level investment intelligence built from named market, housing, demographic, and risk sources. Returns AVM value, gross yield, year-over-year change, vacancy, FEMA flood context, walkability, school context, and USDA rural eligibility. ZIP is not the statutory geography for Opportunity Zone screening; use /v1/tract-intelligence or enrich=full for the tract-true contract. Treat any generated narrative as an interpretation of the returned evidence—not as a valuation, underwriting decision, or source of record.

GET /v1/zip-intel Source-aware investment context per ZIP
ParameterTypeDescription
ziprequired5-digit ZIP. e.g. 55104
const res = await fetch(
  'https://propdata-api-worker.sales-fd3.workers.dev/v1/zip-intel?zip=55104',
  { headers: { 'x-api-key': 'YOUR_KEY' } }
);
const d = await res.json();
d.market.gross_yield;          // 5.75
d.scores.walkability;          // 72
d.scores.school_score;         // 7
d.market.gross_yield;          // structured ZIP signal
d.ai_analysis;                // Optional evidence summary
Evidence before narrative. Build decisions from the structured values and their source metadata. When an ai_analysis value is present, it is supplemental and may be omitted without changing the underlying market contract. Do not infer statutory Opportunity Zone eligibility from a ZIP.

/v1/state-intel

State-level market signal. Returns BUY / HOLD / CAUTION / AVOID based on seller friction index and state risk index, plus top 5 metros with ZHVI and 12-month forecast.

GET /v1/state-intel State market signal + risk index
ParameterTypeDescription
staterequired2-letter state abbreviation. e.g. TX
const res = await fetch(
  'https://propdata-api-worker.sales-fd3.workers.dev/v1/state-intel?state=TX',
  { headers: { 'x-api-key': 'YOUR_KEY' } }
);
const d = await res.json();
d.signal;              // "BUY"
d.market.friction_score;// 28
d.market.grade;        // "A"
d.top_metros;          // [{name, zhvi, forecast_12m}]

/v1/neighborhood

Census ACS neighborhood profile by ZIP or city/state. Returns population, median income, vacancy rate, poverty rate, college degree %, and median gross rent.

GET /v1/neighborhood Census ACS neighborhood profile
ParameterTypeDescription
zipoptional5-digit ZIP
cityoptionalCity name. Use with state.
stateoptional2-letter state
limitoptionalMax results. Default 20, max 50.
One of zip or city + state is required.

/v1/tract-intelligence

The live Builder+ incentive layer. Resolve an 11-digit Census tract and return tract-true Opportunity Zone 2.0 screening, NMTC/QCT eligibility, RUCA context, assisted housing, LIHTC, jobs, FHA history, and a curated official 2026 Census Planning Database profile. OZ 2.0 eligibility is screening evidence—not state nomination or final Treasury designation.

GET /v1/tract-intelligence Tract incentives + community context · Builder+
ParameterTypeDescription
geoidoptionalExact 11-digit 2020 Census tract GEOID
addressoptionalProperty address resolved through the existing geography contract
lat / lngoptionalCoordinate pair resolved to the containing tract
county_fips / parceloptionalExisting parcel identity resolved to its tract
includeoptionalsurvey_operations adds Census field-operations measures
LIVE · Builder+ · dataset 2026-08. Starter credentials receive HTTP 403 with BUILDER_TIER_REQUIRED. The verified production record is tract 36061007600.
Supply one resolution path: geoid, address, lat + lng, or county_fips + parcel. Census Low Response Score is a field-operations measure—not an underwriting, credit, or investment score.
const res = await fetch(
  'https://propdata-api-worker.sales-fd3.workers.dev/v1/tract-intelligence?geoid=36061007600',
  { headers: { 'x-api-key': 'YOUR_KEY' } }
);
const { data } = await res.json();
data.geoid;                                             // "36061007600"
data.coverage.status;                                   // "available"
data.provenance.source_vintage;                          // "2026-08"
data.opportunity_zones.oz_2_0.eligible_for_nomination; // boolean screening result
Source-aware by design. The API preserves the IRS/workbook reconciliation in provenance and keeps OZ 1.0, OZ 2.0 eligibility, rurality, and final designation as distinct concepts.

/v1/block-group-intelligence

The live Builder+ precision layer. Resolve a 12-digit Census block group and return hyper-local population, age, race and ethnicity, language, poverty, education, digital access, household, housing, tenure, and exact 2020 Census benchmarks from the official 2026 Census Planning Database.

GET /v1/block-group-intelligence Block-group neighborhood precision · Builder+
ParameterTypeDescription
geoidoptionalExact 12-digit 2020 Census block-group GEOID
addressoptionalProperty address resolved through the existing geography contract
lat / lngoptionalCoordinate pair resolved to the containing block group
county_fips / parceloptionalExisting parcel identity resolved to its block group
includeoptionalsurvey_operations adds Census field-operations measures
LIVE · Builder+ · dataset 2026-08. Starter credentials receive HTTP 403 with BUILDER_TIER_REQUIRED. The verified production record is block group 360610076001.
Supply one resolution path: geoid, address, lat + lng, or county_fips + parcel. Estimates retain published margins of error; unavailable values remain null.
const res = await fetch(
  'https://propdata-api-worker.sales-fd3.workers.dev/v1/block-group-intelligence?geoid=360610076001',
  { headers: { 'x-api-key': 'YOUR_KEY' } }
);
const { data } = await res.json();
data.geoid;                                             // "360610076001"
data.tract_geoid;                                       // "36061007600"
data.coverage.status;                                   // "available"
data.community_profile.population.total;           // estimate + margin of error
Precision without false certainty. Every curated ACS estimate is paired with its published margin of error. Exact Decennial benchmarks and ACS estimates stay visibly separate.

/v1/property

Country-aware property lookup with backward-compatible U.S. parcel routing plus live source-native identity for Great Britain, New Zealand, Australia, and Estonia. U.S. requests can return verified ownership, mailing, valuation, tax, sale, building, equity, occupancy, land, and risk context; GB identity responses preserve native identifiers, coordinates, linked identifiers, provenance, and coverage state.

GET /v1/property Country-aware property identity + enrichment
ParameterTypeDescription
countryoptionalCountry code. Omitted requests default to US for backward compatibility. Use GB for Great Britain exact UPRN lookup.
uprnoptionalGreat Britain Unique Property Reference Number. Use with country=GB.
addressoptionalStreet address. City/state/ZIP can be embedded. e.g. 123 Main St, Saint Paul MN 55104
zipoptional5-digit ZIP - returns parcels in that ZIP
stateoptional2-letter state
parceloptionalParcel ID / APN. Prefix with FIPS: 27053-123456
county_fipsoptional5-digit county FIPS code
enrichoptionalSet to full for comps, rent, listings, tract incentives, block-group Community Intelligence, and EPA FRS facility proximity when a verified coordinate is available (Builder+)
include_geometryoptionalSet to 1 to attach GeoJSON boundary (parcel ID lookups only)
limitoptionalMax results. Default 10, max 25.
const res = await fetch(
  'https://propdata-api-worker.sales-fd3.workers.dev/v1/property?address=123+Main+St&zip=55104&state=MN',
  { headers: { 'x-api-key': 'YOUR_KEY' } }
);
const { properties } = await res.json();
const p = properties[0];
p.owner_name;              // "SMITH JAMES"
p.market_value;            // 389000
p.equity.estimated_equity; // 187000
p.flags.is_absentee_owner; // false
p.enrichment_status;       // "complete" | "live_enriched" | "queued"
import requests

r = requests.get(
  'https://propdata-api-worker.sales-fd3.workers.dev/v1/property',
  params={'zip': '55104', 'state': 'MN', 'limit': '25'},
  headers={'x-api-key': 'YOUR_KEY'}
)
props = r.json()['properties']
for p in props:
  print(p['owner_name'], p['market_value'])
curl "https://propdata-api-worker.sales-fd3.workers.dev/v1/property?zip=55104&state=MN" \
  -H "x-api-key: YOUR_KEY"

# Great Britain exact identity
curl "https://propdata-api-worker.sales-fd3.workers.dev/v1/property?country=GB&uprn=1" \   -H "x-api-key: YOUR_KEY"

Community + EPA FRS in Full Enrich

enrich=full is live for Builder tier and above. It preserves the existing property envelope and adds tract, block-group, and national EPA FRS proximity contracts side by side. The root reports geography resolution; each record in the existing results, properties, or property container carries resolved GEOIDs, Community Intelligence, EPA screening context, and independent source-aware coverage states.

Resolver priority. Full Enrich first uses valid GEOIDs already present on the property record, then validated NYC MapPLUTO 2020 BCT fields where applicable, then the U.S. Census geocoder using valid coordinates before an address fallback. The Community lookup itself stays inside the property Worker and does not call the public API back over HTTP.

Abridged verified Empire State Building response:

{
  "ok": true,
  "community_intelligence": {
    "dataset_version": "2026-08",
    "status": "available",
    "census_tract_geoid": "36061007600",
    "census_block_group_geoid": "360610076001",
    "geography_source": "nyc_mappluto_2020"
  },
  "properties": [{
    "parcel_id": "1008350041",
    "county_fips": "36061",
    "census_tract_geoid": "36061007600",
    "tract_intelligence": {
      "geoid": "36061007600",
      "coverage": { "status": "available" }
    },
    "census_block_group_geoid": "360610076001",
    "block_group_intelligence": {
      "geoid": "360610076001",
      "coverage": { "status": "available" }
    },
    "tract_intelligence_coverage": { "status": "available" },
    "block_group_intelligence_coverage": { "status": "available" },
    "epa_frs_proximity_coverage": {
      "status": "available",
      "coordinate_source": "verified_parcel_centroid",
      "source_release_data_as_of": "2026-08-01"
    },
    "epa_frs_proximity": {
      "status": "matched",
      "records_returned": 5,
      "nearest_distance_miles": 0.022748
    }
  }]
}
Missing is a result; the property response still succeeds. If geography, a verified coordinate, or published data is unavailable, the corresponding intelligence object remains null or explicitly unavailable and its coverage object explains why. If Community or EPA decoration itself throws, the original property payload is returned unchanged. The API never substitutes a broader geography as block-group or tract truth, and it never turns an unlocated EPA record into a favorable universal negative.

Enrichment status values

StatusMeaning
completeAll fields present in production DB
live_enrichedA configured official source returned a confidence-qualified live result
review_neededCandidate found but confidence below 85 - preserved for review
queuedEnrichment pipeline running - retry in 10 seconds
blockedRate limit hit or repeated failures - paused for 7 days
When enrichment_status is queued, the response includes retry_after_seconds: 10. Poll once and the cache usually has the result.

/v1/property/by-location

Coordinate-to-parcel resolution for map clicks, field applications, and cases where the geocoded address differs from the legal or assessor situs address. The route resolves jurisdiction, checks configured parcel geometry, performs point-in-polygon matching, and returns the containing parcel with match evidence.

GET /v1/property/by-location Latitude/longitude to verified parcel
ParameterTypeDescription
latrequiredLatitude in decimal degrees
lngrequiredLongitude in decimal degrees
include_geometryoptionalSet to 1 to include the matched GeoJSON boundary
curl "https://propdata-api-worker.sales-fd3.workers.dev/v1/property/by-location?lat=25.8990225371643&lng=-80.237689454084&include_geometry=1" \
  -H "x-api-key: YOUR_KEY"

Successful matches identify match_level: point_in_polygon, coverage_status: matched, jurisdiction/FIPS, parcel ID, source, confidence, and geometry availability.

Coverage is explicit. The nationwide parcel index does not imply nationwide point-in-polygon geometry. Coordinate matching is returned only for verified and configured county geometry sources; unsupported areas return a clear coverage result instead of a forced parcel match.
GET /v1/property/by-location/coverage-check Preflight coordinate coverage

Use the coverage-check route with lat and lng before high-volume coordinate workflows. It reports resolved jurisdiction and whether a verified parcel geometry source is configured without forcing a property match.

/v1/property/delta

Property change feed. Returns all parcels updated in the county_assessor database since the provided ISO 8601 timestamp. Cursor pagination supported for large result sets.

GET /v1/property/delta Parcels updated since timestamp
ParameterTypeDescription
sincerequiredISO 8601 timestamp. e.g. 2026-06-01T00:00:00Z
zipoptionalFilter by ZIP
stateoptionalFilter by state
cursoroptionalPagination cursor from previous next_cursor
limitoptionalMax results. Default 100, max 1000.
Nationwide queries (no zip or state) require Builder tier or above.
const res = await fetch(
  'https://propdata-api-worker.sales-fd3.workers.dev/v1/property/delta?since=2026-06-01T00:00:00Z&state=MN',
  { headers: { 'x-api-key': 'YOUR_KEY' } }
);
const { properties, has_more, next_cursor } = await res.json();
// Use next_cursor in subsequent calls to paginate

/v1/comps

U.S. comparable sales from the 166M+ parcel database. Returns up to 25 comps with sale price, sale date, beds, baths, sqft, year built, and address. Filter by bedroom count.

GET /v1/comps Comparable sales engine
ParameterTypeDescription
ziprequired5-digit ZIP
stateoptional2-letter state
bedsoptionalFilter by bedroom count
limitoptionalMax results. Default 10, max 25.

/v1/geocode

Converts a US address to lat/lng + ZIP, city, state, county, county FIPS, and state FIPS. Useful for enriching leads before passing to /v1/property or /v1/market.

GET /v1/geocode Address -> coordinates + FIPS
ParameterTypeDescription
addressrequiredFull or partial US address
zipoptional5-digit ZIP to assist resolution

/v1/parcel-geometry

GeoJSON parcel boundaries from county ArcGIS sources. Returns polygon geometry, centroid lat/lng, and bounding box. Successful lookups are cached. Returns geometry_available: false when the county source is not yet configured.

GET /v1/parcel-geometry GeoJSON parcel boundary (beta)
ParameterTypeDescription
parcelrequiredParcel ID or APN. Aliases: parcel_id, apn
county_fipsrequired5-digit county FIPS. Alias: fips
const res = await fetch(
  'https://propdata-api-worker.sales-fd3.workers.dev/v1/parcel-geometry?county_fips=27053&parcel=1234567890',
  { headers: { 'x-api-key': 'YOUR_KEY' } }
);
const d = await res.json();
d.geometry_available;  // true | false
d.geometry;            // GeoJSON Feature object
d.centroid;            // { lat: 44.95, lon: -93.09 }
d.bbox;                // [minLon, minLat, maxLon, maxLat]
Beta: County coverage expands as ArcGIS sources are verified and registered. Also available via /v1/property?parcel=&include_geometry=1.

/v1/skip-trace

Owner phone numbers (up to 3), email, equity estimate, loan balance, ARV, vacancy flag, and owner-occupancy flag. Requires Builder tier or above.

GET /v1/skip-trace Owner phones + email (Builder+)
ParameterTypeDescription
addressoptionalStreet address
zipoptional5-digit ZIP - returns all records in ZIP
stateoptional2-letter state
Requires Builder plan or above. Starter tier receives HTTP 403.

/v1/preforeclosure

Active pre-foreclosure leads with auction dates, default amounts, lender, trustee, case numbers, assessed value, and absentee owner flag.

GET /v1/preforeclosure Pre-foreclosure leads
ParameterTypeDescription
zipoptional5-digit ZIP
stateoptional2-letter state
limitoptionalMax results. Default 20, max 100.
One of zip or state is required.

/v1/preforeclosure/delta

Pre-foreclosure change feed. Returns leads updated since the provided ISO 8601 timestamp. Filter by status. Cursor pagination supported.

GET /v1/preforeclosure/delta Pre-foreclosure change feed
ParameterTypeDescription
sincerequiredISO 8601 timestamp. e.g. 2026-06-01T00:00:00Z
zipoptionalFilter by ZIP
stateoptionalFilter by state
statusoptionalFilter by filing status. e.g. new
cursoroptionalPagination cursor from previous response
limitoptionalMax results. Default 100, max 1000.
Nationwide queries (no zip or state) require Builder tier or above.

/v1/auth/usage

GET /v1/auth/usage Authenticated account usage

Returns the authenticated plan window, used requests, allowance, remaining requests, reset metadata, tier, and—when available—per-endpoint activity. The workspace normalizes this contract for the overview quota meter.

curl https://propdata-api-worker.sales-fd3.workers.dev/v1/auth/usage \
  -H "x-api-key: YOUR_KEY"

// {
// "tier": "builder",
// "used": 14210,
// "limit": 50000,
// "remaining": 35790,
// "reset_at": "2026-09-01T00:00:00Z"
// }
Legacy compatibility: older accounts may still expose /v1/usage. New integrations should use /v1/auth/usage; the API Workspace preserves a legacy fallback during migration.

/v1/health

GET /v1/health API + source pipeline status

Returns API status, configured data-layer health, active feature flags, and plan mapping. No authentication required.

curl https://propdata-api-worker.sales-fd3.workers.dev/v1/health

/v1/stats

GET /v1/stats Live parcel count

Returns live parcel count in the county_assessor database, formatted label, and last updated timestamp. Cached for 5 minutes. No authentication required.

curl https://propdata-api-worker.sales-fd3.workers.dev/v1/stats

// { "count": 166000000, "label": "166.0M+", "updated_at": "..." }

/v1/changelog

GET /v1/changelog Versioned API updates

Returns versioned changelog of all API updates with version, title, type, status, date, summary, details, and affected endpoints. No authentication required.

curl https://propdata-api-worker.sales-fd3.workers.dev/v1/changelog

Error Codes

CodeStatusMeaning
400Bad RequestMissing required parameter or invalid value
401UnauthorizedMissing or invalid API key
403ForbiddenEndpoint requires a higher tier (Community Intelligence and skip trace require Builder+)
404Not FoundEndpoint does not exist
409ConflictThe requested mutation conflicts with current account or resource state
429Too Many RequestsAn active account, key, endpoint, source, or time-window limit was exceeded
500Server ErrorInternal error - contact support if persistent
502/503Upstream unavailableA required official or third-party source could not complete the request

Errors return JSON with a stable message and status where available: {"error": "message", "status": 400}. Treat additional fields as diagnostic context, not as a replacement for the HTTP status.

Data Sources

PropData combines public, licensed, and proprietary source families behind a country-aware, source-aware API. Country adapters preserve native identifiers and provenance; most datasets are normalized, validated, and cached before serving, while selected enrichment routes can query verified public sources when production coverage is missing.

  • Ordnance Survey Open UPRN - Great Britain property identity and coordinate foundation for exact UPRN lookup.
  • OS linked identifiers - UPRN-to-USRN and UPRN-to-TOID relationships normalized as linked property identifiers.
  • HM Land Registry Price Paid Data - Great Britain transaction records loaded as a separate source layer; deterministic UPRN linkage remains explicit and is not fabricated.
  • HM Land Registry INSPIRE Index Polygons - England and Wales registered-freehold title-footprint geometry being ingested for spatial association and provenance; national production completion is tracked separately from exact UPRN identity.
  • Toitū Te Whenua LINZ - New Zealand parcel, address, title, and association sources in the country-aware production ingestion framework.
  • Zillow ZORI - Zillow Observed Rent Index. Monthly median asking rent at ZIP, state, and metro level.
  • HUD Fair Market Rents - Annual bedroom-level rent benchmarks for every US county.
  • Realtor.com Research - Monthly ZIP/state/metro listing data: DOM, inventory, list price.
  • Redfin - Sale-to-list ratio, % above list, homes sold, months of supply.
  • US Census ACS - 5-year American Community Survey. Vacancy rate, renter %, median income.
  • Official Community Intelligence releases - U.S. Census Bureau 2026 Planning Database tract and block-group files (ACS 2020-2024 estimates plus exact 2020 Census benchmarks), joined to federal Opportunity Zone, HUD, NMTC/QCT, RUCA, assisted-housing, LIHTC, jobs, and FHA tract evidence. The API keeps OZ eligibility, nomination, and final designation distinct.
  • U.S. EPA Facility Registry Service - Versioned national facility snapshot used for verified-coordinate proximity screening, distance-ranked matches, program associations, provenance, coverage, and limitations. Proximity is not proof of contamination, liability, or current regulatory status.
  • FHFA HPI - Federal Housing Finance Agency quarterly Home Price Index. State and metro appreciation.
  • FRED / St. Louis Fed - Live 30yr mortgage rate, shelter CPI YoY, national vacancy rate, housing starts.
  • Independent county assessor pipeline - 166M+ indexed parcel records normalized from public assessor and GIS systems without an ATTOM or CoreLogic dependency. Bexar County production metadata reflects the current 2025 roll; the exact 730,721-row official 2026 roll is validated but remains unpublished until its release gate completes.
  • Verified county GIS registry - Source-of-truth enrichment and point-in-polygon routing through configured ArcGIS FeatureServer and MapServer layers.
  • FEMA flood + hazard data - Flood zone per property, Natural Hazard Risk across 18 hazard types.
  • Seller friction index - Deterministic state-level friction and market grade score.
  • State risk index - Property crime, vacant risk score, owner and rental vacancy by state.
  • Zillow Metro Stats - ZHVI, YoY, 12-month forecast, inventory by metro.
  • Pre-foreclosure filing data - Active filings with auction dates, lender, trustee, case numbers.
  • Parcel geometry sources - County ArcGIS FeatureServer/MapServer polygon boundaries.
  • ZIP/county crosswalk - FIPS resolution for ZIP-to-county lookups used in enrichment routing.
Confidence first. Property enrichment and geometry workflows use verified public county assessor and GIS evidence. Responses expose source, coverage, confidence, and enrichment state; unverified fields remain blank and unsupported geometry returns an explicit coverage result.
Coverage has layers. PropData maintains a 50-state parcel index, while assessor attribute depth, live enrichment, and parcel geometry availability vary by jurisdiction. National federal snapshots such as EPA FRS report coverage independently from county assessor and GIS depth. Use response-level coverage, provenance, release dates, and the coordinate coverage-check route for workflow decisions.
High-stakes and regulated use: PropData is not offered as a consumer reporting agency or consumer report. Do not use outputs for FCRA-regulated eligibility decisions or discriminatory housing activity without a separately signed compliant agreement and workflow. Review the PropData Legal Center before production use.
AI-Ready Infrastructure

Property intelligence built for applications, maps, and AI agents.

PropData combines source-backed property records, tract incentives, block-group community context, market intelligence, parcel geometry, coordinate resolution, ranked market discovery, and OAuth-protected MCP access in one independent infrastructure layer.

Coordinate-to-parcel resolution

Send latitude and longitude to /v1/property/by-location. PropData resolves jurisdiction and uses verified point-in-polygon evidence where county geometry is configured.

Two-level community context

Use tract intelligence for incentive programs and block-group intelligence for hyper-local demographic, socioeconomic, digital-access, household, and housing signals.

ChatGPT and Claude access

The OAuth-protected MCP connector lets supported AI assistants use live PropData tools through each subscriber's own API entitlement.

Market ranking tools

Use balanced, rental, cash-flow, and premium ranking modes with scope validation, methodology, confidence, and coverage metadata.

Verified enrichment lane

Authorized production workflows can turn supported misses into official-source evidence, confidence-gated records, and reusable cached results.

No forced answers

Unsupported geometry, low-confidence candidates, and missing assessor fields remain clearly labeled instead of being presented as complete data.

REST
GET /v1/property/by-location?lat=25.8990225371643&lng=-80.237689454084&include_geometry=1

MCP
https://propdata-mcp.sales-fd3.workers.dev/mcp

Core tools include property, parcel, market, rent, comps, geometry,
community intelligence, and coordinate lookup. Connector capabilities are discovered through
the active OAuth-authorized manifest.
Honest coverage: U.S. parcel coverage spans all 50 states, while assessor depth and polygon geometry vary by county. Great Britain exact UPRN identity plus linked USRN/TOID identifiers are live; HMLR transaction-to-UPRN linkage and national INSPIRE title-footprint enrichment remain separate in-progress layers. New Zealand is live. The API reports these differences directly.
Copied