Obscura

Zillow Home Values

Zillow housing metrics by region, including the Home Value Index (ZHVI) and rent index (ZORI).

zillow_home_values — the dataset name to pass to the Obscura API.

Category Corporate Columns 12 Refresh Daily Point-in-time available_date

What one row means

One melted observation from a Zillow Research wide CSV: the value of a single metric (e.g. ZHVI home-value index or ZORI rent index) for one region (metro/county/state) for one month-end period, parsed off the wide grid's month-end column headers.

One row per (region_id, metric, period_end).

Point-in-time availability

Every Obscura dataset carries available_date: the calendar day the publisher made the row available, day-of, with no session rounding. It is the one column a backtest filters on, and it means the same thing on every dataset in the catalog.

For zillow_home_values: published: available_date = period_end + 21 days, a DB-generated approximation of Zillow's mid-month release cadence for the prior month's data.

Refresh cadence

Obscura refreshes zillow_home_values daily — the most frequent scheduled job that re-collects or re-exports it. This is Obscura's own pipeline cadence, not the upstream publisher's release schedule; when a row became public is recorded per row in available_date.

Schema — 12 columns

The full public column list for zillow_home_values, with the meaning of every field. The same schema is served unauthenticated at https://api.obscura.trade/v1/catalog/zillow_home_values.

ColumnTypeDescription
region_idbigint · not nullZillow `RegionID` — the stable numeric id for a metro/county/state/zip.
metrictext · not nullThe Zillow metric this value is for, e.g. `zhvi` or `zori`.
period_enddate · not nullMonth-end date the value applies to (melted from the CSV column header); the period the observation describes, rehomed from the old, misused `available_date` name. Part of the primary key.
region_nametextHuman-readable region name, e.g. `New York, NY`.
region_typetextRegion granularity, e.g. `msa`, `county`, `state`, `zip`.
state_nametextTwo-letter state, when the file provides it.
size_rankbigintZillow `SizeRank` — ordinal rank of the region by size within the file (0 = largest). Present on every file; a dimension for top-N filtering.
state_code_fipstext`StateCodeFIPS` (County file) — 2-digit FIPS state code (e.g. `06` for CA), stored as text to preserve the leading zero. Canonical geo join key.
municipal_code_fipstext`MunicipalCodeFIPS` (County file) — 3-digit FIPS county code (e.g. `037`), stored as text to preserve leading zeros. With `state_code_fips` forms the full 5-digit county FIPS (`06037`).
metrotext`Metro` (County file) — parent CBSA/metro name the county rolls up to (e.g. `Los Angeles-Long Beach-Anaheim, CA`); a geo-hierarchy attribute.
valuedouble precisionThe metric value for the region/month (index level or rent, in USD).
available_datedatePUBLIC-availability date, DB-generated as `period_end + 21 days` — an approximation of Zillow's real mid-month publication lag for the prior month's release. Read-only; the point-in-time column to filter/join on.

Access zillow_home_values

Two delivery paths, one identifier. Both require an Obscura account and an active subscription; the catalog entry and the schema above are public.

import obscura

client = obscura.Client("obs_live_…")

df = client.query(
    dataset="zillow_home_values",
    start="2024-01-01",
)

Create a free account Browse all 95 datasets

Frequently asked questions

What is in the zillow_home_values dataset?

Zillow housing metrics by region, including the Home Value Index (ZHVI) and rent index (ZORI). One melted observation from a Zillow Research wide CSV: the value of a single metric (e.g. ZHVI home-value index or ZORI rent index) for one region (metro/county/state) for one month-end period, parsed off the wide grid's month-end column headers.

How do I avoid look-ahead bias with zillow_home_values?

Filter on zillow_home_values.available_date, the day the publisher made the row public. For this dataset that date is derived as follows — published: available_date = period_end + 21 days, a DB-generated approximation of Zillow's mid-month release cadence for the prior month's data. A query of the form WHERE available_date <= '<as-of date>' never sees a row before it existed.

In what formats can I get zillow_home_values?

As a Parquet bulk export (POST https://api.obscura.trade/v1/download) or as JSON from the typed query API (POST https://api.obscura.trade/v1/query), both with dataset="zillow_home_values". The column schema is public at https://api.obscura.trade/v1/catalog/zillow_home_values.

How often is zillow_home_values updated?

Obscura refreshes zillow_home_values on a daily schedule — that is the most frequent scheduled job that re-collects or re-exports the table. It is Obscura's own pipeline cadence, not the upstream publisher's release schedule; when the publisher makes a row available is described by the availability rule above, and is recorded per row in available_date.

Related datasets

Board InterlocksPairs of public companies that share a director, reconstructed from SEC insider filings: one row per (director, company … Company SubsidiariesParent-and-subsidiary lists taken from the Exhibit 21 that public companies attach to their annual report. Domain SubdomainsSubdomains discovered for each public company's domains through Certificate Transparency logs (crt.sh). Employee CountsEmployee headcount as stated in the text of 10-K annual reports. Executive CompensationExecutive pay from the Pay-versus-Performance table in proxy statements: reported and 'actually paid' compensation for t… Governance EventsGovernance events distilled from company 8-K filings and tagged by type: executive changes, auditor changes, restatement… Insider SentimentMonthly insider buying and selling per company, netted from Form 4 open-market trades: shares and dollars bought versus … Job PostingsOpen job-posting counts for a curated set of companies, captured over time.