Published inside enrich=full from the private, versioned 2026-08-01 snapshot. Authenticated customer canary passed.
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.
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"
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.
/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.
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.
| Parameter | Type | Description |
|---|---|---|
| country | required | Set to GB. |
| uprn | required | Exact Great Britain Unique Property Reference Number. |
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.
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.| Parameter | Type | Description |
|---|---|---|
| address | required | Property address to resolve. |
| city | optional | City constraint. |
| state | recommended | Two-letter U.S. state code for reliable U.S. resolution. |
| zip | recommended | Constrains identity and attaches local market evidence. |
| current_value | optional | Caller-supplied current-value override. |
| capture_snapshot | optional | Persist the current state for later change detection. Endpoint default: false. |
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.
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.
→ 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.
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.
| Parameter | Type | Description |
|---|---|---|
| country | required | Set to EE. |
| parcel | recommended | National cadastral identifier, for example 29601:014:0290. |
| address | optional | Official ADS address text when resolving by address. |
ADR_ID, ADS_OID, and ADOB_ID where available rather than fabricating U.S.-style fields.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.
UPDATED AUGUST 26, 2026 · VERSION 2026.08 · PRODUCTION + PPIE CANDIDATE REFERENCECommunity 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.
36061007600Published record · coverage available
360610076001Published record · coverage available
36061 / 1008350041Both intelligence records attached
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"
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.null with explicit unavailable coverage when possible; if decoration itself fails, the original core response is returned unchanged.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.
"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
}
}
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.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.
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/countriesto 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.
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"
headers: { "x-api-key": process.env.PROPDATA_API_KEY }
});
const data = await response.json();
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()
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
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.
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.
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.
-H "x-api-key: $PROPDATA_API_KEY"
Send a clear key name. The new secret is shown once in the successful response; immediately store it in a secrets manager.
-H "Content-Type: application/json" \
-H "x-api-key: $PROPDATA_API_KEY" \
-d '{"name":"Production API"}'
Revocation is immediate. Confirm the target ID from the key inventory and rotate every dependent service before revoking a production credential.
-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.
| Plan | Req/hr | Req/min | Req/month | Monthly / annual |
|---|---|---|---|---|
| Starter | 500 | 60 | 10,000 | $79 / $799 |
| Builder | 500 | 120 | 50,000 | $199 / $1,999 |
| Scale | 1,500 | Unlimited | 250,000 | $499 / $4,999 |
| Enterprise | Custom | Custom | Custom | $1,499 / $14,999 |
/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./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 pattern | Usage | How it is counted |
|---|---|---|
| Single endpoint request | 1 unit | One successful request to one metered PropData endpoint. |
/v1/property?enrich=full | 1 unit total | The complete enriched response counts once, regardless of field or layer count. |
| Cached response | 1 unit | A repeated lookup served from cache is still one customer-requested API operation. |
| Multi-step workflow | 1 unit per request | A coordinate lookup followed by a Full Enrich property lookup is two external requests and therefore two units. |
| Internal source fan-out | 0 additional units | Census, FEMA, HUD, EPA FRS, county GIS, database, or other internal lookups performed inside the same request are not billed separately. |
| Batch operation | 1 unit per input record | A supported batch containing 100 submitted properties consumes 100 request units. |
| Account and system checks | 0 units | /v1/auth/usage, health, stats, changelog, documentation, and CORS preflight requests are not metered as data operations. |
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
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
/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.
| Parameter | Type | Description |
|---|---|---|
| zip | optional | 5-digit ZIP. e.g. 55104 |
| state | optional | 2-letter state. e.g. MN |
| metro | optional | Metro name. e.g. Minneapolis |
'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
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'])
-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.
| Parameter | Type | Description |
|---|---|---|
| mode | optional | Ranking profile: balanced, rental, cash_flow, or premium |
| state | optional | Restrict the ranking to a 2-letter state |
| limit | optional | Maximum ranked markets to return |
-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.
| Parameter | Type | Description |
|---|---|---|
| zip | optional | 5-digit ZIP |
| state | optional | 2-letter state |
| metro | optional | Metro 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 ->
| Parameter | Type | Description |
|---|---|---|
| zip | optional | 5-digit ZIP (required if no state) |
| state | optional | 2-letter state |
| beds | optional | 0=Studio, 1-4. Default: 2 |
'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
| Source | Weight | Why |
|---|---|---|
| Zillow ZORI | 40% | Current asking rent - strongest market signal |
| Census ACS | 25% | Actual renter-paid rent - affordability anchor |
| HUD FMR | 20% | Government bedroom benchmark |
| Assessor cap rate | 15% | 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.
| Parameter | Type | Description |
|---|---|---|
| zip | optional | 5-digit ZIP |
| state | optional | 2-letter state |
| metro | optional | Metro 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.
| Parameter | Type | Description |
|---|---|---|
| zip | required | 5-digit ZIP. e.g. 55104 |
'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
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.
| Parameter | Type | Description |
|---|---|---|
| state | required | 2-letter state abbreviation. e.g. TX |
'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.
| Parameter | Type | Description |
|---|---|---|
| zip | optional | 5-digit ZIP |
| city | optional | City name. Use with state. |
| state | optional | 2-letter state |
| limit | optional | Max results. Default 20, max 50. |
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.
| Parameter | Type | Description |
|---|---|---|
| geoid | optional | Exact 11-digit 2020 Census tract GEOID |
| address | optional | Property address resolved through the existing geography contract |
| lat / lng | optional | Coordinate pair resolved to the containing tract |
| county_fips / parcel | optional | Existing parcel identity resolved to its tract |
| include | optional | survey_operations adds Census field-operations measures |
BUILDER_TIER_REQUIRED. The verified production record is tract 36061007600.geoid, address, lat + lng, or county_fips + parcel. Census Low Response Score is a field-operations measure—not an underwriting, credit, or investment score.'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
/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.
| Parameter | Type | Description |
|---|---|---|
| geoid | optional | Exact 12-digit 2020 Census block-group GEOID |
| address | optional | Property address resolved through the existing geography contract |
| lat / lng | optional | Coordinate pair resolved to the containing block group |
| county_fips / parcel | optional | Existing parcel identity resolved to its block group |
| include | optional | survey_operations adds Census field-operations measures |
BUILDER_TIER_REQUIRED. The verified production record is block group 360610076001.geoid, address, lat + lng, or county_fips + parcel. Estimates retain published margins of error; unavailable values remain null.'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
/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.
| Parameter | Type | Description |
|---|---|---|
| country | optional | Country code. Omitted requests default to US for backward compatibility. Use GB for Great Britain exact UPRN lookup. |
| uprn | optional | Great Britain Unique Property Reference Number. Use with country=GB. |
| address | optional | Street address. City/state/ZIP can be embedded. e.g. 123 Main St, Saint Paul MN 55104 |
| zip | optional | 5-digit ZIP - returns parcels in that ZIP |
| state | optional | 2-letter state |
| parcel | optional | Parcel ID / APN. Prefix with FIPS: 27053-123456 |
| county_fips | optional | 5-digit county FIPS code |
| enrich | optional | Set 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_geometry | optional | Set to 1 to attach GeoJSON boundary (parcel ID lookups only) |
| limit | optional | Max results. Default 10, max 25. |
'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"
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'])
-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.
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
}
}]
}
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
| Status | Meaning |
|---|---|
| complete | All fields present in production DB |
| live_enriched | A configured official source returned a confidence-qualified live result |
| review_needed | Candidate found but confidence below 85 - preserved for review |
| queued | Enrichment pipeline running - retry in 10 seconds |
| blocked | Rate limit hit or repeated failures - paused for 7 days |
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.
| Parameter | Type | Description |
|---|---|---|
| lat | required | Latitude in decimal degrees |
| lng | required | Longitude in decimal degrees |
| include_geometry | optional | Set to 1 to include the matched GeoJSON boundary |
-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.
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.
| Parameter | Type | Description |
|---|---|---|
| since | required | ISO 8601 timestamp. e.g. 2026-06-01T00:00:00Z |
| zip | optional | Filter by ZIP |
| state | optional | Filter by state |
| cursor | optional | Pagination cursor from previous next_cursor |
| limit | optional | Max results. Default 100, max 1000. |
'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.
| Parameter | Type | Description |
|---|---|---|
| zip | required | 5-digit ZIP |
| state | optional | 2-letter state |
| beds | optional | Filter by bedroom count |
| limit | optional | Max 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.
| Parameter | Type | Description |
|---|---|---|
| address | required | Full or partial US address |
| zip | optional | 5-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.
| Parameter | Type | Description |
|---|---|---|
| parcel | required | Parcel ID or APN. Aliases: parcel_id, apn |
| county_fips | required | 5-digit county FIPS. Alias: fips |
'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]
/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.
| Parameter | Type | Description |
|---|---|---|
| address | optional | Street address |
| zip | optional | 5-digit ZIP - returns all records in ZIP |
| state | optional | 2-letter state |
/v1/preforeclosure
Active pre-foreclosure leads with auction dates, default amounts, lender, trustee, case numbers, assessed value, and absentee owner flag.
| Parameter | Type | Description |
|---|---|---|
| zip | optional | 5-digit ZIP |
| state | optional | 2-letter state |
| limit | optional | Max results. Default 20, max 100. |
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.
| Parameter | Type | Description |
|---|---|---|
| since | required | ISO 8601 timestamp. e.g. 2026-06-01T00:00:00Z |
| zip | optional | Filter by ZIP |
| state | optional | Filter by state |
| status | optional | Filter by filing status. e.g. new |
| cursor | optional | Pagination cursor from previous response |
| limit | optional | Max results. Default 100, max 1000. |
/v1/auth/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.
-H "x-api-key: YOUR_KEY"
// {
// "tier": "builder",
// "used": 14210,
// "limit": 50000,
// "remaining": 35790,
// "reset_at": "2026-09-01T00:00:00Z"
// }
/v1/usage. New integrations should use /v1/auth/usage; the API Workspace preserves a legacy fallback during migration./v1/health
Returns API status, configured data-layer health, active feature flags, and plan mapping. No authentication required.
/v1/stats
Returns live parcel count in the county_assessor database, formatted label, and last updated timestamp. Cached for 5 minutes. No authentication required.
// { "count": 166000000, "label": "166.0M+", "updated_at": "..." }
/v1/changelog
Returns versioned changelog of all API updates with version, title, type, status, date, summary, details, and affected endpoints. No authentication required.
Error Codes
| Code | Status | Meaning |
|---|---|---|
| 400 | Bad Request | Missing required parameter or invalid value |
| 401 | Unauthorized | Missing or invalid API key |
| 403 | Forbidden | Endpoint requires a higher tier (Community Intelligence and skip trace require Builder+) |
| 404 | Not Found | Endpoint does not exist |
| 409 | Conflict | The requested mutation conflicts with current account or resource state |
| 429 | Too Many Requests | An active account, key, endpoint, source, or time-window limit was exceeded |
| 500 | Server Error | Internal error - contact support if persistent |
| 502/503 | Upstream unavailable | A 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.
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.