Overview
PropData is a real estate market intelligence API that aggregates 16 data sources into a single REST interface. One call to /v1/market returns rent trends, market velocity, affordability metrics, macroeconomic data, and AI-computed investor signals. One call to /v1/property returns owner name, assessed value, sale history, and equity estimate from the 166M+ parcel pipeline â€" with the Miss Flywheel self-enriching pipeline firing on every miss.
What you get in one call
- Market intelligence â€" Zillow ZORI rent trends, HUD Fair Market Rents by bedroom, Realtor.com DOM + inventory, Redfin sale-to-list ratio, FHFA home price appreciation, Census ACS affordability, FRED live mortgage rates, AI investor signals
- Property + parcel â€" 166M+ county assessor records (own pipeline), owner name, mailing address, assessed/market/land value, annual tax, sale history, beds/baths/sqft, equity estimate, absentee owner flag, vacant land flag, FEMA flood zone
- Intelligence â€" ZIP-level AI investment summary (Claude-powered BUY/HOLD/PASS), state friction + risk index, neighborhood Census ACS profile
- 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
The Miss Flywheel
When /v1/property misses the production parcel database, PropData fires a live enrichment pipeline: government ArcGIS source query â†' field-level confidence scoring (≥85 required for production write) â†' Supabase + Cloudflare KV edge cache write. The repeat lookup returns in under one second. Coverage compounds with every search. No fabricated fields â€" owner name, beds, baths, sqft stay blank until source-verified from a government record.
Authentication
All endpoints except /v1/health, /v1/stats, and /v1/changelog require an API key. Pass it as a header or query parameter.
Header (recommended)
Query parameter
Rate Limits
Rate limits are enforced per API key per hour. Exceeding the limit returns HTTP 429.
| Plan | Req/hr | Req/min | Req/month | Price |
|---|---|---|---|---|
| Starter | 500 | 60 | 10,000 | $79/mo |
| Builder | 1,500 | 120 | 100,000 | $199/mo |
| Scale | Unlimited | Unlimited | 500,000 | $499/mo |
| Enterprise | Unlimited | Unlimited | Unlimited | $1,499/mo |
/v1/skip-trace) requires Builder tier or above. Nationwide delta queries without zip/state filter require Builder tier or above.Base URL
All endpoints are prefixed with /v1/. HTTPS only. The API runs on Cloudflare's global edge network â€" responses served from the nearest data center, typically under 50ms.
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/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 with Claude-powered AI narrative. Returns AVM value, gross yield, YoY change, vacancy rate, FEMA flood zone, walkability score, crime index, school score, opportunity zone flag, USDA rural eligibility, and a 3-sentence BUY/HOLD/PASS investment summary.
| 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.is_opportunity_zone; // false
d.ai_analysis; // "HOLD. This 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/property
County assessor parcel lookup with live self-enriching Miss Flywheel pipeline. Returns owner name, mailing address, market/assessed/land/improvement value, annual tax, last sale price/date, beds/baths/sqft/year built, equity estimate, absentee owner flag, vacant land flag, FEMA flood zone.
| Parameter | Type | Description |
|---|---|---|
| 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 estimate, and listing context (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"
Enrichment status values
| Status | Meaning |
|---|---|
| complete | All fields present in production DB |
| live_enriched | Miss Flywheel fired and returned a production-safe 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/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
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/usage
Returns requests this hour, hourly limit for your tier, and reset timestamp.
-H "x-api-key: YOUR_KEY"
// { "tier": "pro", "requests_this_hour": 47, "limit_per_hour": 500, "reset_at": "..." }
/v1/health
Returns uptime status for all 16 data sources, active feature flags, and RapidAPI plan map. 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 (e.g. skip-trace requires Builder+) |
| 404 | Not Found | Endpoint does not exist |
| 429 | Too Many Requests | Rate limit exceeded for your tier. Resets each hour. |
| 500 | Server Error | Internal error â€" contact support if persistent |
All errors return JSON: {"error": "message", "status": 400}
Data Sources
PropData aggregates 16 live sources. Data is ingested and cached â€" endpoints do not make real-time upstream calls on every request.
- 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.
- 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.
- Own county assessor pipeline â€" 166M+ parcels ingested directly from government ArcGIS layers. No licensing from ATTOM or CoreLogic.
- ArcGIS county GIS â€" Live source-of-truth enrichment for the Miss Flywheel pipeline. Hennepin MN, Miami-Dade FL, Madison AL confirmed + expanding.
- FEMA flood + hazard data â€" Flood zone per property, Natural Hazard Risk across 18 hazard types.
- Seller friction index â€" Proprietary 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.