Dataspryva

Use Zillow Research Home Value & Market Heat Scraper with Python

Get US state-level home value trends, active-listing inventory, and metro-level market heat index data from Zillow's published research files. Filter by state and cap the number of records returned.

1. Choose the data you need

Review the published README for supported collection modes, examples, and limits. The recipe below uses the current published input definition.

2. Prepare a source-based input

This JSON contains published prefills and required-field defaults. Review every value for your task before running it; it is not a promise of successful collection.

{
  "category": "all",
  "dataset": "market_temp_index_metro_uc_sfrcondo_month",
  "includeChanges": false,
  "maxItems": 3,
  "mode": "latest"
}

Download input.example.json and save your reviewed copy as input.json.

FieldTypeRequiredDescription
modestringrequiredWhat to return: latest values, full history, a multi-metric region snapshot, or the dataset catalog. The legacy options keep old saved tasks working with the previous wide output.
datasetstringoptionalZillow Research file to read. Covers home values, rents, inventory, days on market, price cuts, sales, market heat, forecasts, new construction and affordability at the geography levels Zillow publishes.
customDatasetUrlstringoptionalOptional Zillow Research CSV URL (https://files.zillowstatic.com/research/...csv) for a dataset newer than this actor's catalog. Overrides Dataset.
regionsarrayoptionalOptional region names or substrings: 'Austin, TX', 'Texas', 'TX', '90210', 'Harris County'. Matches region, state, city, county and metro names. Leave empty for all regions.
regionIdsarrayoptionalOptional exact Zillow RegionIDs (for example 102001 for the United States). If both Regions and Region IDs are set, a row must match both.
startDatestringoptionalOptional inclusive start date in YYYY-MM-DD format. Omit for the earliest published date.
endDatestringoptionalOptional inclusive end date in YYYY-MM-DD format. Omit for the latest published date.
includeChangesbooleanoptionalAdd 1-month, 3-month and 1-year percentage changes to latest and snapshot records when prior values exist.
snapshotMetricsarrayoptionalMetrics to include in snapshot mode. Allowed values: zhvi, zori, inventory, newListings, medianListPrice, medianSalePrice, salesCount, daysToPending, priceCutShare, saleToListRatio, marketHeatIndex, newConstructionSales. Leave empty for all 12.
categorystringoptionalFilter the dataset catalog in catalog mode. Ignored in other modes.
maxItemsintegeroptionalMaximum number of records to return. Large ZIP or neighborhood histories need a date range, region filter, or a higher cap.

3. Start an Actor run

Set APIFY_TOKEN in your environment. Python 3.10 or newer is sufficient; this recipe uses no third-party packages.

Execution may incur charges. Review current pricing on Apify. The request asks for a 120-second timeout and a charge limit; these settings are subject to Apify’s pricing and do not guarantee an all-inclusive spending cap.

import json
import os
import urllib.request

# Save the schema-derived example as input.json; review and edit it first.
with open("input.json", encoding="utf-8") as stream:
    actor_input = json.load(stream)

token = os.environ["APIFY_TOKEN"]
request = urllib.request.Request(
    "https://api.apify.com/v2/acts/mhbqXuxSnwXKuO0uP/runs?timeout=120&maxTotalChargeUsd=0.50",
    data=json.dumps(actor_input).encode("utf-8"),
    headers={"Authorization": "Bearer " + token, "Content-Type": "application/json"},
    method="POST",
)
# This starts a potentially billable run. Do not automatically retry this POST.
with urllib.request.urlopen(request, timeout=40) as response:
    run = json.load(response)["data"]
print("Run ID:", run["id"])
print("Status:", run["status"])
# Inspect and download results in Apify Console once the run succeeds.

4. Inspect the actual results

Open the run in Apify Console and wait for a successful completion. Use the published output schema to locate results and the dataset schema to understand declared views. Missing or optional record fields must not be treated as guaranteed values.

Zillow Research observations: home values, rents, inventory, days to pending, price cuts, sales, market heat, forecasts, new construction and affordability by US region and date.

Questions before you run

Which inputs are required?

The published required fields are mode

What does this guide verify?

The fields, prefills, and schema links are rendered from the published build. This is a usage recipe, not a paid live extraction test. Source availability and collection results can vary.

What if the run request times out?

Check Apify Console before retrying. The first request may already have created a run. Do not automatically repeat a run-creation POST.

Generated from source build LmI1eGACKbWePrgNH and its README and schemas. Source changes regenerate this guide; no third-party editorial claims are inferred.