To download Zillow home-value and rent series, use the official Zillow Research Housing Data page. For a filtered monthly table in Apify, use the Zillow Market Data Scraper. Choose ZHVI, ZORI or both, select numeric RegionIDs and a date range, then export the Dataset as CSV.
The Actor reads supported official metro-series files and returns one region, metric and month per row. This is useful for charts, recurring data preparation and comparisons across matching series definitions. Keep the official source URL and collection date with your output.
Choose the metric and exact series variant
ZHVI describes typical home values for a region and housing category. ZORI describes typical observed market rent, using a methodology intended to represent the rental stock. The official Housing Data page links definitions and downloadable variants.
| Metric | Supported variant | Output unit |
|---|---|---|
zhvi | All homes, mid-tier, smoothed, seasonally adjusted. | USD. |
zori | All homes, smoothed; this supported variant is not marked seasonally adjusted. | USD per month. |
Keep the same variant when comparing regions or periods. The Actor returns seriesVariant and seasonallyAdjusted so that definition stays visible in the file.
Choose a metro RegionID, not a ZIP code
The Actor’s current geography option is metro, with a national row where the official file supplies one. It does not expose city, county or ZIP-series selection.
Find a RegionID in the selected official CSV’s RegionID column, or inspect a small recent-period Actor export without a region filter. Read the ID and region name together. For example, 394514 identifies Dallas, TX in the supported metro files.
Use numeric ID strings in regionIds. A city name or five-digit postal ZIP is a different input. For another geography, choose a download on Zillow Research where the selected series offers it, retaining that file’s own region definitions.
Step 1. Run a short monthly selection in Apify Console
Open the Zillow Market Data Scraper on Apify, click Try for free and sign in if prompted. Use the editable Input form in Apify Console.
- Choose
zhviandzoriunder Metrics. - Keep Geography set to
metro. - Enter
394514in Region IDs for the Dallas example. - Set From date to
2026-06-01and Through date to2026-07-31. - Set Maximum results this run to 10, leaving room for the four selected observations.
- Review pricing, set Max total charge and click Start.
The input reference shows the region and monthly-date controls. The screenshot is read-only; enter your selection in the Console form.

{
"metrics": ["zhvi", "zori"],
"geography": "metro",
"regionIds": ["394514"],
"startDate": "2026-06-01",
"endDate": "2026-07-31",
"maxResults": 10
}The boundaries apply inclusively to the monthly period dates. The example includes the June 30 and July 31 observations available in these files. Change the period and RegionIDs for your own report.
Step 2. Read one observation per row
Open the completed Dataset and inspect the combination of region, metric and period. Four rows here mean two observations for each metric, rather than four regions or four properties.
| Field | Purpose |
|---|---|
recordId | Identify a region-metric-period observation. |
regionId, regionName, regionType, state | Keep geographic identity. |
metric, period, value, unit | Read the monthly observation and its units. |
seriesVariant, seasonallyAdjusted | Preserve the series definition. |
source, scrapedAt | Retain the official CSV URL and collection time. |
A blank source observation remains null and still represents an observation row. Preserve it as missing data. Substituting zero changes the meaning of the series and can distort a chart or percentage calculation.
Step 3. Compare a small sample with the official files
The following Dallas values were checked in the official ZHVI CSV and ZORI CSV on November 9, 2026. Display values are rounded to cents.
| Period | ZHVI, USD | ZORI, USD/month |
|---|---|---|
| 2026-06-30 | 358,680.97 | 1,657.83 |
| 2026-07-31 | 358,064.62 | 1,657.82 |
Locate RegionID 394514 in each official file and compare its month-end columns with the Actor’s period rows. Check the source filename as well as the numeric value before treating a difference as an error.
Download your Dataset as CSV and retain its source URLs, input, run ID and Dataset ID. Save the source-file version or download date with any published chart. Zillow can revise earlier observations, so a later file can legitimately differ from this dated sample.
Calculate changes within the same series
For monthly percentage change, divide the current observation by the previous observation, subtract one and multiply by 100. Use full-precision values for calculation and round for display. The Dallas ZHVI change from June to July in the checked source is about −0.17%.
Calculate ZHVI and ZORI changes separately, using each metric’s own prior value. When either observation is missing, leave the change missing. A prior value of zero does not support a defined percentage-change calculation.
When refreshing a historical comparison, take both periods from the same source-file version. Mixing an old June value with a newly revised July value can create a comparison that no single published series actually contained.
Plan row counts, costs and larger exports
Count results as regions × metrics × available monthly periods. Two regions, two metrics and twelve periods can produce up to 48 observation rows. Null source observations are also saved rows.
The Actor downloads the supported official files even when selecting a small subset. Its pricing includes a start event as well as saved observations. Check the live Pricing tab, choose a run spending limit and avoid treating a short selection as a zero-cost operation.
The per-run ceiling can be up to 100,000 observations. The Free collection allowance is 500 rows across continuation batches, using Apify credits. Source availability and collection limits can stop the export earlier.
If PAGINATION.hasMore is true after a finished run, copy the full nextInput into the same Actor and account, keeping the selection fixed. Retain every batch Dataset. Continuation skips saved observation IDs and does not refresh their previous values if the official files were revised between batches.
For a consistent historical snapshot, choose a selection that can finish in one run within your plan, budget and collection limits. Read RUN_SUMMARY, ERRORS and coverageComplete before describing the export as complete.
Run the monthly export with your agent through MCP
Connect an MCP-compatible agent to https://mcp.apify.com and authorize Apify through the MCP setup guide. Give it the metrics, RegionIDs and date window.
Use x_guru/zillow-market-data-scraper.
Metrics: zhvi and zori
Metro RegionIDs: [MY_NUMERIC_IDS]
Period: [START_DATE] to [END_DATE]
Approved event-charge cap USD: [AMOUNT]
Inspect the current schema. Start with
one region and two months. Keep enough
maxResults headroom for both metrics.
Apply the approved cap through
callOptions.maxTotalChargeUsd.
Wait for the run and read all pages.
Preserve region identity, metric, period,
value, unit, seriesVariant, adjustment,
official source URL and scrapedAt.
Keep null observations as missing.
Save raw results and a monthly CSV.
Read RUN_SUMMARY, ERRORS and PAGINATION.
Report coverage, run and Dataset IDs.
Wait before expanding the selection.The agent starts with call-actor, waits through get-actor-run and reads output using get-dataset-items. For individual asking rents, use the rental export guide. For inventory or reported sales, see listings and sold homes. API downloads are covered in the Apify run guide.



