Real Estate

How do you get Zillow listings and Zestimate-style property data via API?

To get Zillow listings through an API, call ReefAPI's Zillow search action with a location; it returns live property cards as JSON, and Zillow detail actions can be used for deeper estimate, history and comps workflows when you have a property id.

Zillow engineLive JSON4 steps1,000 free credits

This guide demonstrates the real Zillow API engine with a captured response from . The example is only published because the engine passed the SEO snapshot gate.

Use case

Real-estate listing search, investor dashboards, comps research and market monitoring.

Step by step

Call the live endpoint

  1. 1

    Search by location

    Provide a city, neighborhood or market such as Austin, TX and optional filters like price or beds when needed.

  2. 2

    Call zillow/v1/search

    Send the JSON body to ReefAPI and keep the returned zpid, URL, price and status fields.

  3. 3

    Review the live response

    Use meta.record_count and completeness_pct to decide whether the search result is healthy enough for your workflow.

  4. 4

    Expand selected properties

    For deeper estimate, history or comps workflows, call the Zillow detail actions with a zpid from the search response.

Code

Copy the request

These snippets use the captured request params for zillow/v1/search.

curl -X POST https://api.reefapi.com/zillow/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"location":"Austin, TX"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.zillow.search with {"location":"Austin, TX"}.
Real response

Captured output from ReefAPI

Captured on UTC. The response below is the committed snapshot, including the API envelope and metadata.

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/zillow/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "location": "Austin, TX"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "zillow",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 9370,
    "record_count": 41,
    "bytes": 1125981,
    "cache_hit": false,
    "completeness_pct": 100,
    "completeness_fields": 12,
    "completeness_basis": "search",
    "location": "Austin, TX",
    "map_bounds": {
      "west": -98.246758,
      "east": -97.346758,
      "south": 29.93245,
      "north": 30.63245
    },
    "filters_applied": null,
    "reminted": false,
    "attempts": 1
  },
  "data": {
    "items": [
      {
        "zpid": 29577621,
        "source": "zillow",
        "url": "https://www.zillow.com/homedetails/8905-Spearhead-Cv-Austin-TX-78717/29577621_zpid/",
        "list_price_usd": 750000,
        "price_display": "$750,000",
        "status": "FOR_SALE",
        "status_text": "Active",
        "property_type": "SINGLE_FAMILY",
        "beds": 4,
        "baths": 3,
        "sqft": 2931,
        "lot_sqft": 10715.76,
        "zestimate_usd": null,
        "rent_zestimate_usd": null,
        "tax_assessed_value_usd": 687802,
        "days_on_market": 5,
        "address_line": "8905 Spearhead Cv",
        "city": "Austin",
        "state_code": "TX",
        "postal_code": "78717",
        "address": "8905 Spearhead Cv, Austin, TX 78717",
        "latitude": 30.498663,
        "longitude": -97.74547,
        "broker_name": "T J Lewis Real Estate",
        "is_showcase": true,
        "photos": [
          "https://photos.zillowstatic.com/fp/ea131c8b62a72e623780d730adc601f4-p_e.jpg"
        ]
      },
      {
        "zpid": 64443019,
        "source": "zillow",
        "url": "https://www.zillow.com/homedetails/12113-Cascade-Caverns-Trl-Austin-TX-78739/64443019_zpid/",
        "list_price_usd": 1000000,
        "price_display": "$1,000,000",
        "status": "FOR_SALE",
        "status_text": "Active",
        "property_type": "SINGLE_FAMILY",
        "beds": 5,
        "baths": 4,
        "sqft": 3935,
        "lot_sqft": 17380.44,
        "zestimate_usd": null,
        "rent_zestimate_usd": null,
        "tax_assessed_value_usd": 791460,
        "days_on_market": 11,
        "address_line": "12113 Cascade Caverns Trl",
        "city": "Austin",
        "state_code": "TX",
        "postal_code": "78739",
        "address": "12113 Cascade Caverns Trl, Austin, TX 78739",
        "latitude": 30.152708,
        "longitude": -97.861534,
        "broker_name": "Christies Intl Real Estate Lone Star",
        "is_showcase": true,
        "photos": [
          "https://photos.zillowstatic.com/fp/f538e72080fadd305936a54629cca3ad-p_e.jpg"
        ]
      },
      {
        "zpid": 29505949,
        "source": "zillow",
        "url": "https://www.zillow.com/homedetails/8536-Birmingham-Dr-Austin-TX-78748/29505949_zpid/",
        "list_price_usd": 439000,
        "price_display": "$439,000",
        "status": "FOR_SALE",
        "status_text": "Active",
        "property_type": "SINGLE_FAMILY",
        "beds": 3,
        "baths": 3,
        "sqft": 1398,
        "lot_sqft": 7997.616,
        "zestimate_usd": null,
        "rent_zestimate_usd": null,
        "tax_assessed_value_usd": 403926,
        "days_on_market": 5,
        "address_line": "8536 Birmingham Dr",
        "city": "Austin",
        "state_code": "TX",
        "postal_code": "78748",
        "address": "8536 Birmingham Dr, Austin, TX 78748",
        "latitude": 30.181974,
        "longitude": -97.806564,
        "broker_name": "Engel & Volkers Austin",
        "is_showcase": true,
        "photos": [
          "https://photos.zillowstatic.com/fp/0691aad67162b1c57926690e40bbded9-p_e.jpg"
        ]
      }
    ],
    "count": 41,
    "map_pins": [
      {
        "zpid": "29577621",
        "latitude": 30.498663,
        "longitude": -97.74547,
        "price_display": "$750,000"
      },
      {
        "zpid": "64443019",
        "latitude": 30.152708,
        "longitude": -97.861534,
        "price_display": "$1,000,000"
      },
      {
        "zpid": "29505949",
        "latitude": 30.181974,
        "longitude": -97.806564,
        "price_display": "$439,000"
      }
    ],
    "total_reported": 5860,
    "pages_fetched": 1,
    "tiles_fetched": null,
    "stop_reason": "max_pages",
    "location": "Austin, TX",
    "status": "for_sale",
    "filters_applied": null,
    "harvest_note": "SRP caps ~860 listResults/~500 map pins per box; fetch_all bbox-tiles to exceed (faceted-search-pagination)."
  }
}
Manual way

Why this is hard manually

Real-estate pages are unusually hard to scrape because listings depend on map bounds, filters, client state, listing freshness and anti-automation controls. A manual scraper also has to keep up with field names for price, beds, baths, square footage, status, coordinates, photos and property ids.

Zestimate-like and comps workflows are especially sensitive to stale identifiers. If the first search step is unreliable, every detail call and market dashboard built on top of it becomes noisy.

ReefAPI way

Why ReefAPI solves it

ReefAPI's Zillow snapshot for this guide uses the Austin, TX search example and returns a real response with listing ids, prices, status, property type, beds, baths, square footage, lot size and URLs. That makes the page a real API walkthrough, not a fabricated sample.

Use search to build a live inventory set, then feed selected zpid values into detail or comps endpoints when the product needs property-level history or estimate-adjacent research.

FAQ

Questions developers ask

Does the guide fabricate Zillow output?

No. The rendered response comes from seo-geo/example-snapshots/zillow.json and is only shown because the engine passed the indexable quality gate.

Can I filter listings?

Yes. The Zillow search action supports location plus optional filters such as price and beds, depending on the current catalog contract.

Does search alone return every Zestimate field?

No. Search is best for listing discovery. Use property detail or comps actions for deeper property-level research when available.

What should I store?

Store zpid, URL, price, status, home facts, location fields and capture time so changes can be compared over time.