Skip to content

How to Download Zillow ZHVI and ZORI Market Data

Export monthly ZHVI and ZORI observations, preserve series definitions and official source files, and check a Dallas example against Zillow Research.

Dievio Team · Growth Systems · November 6, 2026 · 6 min read

Two time series next to a building

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.

Series supported by this Actor
MetricSupported variantOutput unit
zhviAll homes, mid-tier, smoothed, seasonally adjusted.USD.
zoriAll 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.

  1. Choose zhvi and zori under Metrics.
  2. Keep Geography set to metro.
  3. Enter 394514 in Region IDs for the Dallas example.
  4. Set From date to 2026-06-01 and Through date to 2026-07-31.
  5. Set Maximum results this run to 10, leaving room for the four selected observations.
  6. 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.

Zillow Market Data Scraper reference showing metrics, metro geography, RegionIDs, monthly date range and saved result cap
Read-only reference for the supported metro series, numeric RegionIDs and monthly date window.
{
  "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.

Fields in the monthly output
FieldPurpose
recordIdIdentify a region-metric-period observation.
regionId, regionName, regionType, stateKeep geographic identity.
metric, period, value, unitRead the monthly observation and its units.
seriesVariant, seasonallyAdjustedPreserve the series definition.
source, scrapedAtRetain 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.

Dievio

Your next customer starts here.

Find decision-makers by role, company and location. Build your next prospect list in Dievio.

Find my leads

Free audience preview · No credit card

Find leadsExample
FounderSoftwareUnited States
AM
Alex MorganFounder & CEO · Northstaralex@northstar.example
JC
Jamie ChenCo-founder · Formlyjamie@formly.example
Work emailsCompany detailsCSV export

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.

Dallas metro source observations
PeriodZHVI, USDZORI, USD/month
2026-06-30358,680.971,657.83
2026-07-31358,064.621,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.

Keep reading

Build your first list.

100 free credits. No credit card required.

Start free