Sources Pricing Docs Real Estate API Estimate Engine Use Cases vs RentCast vs Mashvisor Get free key →
PROPDATA API Reference v1 BASE: propdata-api-worker.sales-fd3.workers.dev

Overview

PropData is a real estate market intelligence API that aggregates 9 data sources into a single REST endpoint. One call returns rent trends, market velocity, affordability metrics, macroeconomic data, and AI-computed investor signals for any ZIP code, state, or metro in the US.

Free tier available. 50 requests/hour, no credit card required. Get your API key →

What you get in one call

  • Rent data — Zillow ZORI median asking rent, YoY/MoM trends, HUD Fair Market Rents by bedroom (Studio–4BR), Census median gross rent
  • Market data — Realtor.com days on market, active listings, price/sqft, new listings; Redfin sale-to-list ratio, % above list, homes sold
  • Affordability — Census ACS vacancy rate, renter %, median household income, rent-to-income ratio
  • Macro data — FRED live 30yr mortgage rate, shelter CPI, national vacancy, housing starts
  • Investor signals — 8 computed signals including gross yield, rent growth, market velocity, vacancy pressure

Authentication

All requests require an API key. Pass it as a header or query parameter.

Header (recommended)

x-api-key: YOUR_API_KEY

Query parameter

GET /v1/market?zip=55104&api_key=YOUR_API_KEY
Keep your key private. Don't expose it in client-side JavaScript. Use environment variables or a backend proxy for production apps.

Get your API key at propdata.proptechusa.ai. Free tier activates instantly — no credit card required.

Rate Limits

Rate limits are enforced per API key per hour. When a limit is exceeded the API returns HTTP 429.

TierRequests/hourRequests/minPrice
Free5010$0 — no credit card
Pro50060$49/mo flat
InternalUnlimitedUnlimited
429 response body: {"error":"Rate limit exceeded. Tier: free. Upgrade at propdata.proptechusa.ai"}

Base URL

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

All endpoints are prefixed with /v1/. Requests must use HTTPS. The API runs on Cloudflare's global edge network — responses are served from the nearest data center, typically under 50ms.

CORS enabled. Cross-origin requests are allowed from any domain. Use the header-based auth in production.

/v1/market

The primary endpoint. Returns a full market profile combining all 9 data sources for a given location.

GET /v1/market Full market profile

Pass one of zip, state, or metro. Returns rent data, market velocity, affordability, macro indicators, investor signals, and 12-month history.

ParameterTypeDescription
zipoptional5-digit US ZIP code. e.g. 55104
stateoptional2-letter state abbreviation. e.g. MN
metrooptionalMetro area 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 data = await res.json();
console.log(data.snapshot.rent.median_asking_rent); // $1,534
import requests

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

/v1/rent

Rent-focused endpoint. Returns ZORI asking rent trends + full HUD Fair Market Rents by bedroom count. Faster and lighter than /v1/market if you only need rent data.

GET /v1/rent Rent trends + HUD FMR
ParameterTypeDescription
zipoptional5-digit ZIP code
stateoptional2-letter state code
metrooptionalMetro area name
const res = await fetch(
  'https://propdata-api-worker.sales-fd3.workers.dev/v1/rent?zip=55104',
  { headers: { 'x-api-key': 'YOUR_KEY' } }
);
// Returns: median_asking_rent, fmr_1br/2br/3br/4br, yoy_pct, history[]

Response includes

  • Zillow ZORI median asking rent + YoY + MoM + 12-month trend
  • HUD FMR: Studio, 1BR, 2BR, 3BR, 4BR for the county
  • Census ACS median gross rent

/v1/estimate

Proprietary rent estimate engine. Returns a 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 code
stateoptional2-letter state code
bedsoptionalBedroom count: 0=Studio, 14. Default: 0
const res = await fetch(
  'https://propdata-api-worker.sales-fd3.workers.dev/v1/estimate?zip=55104&beds=2',
  { headers: { 'x-api-key': 'YOUR_KEY' } }
);

// Returns:
// estimate.monthly_low → $1,482
// estimate.monthly_mid → $1,609 (the number)
// estimate.monthly_high → $1,738
// estimate.confidence_pct → 100
// methodology.data_points → [{source, weight_pct, adjusted_rent}]

Model weights

SourceWeightWhy
Zillow ZORI40%Current asking rent — strongest market signal
Census ACS25%Actual renter-paid rent — affordability anchor
HUD FMR20%Government bedroom benchmark — defense-grade
Redfin cap rate15%Investor sanity check — implied from sale price

/v1/property

County assessor lookup. Returns owner name, mailing address, assessed value, last sale price, property characteristics, and tax status. Powered by our own 56M+ parcel database built directly from public ArcGIS layers across 17+ states — no third-party licensing.

GET /v1/property Owner + valuation + sale history

Query by address, ZIP code, owner name, or parcel ID. Returns up to 50 results per call. Requires Pro or Property Pro tier.

ParameterTypeDescription
addressoptionalStreet address. e.g. 337 NW 86th St Seattle WA
zipoptional5-digit ZIP — returns all parcels in that ZIP
owneroptionalOwner name search. e.g. BARNES JAMES
parceloptionalExact parcel ID / APN
limitoptionalResults per page. Default 10, max 50
Coverage: 17 states live — FL, CA, TX, WA, IN, WI, NC, CO, MD, TN, IL, NV, AZ, VA, NJ, PA, MI, MN. NY ingesting. Expanding weekly.
const res = await fetch(
  'https://propdata-api-worker.sales-fd3.workers.dev/v1/property?address=337+NW+86th+St+Seattle+WA',
  { headers: { 'x-api-key': 'YOUR_KEY' } }
);
const { properties } = await res.json();
const p = properties[0];
console.log(p.owner.name);         // "BARNES JAMES EDWARD"
console.log(p.valuation.market_value); // 1009000
console.log(p.sale.last_sale_date);   // "2021-03-15"
import requests

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

Response shape

{ "properties": [{
  "parcel_id": "3340902855",
  "address": { "street": "337 NW 86TH ST", "city": "SEATTLE", "zip": "98117" },
  "owner": { "name": "BARNES JAMES EDWARD", "mailing_address": "337 NW 86TH ST" },
  "valuation": { "market_value": 1009000, "assessed_value": 987000, "land_value": 620000 },
  "sale": { "last_sale_price": 987000, "last_sale_date": "2021-03-15" },
  "characteristics": { "bedrooms": 4, "year_built": 1920 },
  "tax_status": "current", "state": "WA", "county_name": "KING"
}], "count": 1, "query": { "address": "337 NW 86th St Seattle WA" } }

/v1/geocode

Converts a US address or place name into coordinates (lat/lng), plus ZIP code, county, state, and FIPS codes. Useful for enriching leads and powering map-based workflows before passing to /v1/property or /v1/market.

GET /v1/geocode Address → coordinates + metadata
ParameterTypeDescription
addressrequiredFull or partial US address. e.g. 337 NW 86th St Seattle WA 98117
const res = await fetch(
  'https://propdata-api-worker.sales-fd3.workers.dev/v1/geocode?address=337+NW+86th+St+Seattle+WA+98117',
  { headers: { 'x-api-key': 'YOUR_KEY' } }
);
const data = await res.json();
console.log(data.lat, data.lng);  // 47.6901, -122.3831
console.log(data.zip, data.county); // "98117", "King"
// Then pass zip to /v1/property or /v1/market
import requests

r = requests.get(
  'https://propdata-api-worker.sales-fd3.workers.dev/v1/geocode',
  params={'address': '337 NW 86th St Seattle WA 98117'},
  headers={'x-api-key': 'YOUR_KEY'}
)
geo = r.json()
print(geo['lat'], geo['lng'], geo['county_fips'])
curl "https://propdata-api-worker.sales-fd3.workers.dev/v1/geocode?address=337+NW+86th+St+Seattle+WA" \
  -H "x-api-key: YOUR_KEY"

Response shape

{
  "address": "337 NW 86TH ST, SEATTLE, WA 98117",
  "lat": 47.6901,
  "lng": -122.3831,
  "zip": "98117",
  "city": "Seattle",
  "state": "WA",
  "county": "King",
  "county_fips": "53033",
  "state_fips": "53"
}
Common pattern: Geocode an address → extract ZIP → pass to /v1/property for owner lookup or /v1/market for market data. One pipeline, three endpoints.

/v1/neighborhood

Returns neighborhood-level context for a ZIP code — walkability, transit, density classification, and surrounding market signals. Useful for building property intelligence tools that need more than just rent data.

GET /v1/neighborhood Neighborhood profile for a ZIP
ParameterTypeDescription
ziprequired5-digit US ZIP code
const res = await fetch(
  'https://propdata-api-worker.sales-fd3.workers.dev/v1/neighborhood?zip=98117',
  { headers: { 'x-api-key': 'YOUR_KEY' } }
);
const data = await res.json();
console.log(data.density, data.walkability_score);

/v1/health

GET /v1/health API + source status

Returns uptime status for all 9 data sources. No authentication required.

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

/v1/usage

GET /v1/usage Key usage stats

Returns current hour usage, tier, and reset time for the authenticated key.

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

/v1/stats

GET /v1/stats Live parcel database stats

Returns the current total parcel count and state-level breakdown from our county assessor database. No authentication required.

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

// Response:
// { "total": 56000000, "states": { "FL": 9922348, "CA": 5297477, ... } }

Response Schema

All endpoints return JSON. The /v1/market full response shape:

{
  "powered_by": "PropData API / PropTechUSA.ai",
  "location": { "zip": "55104", "state": null, "metro": null },
  "snapshot": {
    "rent": {
      "median_asking_rent": 1534.41,  // Zillow ZORI
      "rent_yoy_pct": 3.63,
      "rent_mom_pct": -0.92,
      "rent_period": "2026-02",
      "fmr_efficiency": 1220,      // Studio
      "fmr_1br": 1381, "fmr_2br": 1685, "fmr_3br": 2244, "fmr_4br": 2513,
      "census_median_gross_rent": 1159
    },
    "market": {
      "median_listing_price": 319950, "price_yoy_pct": 0.2098,
      "median_days_on_market": 37, "dom_yoy_pct": 0.5851,
      "active_listings": 40, "inventory_yoy_pct": 1.0513,
      "sale_to_list_ratio": 0.979, "homes_sold": 127,
      "price_per_sqft": 207, "median_sqft": 1688
    },
    "affordability": {
      "vacancy_rate_pct": 8.69, "renter_pct": 46.08,
      "median_hh_income": 75038, "rent_to_income_ratio": 18.5
    },
    "signals": [{ "key": "gross_yield", "label": "Est. Gross Yield", "value": "5.75%", "sentiment": "neutral" }]
  },
  "macro": { "mortgage_rate_30yr": 6.38, "shelter_inflation_yoy": 0.23, "housing_starts": 1487 },
  "history": { "rent_trend": [...], "market_trend": [...] },
  "sources": { "rent_index": "Zillow ZORI", "fmr": "HUD Fair Market Rents", "macro": "FRED / St. Louis Fed" },
  "generated_at": "2026-03-29T22:46:57Z"
}

Error Codes

CodeStatusMeaning
400Bad RequestMissing required parameter (zip, state, or metro)
401UnauthorizedMissing or invalid API key
404Not FoundEndpoint does not exist
429Too Many RequestsRate limit exceeded for your tier. Retry after the hour resets.
500Server ErrorInternal error — contact support if persistent

All errors return a JSON body: {"error": "message"}

Coverage

Data availability varies by source and geography. Dense metro ZIPs return all sources. Rural ZIPs return Census ACS, HUD FMR, and FRED macro — which are national/county-level datasets.

SourceZIPStateMetro
Zillow ZORI~30K ZIPs
HUD Fair Market RentsCounty fallback
Realtor.comActive markets
RedfinActive markets
Census ACS33K+ ZIPs
FHFA HPI
FRED MacroNationalNationalNational

Data Sources

  • 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. Used for Section 8 vouchers.
  • Realtor.com Research — Monthly ZIP/state/metro listing data: DOM, inventory, list price, price/sqft.
  • Redfin — Sale-to-list ratio, % above list, homes sold, months of supply at ZIP level.
  • US Census ACS — 5-year American Community Survey. Vacancy rate, renter %, median income, rent-to-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.
All data is ingested and normalized. PropData does not make real-time calls to third-party APIs on each request. Data is cached at Cloudflare edge for fast, reliable responses.