Developer API

The same data behind every chart, as JSON. Machine-readable spec: /api/v1/openapi.json.

1 · Get an API key

API access starts on the Max plan. Upgrade, then create keys here or on your account page.

No API keys yet.

2 · Authenticate

Send the key as a bearer token. Every response includes an attribution field — display it wherever the data is shown.

curl "https://YOUR-DOMAIN/api/v1/inventory/country?metrics=median_listing_price" \
  -H "Authorization: Bearer cs_live_YOUR_KEY"

3 · Endpoints

Inventory & derived signals

GET /api/v1/inventory/{country|state|metro|county|zip}
  ?geo_id=CA,TX          # state id, CBSA code, 5-digit FIPS, or ZIP (max 25; not needed for country)
  &metrics=median_listing_price,active_listing_count
  &from=202001&to=202606 # yyyymm inclusive
  &transform=raw         # raw | mom | yoy | rolling3 | rolling6 | rolling12 | index100
22 inventory metrics
  • median_listing_priceMedian listing price
  • active_listing_countActive listings
  • median_days_on_marketMedian days on market
  • new_listing_countNew listings
  • price_increased_countPrice increases
  • price_increased_sharePrice-increase share
  • price_reduced_countPrice reductions
  • price_reduced_sharePrice-cut share
  • pending_listing_countPending listings
  • median_listing_price_per_square_footMedian $/sqft
  • median_square_feetMedian square feet
  • average_listing_priceAverage listing price
  • total_listing_countTotal listings
  • pending_ratioPending ratio
  • price_yoyPrice YoY
  • inventory_yoyInventory YoY
  • dom_yoyDays-on-market YoY
  • new_listings_yoyNew listings YoY
  • price_cut_sharePrice-cut share (derived)
  • ppsf_vs_national$/sqft vs national
  • price_percentilePrice percentile
  • momentumMarket momentum

Market hotness

GET /api/v1/hotness/{metro|county|zip}?geo_id=35620&metrics=hotness_rank,hotness_score
9 hotness metrics
  • hotness_scoreHotness score
  • hotness_rankHotness rank
  • hotness_rank_yyHotness rank Δ YoY
  • supply_scoreSupply score
  • demand_scoreDemand score
  • median_dom_vs_usDOM vs US
  • page_views_per_property_yyViews/property YoY
  • page_views_per_property_vs_usViews vs US
  • median_listing_price_vs_usPrice vs US

Segment deep-dive (values & rents)

GET /api/v1/segments/{country|state|county|zip}
  ?geo_id=90210
  &metrics=zhvi          # zhvi (home values) | zori (rents; country/county/zip)
  &segments=bd3,sfr      # all | sfr | condo | bd1 | bd2 | bd3 | bd4 | bd5
# series come back keyed "geo|segment", e.g. data.zhvi["90210|bd3"]

zhvi, zori, mortgage_rate_30y, fhfa_hpi, redfin_median_sale_price, redfin_sale_to_list, redfin_sold_above_list, redfin_homes_sold, redfin_months_supply, building_permits, migration_inflow, migration_outflow, migration_net, migration_agi_in, unemployment_rate_bls, hud_fmr_2br · attribution: Zillow Research.

Weekly national pulse

GET /api/v1/inventory/country?metrics=weekly_median_listing_price_yy
# weekly series use ISO week-end dates; YoY deltas only (all the source publishes)

4 · Response shape

{
  "meta": {
    "dataset": "inventory", "level": "state", "transform": "yoy",
    "latest_month": 202606,
    "attribution": "Source: Realtor.com Economic Research",
    "attribution_url": "https://www.realtor.com/research/data/"
  },
  "data": {
    "median_listing_price": {
      "CA": [ { "x": "2026-05", "y": -0.0323 }, { "x": "2026-06", "y": -0.0286 } ]
    }
  }
}

5 · Limits & errors

  • 60 requests/minute per key; monthly quota by plan (Max 10k · Analyst 25k · Agency 50k · Brokerage 250k). Over-limit returns 429.
  • 401 missing/invalid/revoked key · 400 bad metric/segment/transform · 404 unknown dataset.
  • Bulk needs? Custom plans include bigger quotas and exports.

★ premium metrics require Max+. Data: Realtor.com Economic Research, Zillow Research, U.S. Census Bureau — see data sources.