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.
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.
| Column | Type | Description |
|---|---|---|
| region_id | bigint · not null | Zillow `RegionID` — the stable numeric id for a metro/county/state/zip. |
| metric | text · not null | The Zillow metric this value is for, e.g. `zhvi` or `zori`. |
| period_end | date · not null | Month-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_name | text | Human-readable region name, e.g. `New York, NY`. |
| region_type | text | Region granularity, e.g. `msa`, `county`, `state`, `zip`. |
| state_name | text | Two-letter state, when the file provides it. |
| size_rank | bigint | Zillow `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_fips | text | `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_fips | text | `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`). |
| metro | text | `Metro` (County file) — parent CBSA/metro name the county rolls up to (e.g. `Los Angeles-Long Beach-Anaheim, CA`); a geo-hierarchy attribute. |
| value | double precision | The metric value for the region/month (index level or rent, in USD). |
| available_date | date | PUBLIC-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.