{
  "data": {
    "id": "eib1lvbHYElVwmXDZ",
    "actId": "ZIiRBhU3c2Z2cgCBx",
    "userId": "IYgBDiXtHOijAaUel",
    "startedAt": "2026-11-10T16:03:24.825Z",
    "finishedAt": "2026-11-10T16:03:35.085Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 10161,
      "runTimeSecs": 10.161,
      "computeUnits": 0.01129,
      "imageSizeBytes": 371352576
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "QYo53EZkJk0prePWY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Zillow Market Trends Scraper Input\",\n  \"description\": \"Get Zillow housing market data for any US city, state, county, ZIP or neighborhood, or scan Zillow Research data for thousands of regions at once.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"description\": \"What to collect. regionTrends = one detailed record per location. history = tidy monthly rows per location. marketScan = one row per region from a Zillow Research dataset.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"regionTrends\",\n        \"history\",\n        \"marketScan\"\n      ],\n      \"enumTitles\": [\n        \"Region trends - deep record per location\",\n        \"History - monthly rows per location\",\n        \"Market scan - bulk rows from Zillow Research\"\n      ],\n      \"default\": \"regionTrends\",\n      \"prefill\": \"regionTrends\"\n    },\n    \"locations\": {\n      \"title\": \"Locations\",\n      \"type\": \"array\",\n      \"editor\": \"stringList\",\n      \"description\": \"(mode=regionTrends, history) Cities, states, counties, ZIP codes or neighborhoods, e.g. 'Austin, TX', 'Travis County, TX', '78701', 'Barton Hills, Austin, TX', 'Texas'.\",\n      \"default\": [],\n      \"prefill\": [\n        \"Austin, TX\"\n      ],\n      \"sectionCaption\": \"Region trends\",\n      \"sectionDescription\": \"One location per entry. Zillow's autocomplete resolves the region type and canonical page.\"\n    },\n    \"historyMonths\": {\n      \"title\": \"History months\",\n      \"type\": \"integer\",\n      \"description\": \"(mode=regionTrends, history) Months of monthly history to include per metric. Zillow's page carries up to 100 months; larger values are capped at 100.\",\n      \"minimum\": 1,\n      \"maximum\": 120,\n      \"default\": 24,\n      \"prefill\": 24\n    },\n    \"historyMetric\": {\n      \"title\": \"History metric\",\n      \"type\": \"string\",\n      \"description\": \"(mode=history) Which monthly series to emit as tidy rows.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"zhvi\",\n        \"zori\",\n        \"both\"\n      ],\n      \"enumTitles\": [\n        \"Home values (ZHVI)\",\n        \"Rents (ZORI)\",\n        \"Both (one row per metric)\"\n      ],\n      \"default\": \"zhvi\",\n      \"prefill\": \"zhvi\",\n      \"sectionCaption\": \"History\",\n      \"sectionDescription\": \"Tidy one-row-per-month output for the selected metric.\"\n    },\n    \"dataset\": {\n      \"title\": \"Dataset\",\n      \"type\": \"string\",\n      \"description\": \"(mode=marketScan) Zillow Research series to scan. Each dataset supports a subset of geographies; the actor tells you if the selected geography is unavailable.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"zhviAllHomes\",\n        \"zhviSingleFamily\",\n        \"zhviCondo\",\n        \"zhviBottomTier\",\n        \"zhviTopTier\",\n        \"zhvi1Bedroom\",\n        \"zhvi2Bedroom\",\n        \"zhvi3Bedroom\",\n        \"zhvi4Bedroom\",\n        \"zhvi5PlusBedroom\",\n        \"zoriAllHomes\",\n        \"zoriSingleFamily\",\n        \"zoriMultiFamily\",\n        \"zhvf1Year\",\n        \"inventory\",\n        \"newListings\",\n        \"newlyPending\",\n        \"medianListPrice\",\n        \"medianSalePrice\",\n        \"saleToListRatio\",\n        \"pctSoldAboveList\",\n        \"pctSoldBelowList\",\n        \"medianDaysToPending\",\n        \"meanDaysToPending\",\n        \"priceCutShare\",\n        \"priceCutAmount\",\n        \"marketHeatIndex\",\n        \"newConstructionSalePrice\",\n        \"newConstructionPricePerSqft\",\n        \"newHomeownerIncomeNeeded\",\n        \"newRenterIncomeNeeded\",\n        \"affordableHomePrice\",\n        \"yearsToSave\",\n        \"newHomeownerAffordability\",\n        \"newRenterAffordability\"\n      ],\n      \"enumTitles\": [\n        \"Zillow Home Value Index (ZHVI) - All homes, mid-tier\",\n        \"Zillow Home Value Index (ZHVI) - Single-family homes\",\n        \"Zillow Home Value Index (ZHVI) - Condos and co-ops\",\n        \"Zillow Home Value Index (ZHVI) - Bottom price tier\",\n        \"Zillow Home Value Index (ZHVI) - Top price tier\",\n        \"Zillow Home Value Index (ZHVI) - 1-bedroom homes\",\n        \"Zillow Home Value Index (ZHVI) - 2-bedroom homes\",\n        \"Zillow Home Value Index (ZHVI) - 3-bedroom homes\",\n        \"Zillow Home Value Index (ZHVI) - 4-bedroom homes\",\n        \"Zillow Home Value Index (ZHVI) - 5+ bedroom homes\",\n        \"Zillow Observed Rent Index (ZORI) - All homes plus multifamily\",\n        \"Zillow Observed Rent Index (ZORI) - Single-family homes\",\n        \"Zillow Observed Rent Index (ZORI) - Multifamily homes\",\n        \"Zillow Home Value Forecast (ZHVF) - 1-month, 3-month and 1-year growth\",\n        \"For-sale inventory (smoothed, all homes, monthly)\",\n        \"New listings (smoothed, all homes, monthly)\",\n        \"Newly pending listings (smoothed, all homes, monthly)\",\n        \"Median list price (smoothed, all homes, monthly)\",\n        \"Median sale price (nowcast, all homes, monthly)\",\n        \"Median sale-to-list ratio (smoothed, all homes, monthly)\",\n        \"Share of homes sold above list price\",\n        \"Share of homes sold below list price\",\n        \"Median days to pending (smoothed, all homes, monthly)\",\n        \"Mean days to pending (smoothed, all homes, monthly)\",\n        \"Share of listings with a price cut (smoothed, all homes, monthly)\",\n        \"Mean price cut in dollars (smoothed, all homes, monthly)\",\n        \"Zillow market heat index (all homes, monthly, 0-100)\",\n        \"New construction median sale price (raw, all homes, monthly)\",\n        \"New construction median sale price per square foot (raw, monthly)\",\n        \"Income needed to buy (20% down, all homes, smoothed and seasonally adjusted)\",\n        \"Income needed to rent (all homes, smoothed and seasonally adjusted)\",\n        \"Affordable home price (20% down, all homes, smoothed and seasonally adjusted)\",\n        \"Years to save for a 20% down payment (all homes, smoothed and seasonally adjusted)\",\n        \"New homeowner affordability (20% down, share of income, smoothed and seasonally adjusted)\",\n        \"New renter affordability (share of income, smoothed and seasonally adjusted)\"\n      ],\n      \"default\": \"zhviAllHomes\",\n      \"prefill\": \"zhviAllHomes\",\n      \"sectionCaption\": \"Market scan\",\n      \"sectionDescription\": \"Bulk one-row-per-region output from the Zillow Research CSV catalog.\"\n    },\n    \"geography\": {\n      \"title\": \"Geography\",\n      \"type\": \"string\",\n      \"description\": \"(mode=marketScan) Region level to scan. Available levels depend on the dataset.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"metro\",\n        \"state\",\n        \"county\",\n        \"city\",\n        \"zip\",\n        \"neighborhood\",\n        \"us\"\n      ],\n      \"enumTitles\": [\n        \"Metro area\",\n        \"State\",\n        \"County\",\n        \"City\",\n        \"ZIP code\",\n        \"Neighborhood\",\n        \"United States total\"\n      ],\n      \"default\": \"city\",\n      \"prefill\": \"city\"\n    },\n    \"state\": {\n      \"title\": \"State filter\",\n      \"type\": \"string\",\n      \"description\": \"(mode=marketScan) Keep only regions in this state. 'all' keeps every state.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"AL\",\n        \"AK\",\n        \"AZ\",\n        \"AR\",\n        \"CA\",\n        \"CO\",\n        \"CT\",\n        \"DE\",\n        \"FL\",\n        \"GA\",\n        \"HI\",\n        \"ID\",\n        \"IL\",\n        \"IN\",\n        \"IA\",\n        \"KS\",\n        \"KY\",\n        \"LA\",\n        \"ME\",\n        \"MD\",\n        \"MA\",\n        \"MI\",\n        \"MN\",\n        \"MS\",\n        \"MO\",\n        \"MT\",\n        \"NE\",\n        \"NV\",\n        \"NH\",\n        \"NJ\",\n        \"NM\",\n        \"NY\",\n        \"NC\",\n        \"ND\",\n        \"OH\",\n        \"OK\",\n        \"OR\",\n        \"PA\",\n        \"RI\",\n        \"SC\",\n        \"SD\",\n        \"TN\",\n        \"TX\",\n        \"UT\",\n        \"VT\",\n        \"VA\",\n        \"WA\",\n        \"WV\",\n        \"WI\",\n        \"WY\",\n        \"DC\"\n      ],\n      \"enumTitles\": [\n        \"All states\",\n        \"Alabama\",\n        \"Alaska\",\n        \"Arizona\",\n        \"Arkansas\",\n        \"California\",\n        \"Colorado\",\n        \"Connecticut\",\n        \"Delaware\",\n        \"Florida\",\n        \"Georgia\",\n        \"Hawaii\",\n        \"Idaho\",\n        \"Illinois\",\n        \"Indiana\",\n        \"Iowa\",\n        \"Kansas\",\n        \"Kentucky\",\n        \"Louisiana\",\n        \"Maine\",\n        \"Maryland\",\n        \"Massachusetts\",\n        \"Michigan\",\n        \"Minnesota\",\n        \"Mississippi\",\n        \"Missouri\",\n        \"Montana\",\n        \"Nebraska\",\n        \"Nevada\",\n        \"New Hampshire\",\n        \"New Jersey\",\n        \"New Mexico\",\n        \"New York\",\n        \"North Carolina\",\n        \"North Dakota\",\n        \"Ohio\",\n        \"Oklahoma\",\n        \"Oregon\",\n        \"Pennsylvania\",\n        \"Rhode Island\",\n        \"South Carolina\",\n        \"South Dakota\",\n        \"Tennessee\",\n        \"Texas\",\n        \"Utah\",\n        \"Vermont\",\n        \"Virginia\",\n        \"Washington\",\n        \"West Virginia\",\n        \"Wisconsin\",\n        \"Wyoming\",\n        \"District of Columbia\"\n      ],\n      \"default\": \"all\",\n      \"prefill\": \"all\"\n    },\n    \"nameContains\": {\n      \"title\": \"Name contains\",\n      \"type\": \"string\",\n      \"editor\": \"textfield\",\n      \"description\": \"(mode=marketScan) Case-insensitive substring filter on the region name, e.g. 'Travis' or 'Springfield'.\",\n      \"default\": \"\",\n      \"prefill\": \"\"\n    },\n    \"regionIds\": {\n      \"title\": \"Region IDs\",\n      \"type\": \"array\",\n      \"editor\": \"stringList\",\n      \"description\": \"(mode=marketScan) Exact Zillow RegionIDs to keep, e.g. '3101'. Values not in the selected dataset are ignored.\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"sortBy\": {\n      \"title\": \"Sort and rank by\",\n      \"type\": \"string\",\n      \"description\": \"(mode=marketScan) Order rows and assign a 1-based rank over all matches before maxItems truncation.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"sizeRank\",\n        \"regionName\",\n        \"largestValue\",\n        \"smallestValue\",\n        \"biggestGain1m\",\n        \"biggestGain3m\",\n        \"biggestGain6m\",\n        \"biggestGain12m\",\n        \"biggestDecline12m\"\n      ],\n      \"enumTitles\": [\n        \"Market size (largest first)\",\n        \"Region name (A-Z)\",\n        \"Highest latest value\",\n        \"Lowest latest value\",\n        \"Biggest 1-month gain\",\n        \"Biggest 3-month gain\",\n        \"Biggest 6-month gain\",\n        \"Biggest 12-month gain\",\n        \"Biggest 12-month decline\"\n      ],\n      \"default\": \"sizeRank\",\n      \"prefill\": \"sizeRank\"\n    },\n    \"maxItems\": {\n      \"title\": \"Maximum records\",\n      \"type\": \"integer\",\n      \"description\": \"Hard cap on emitted records for this run.\",\n      \"minimum\": 1,\n      \"maximum\": 20000,\n      \"default\": 200,\n      \"prefill\": 3,\n      \"sectionCaption\": \"Output limit\",\n      \"sectionDescription\": \"The run stops at this many records and says so when it truncates.\"\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# Zillow Housing Data Explorer - ZHVI, ZORI & Forecasts\n\nZillow publishes a deep set of public housing metrics: home values, rents, sale and list prices,\ninventory, market speed, forecasts, market heat, affordability and housing cuts by property type and\nbedroom count. This actor turns those public pages and Zillow Research files into clean records -\nfor one neighborhood or for every ZIP code in the country.\n\nNo login, API key, cookie or proxy setup is needed.\n\n## What this actor does\n\n- **Three modes** - one deep record per location, tidy monthly history rows, or a bulk market scan\n- **Six region types** - city, state, county, ZIP, neighborhood and United States\n- **ZHVI and ZORI** - latest values plus true 1/3/6/12-month changes and up to 100 months of history\n- **Market metrics** - list and sale prices, inventory, days to pending, sale-to-list, price cuts, market heat, forecasts and affordability\n- **35 Zillow Research datasets** - property-type and bedroom cuts down to ZIP and neighborhood, with filters, sorting and rank\n- **Benchmarks** - parent state, county and national comparisons\n- **Empty fields are omitted** - never `null`, blank or placeholder values\n\n## Modes\n\n| Mode | What it returns |\n|---|---|\n| `regionTrends` (default) | One detailed record per location: ZHVI and ZORI with 1/3/6/12-month changes, median sale and list prices, inventory, new listings, days to pending, sale-to-list, % sold above/below list, 1-year forecast where Zillow publishes it, parent state/county/national benchmarks, and up to 100 months of history |\n| `history` | Tidy monthly rows, one per region x month x metric, for ZHVI, ZORI or both |\n| `marketScan` | Bulk one-row-per-region output from a Zillow Research dataset: property type, bedroom count, bottom/top price tier, market heat, affordability, price cuts, sale/list metrics, forecasts and new-construction price per square foot, with filters, sorting and rank |\n\n## Supported locations\n\n`regionTrends` and `history` accept any location Zillow's own search resolves:\n\n- City: `Austin, TX`\n- State: `Texas` or `TX`\n- County: `Travis County, TX`\n- ZIP code: `78701`\n- Neighborhood: `Barton Hills, Austin, TX`\n- United States: `United States`\n\nZIP codes and neighborhoods are resolved through Zillow's autocomplete and the canonical\n`/home-values/{regionId}/{slug}/` page. Some neighborhoods do not have their own page; Zillow then\nrenders the parent city or county page, and the record's `regionName`/`regionType` show what was\nactually returned.\n\n## Input\n\n| Field | Type | Default | Notes |\n|---|---|---|---|\n| `mode` | select | `regionTrends` | `regionTrends`, `history`, `marketScan` |\n| `locations` | string list | `[\"Austin, TX\"]` | Used by `regionTrends` and `history` |\n| `historyMonths` | integer 1-120 | `24` | Zillow pages carry up to 100 months |\n| `historyMetric` | select | `zhvi` | `zhvi`, `zori`, `both` (history mode) |\n| `dataset` | select | `zhviAllHomes` | Zillow Research series (marketScan mode) |\n| `geography` | select | `city` | `metro`, `state`, `county`, `city`, `zip`, `neighborhood`, `us` |\n| `state` | select | `all` | Market scan filter |\n| `nameContains` | text | empty | Case-insensitive region-name filter |\n| `regionIds` | string list | `[]` | Exact Zillow RegionIDs |\n| `sortBy` | select | `sizeRank` | Sort and rank key |\n| `maxItems` | integer 1-20000 | `200` (`prefill` 3) | Hard record cap; truncation is reported |\n\n### Example: compare three cities\n\n```json\n{\n  \"mode\": \"regionTrends\",\n  \"locations\": [\"Austin, TX\", \"Seattle, WA\", \"Denver, CO\"],\n  \"historyMonths\": 36\n}\n```\n\n### Example: every ZIP code in Texas, ranked by 12-month home-value change\n\n```json\n{\n  \"mode\": \"marketScan\",\n  \"dataset\": \"zhviAllHomes\",\n  \"geography\": \"zip\",\n  \"state\": \"TX\",\n  \"sortBy\": \"biggestGain12m\",\n  \"maxItems\": 500\n}\n```\n\n### Example: monthly rent history for one neighborhood\n\n```json\n{\n  \"mode\": \"history\",\n  \"locations\": [\"Barton Hills, Austin, TX\"],\n  \"historyMetric\": \"both\",\n  \"historyMonths\": 60,\n  \"maxItems\": 120\n}\n```\n\n### Example: market heat and affordability\n\n```json\n{\n  \"mode\": \"marketScan\",\n  \"dataset\": \"marketHeatIndex\",\n  \"geography\": \"metro\",\n  \"maxItems\": 50\n}\n```\n\n## Output per record type\n\n### `regionMarketTrends`\n\n- `location`, `locationType`, `slug`, `url`, `sourceUrl`, `regionId`, `regionName`, `regionType`,\n  `regionDisplayName`, `state`, `stateCode`, `county`, `metro`\n- `zhviLatest`, `zhviYoY` (decimal), `zhviAsOf`, `zhviChange1mPct`, `zhviChange3mPct`,\n  `zhviChange6mPct`, `zhviChange12mPct`\n- `zoriLatest`, `zoriAsOf`, `zoriChange1mPct`, `zoriChange3mPct`, `zoriChange6mPct`,\n  `zoriChange12mPct`\n- `medianListingPrice`, `forSaleInventory`, `newListings`, `listingAsOf`\n- `medianSalePrice`, `saleAsOf`, `saleToListRatio`, `pctSellingAboveList`,\n  `pctSellingBelowList`, `medianDaysToPending`\n- `zhvfGrowth1YrPct`, `zhvfAsOf` (ZIP and US only)\n- `nationalZhviLatest`, `parentStateZhviLatest`, `parentCountyZhviLatest`, `vsNationalPct`,\n  `vsStatePct`, `vsCountyPct`\n- `zhviHistory`, `rentalHistory`, `historyMonths`\n- `recordType`, `dataSource`, `scrapedAt`\n\n### `marketHistoryObservation`\n\n`location`, `locationType`, `slug`, `url`, `sourceUrl`, `regionId`, `regionName`, `regionType`,\n`state`, `stateCode`, `county`, `metro`, `date`, `metric` (`zhvi` or `zori`), `value`, `unit`,\n`recordType`, `dataSource`, `scrapedAt`.\n\n### `marketObservation`\n\n`geography`, `dataset`, `datasetLabel`, `metric`, `propertyType`, `unit`, `regionId`, `sizeRank`,\n`regionName`, `regionType`, `state`, `stateCode`, `county`, `metro`, `city`, `latestValue`,\n`latestDate`, `value1MonthAgo`, `value3MonthsAgo`, `value6MonthsAgo`, `value12MonthsAgo`,\n`change1mPct`, `change3mPct`, `change6mPct`, `change12mPct`, `forecast1MonthPct`,\n`forecast3MonthPct`, `forecast1YearPct` (forecast rows), `rank`, `rankedBy`, `sourceUrl`,\n`recordType`, `dataSource`, `scrapedAt`.\n\nEmpty fields are omitted at every depth. A field appears only when Zillow publishes a real value.\n\n## Datasets available in marketScan\n\nHome values (13 cuts): all homes, single-family, condo/co-op, bottom tier, top tier, 1, 2, 3, 4 and\n5+ bedrooms. Rents: all homes plus multifamily, single-family, multifamily. Forecasts: 1-month,\n3-month and 1-year growth. Market metrics: for-sale inventory, new listings, newly pending, median\nlist price, median sale price, median sale-to-list, % sold above/below list, median and mean days\nto pending, price-cut share and mean price cut, market heat index, new-construction sale price,\nnew-construction price per square foot. Affordability: income needed to buy, income needed to rent,\naffordable home price, years to save, homeowner affordability and renter affordability.\n\nEach dataset supports a subset of geographies. If the selected geography is not published, the run\nreturns a clear status message listing the supported levels.\n\n## How the numbers are calculated\n\n- Every trend is computed from Zillow's monthly month-end series by matching the **same calendar\n  month** 1, 3, 6 and 12 months earlier. The actor never uses a positional \"last N columns\" offset.\n- `zhviChange12mPct` is a percent. The legacy `zhviYoY` field stays a decimal fraction, matching\n  the value Zillow's page reports.\n- Benchmark deltas are percent differences from the parent state, parent county or national ZHVI.\n- Rank is 1-based over every matching row **before** `maxItems` truncation.\n\n## Limitations\n\n- Zillow publishes data for the United States only. There are no non-US locales.\n- `regionTrends` history is capped by the page payload at 100 months. Use `marketScan` for Zillow\n  Research series that go back further.\n- ZORI is not published for states or neighborhoods. It is available for metro areas, counties,\n  cities and most ZIP codes.\n- ZIP and neighborhood sale metrics are published less consistently than city/county metrics;\n  fields Zillow does not publish are omitted rather than filled with a placeholder.\n- The Zillow Research catalog publishes an all-homes median sale price per square foot only for\n  new construction. There is no all-homes price-per-square-foot series in the current catalog.\n- Market heat, affordability, inventory, list/sale price, days-to-pending and sale-to-list research\n  series are metro/US level only.\n- Forecasts from the live page are available for ZIP codes and the United States; the research\n  forecast file covers metro areas and ZIP codes.\n- Zillow restates history every monthly release. Treat each run as a snapshot; `scrapedAt` and\n  `sourceUrl` record when and where it came from.\n- A few neighborhoods (for example Tarrytown in Austin) do not have their own home-values page and\n  fall back to the parent city or county page. The actor reports the page's real region and logs a\n  warning.\n- Zillow page URLs (`url` and `sourceUrl` on region records) are valid but may return HTTP 403 to a\n  plain `curl` or scripted HEAD request because of Zillow's bot protection. They open normally in a\n  browser. Every Zillow Research CSV `sourceUrl` on market-scan records returns HTTP 200 without\n  cookies or a key.\n\n## Use cases\n\n- **Real estate investors** - compare home-value and rent trends across target ZIP codes\n- **Market research** - rank metros or counties by 12-month gains, inventory or affordability\n- **Relocation and site selection** - compare housing costs, forecasts and market heat between cities\n- **Proptech and lending** - feed neighborhood-level ZHVI, ZORI and forecast history into models\n- **Policy and academic research** - export reproducible Zillow Research series with clear attribution\n\n## FAQ\n\n**Is this affiliated with Zillow?**\nNo. It is an independent, third-party actor that reads publicly available Zillow pages and Zillow\nResearch downloads.\n\n**Do I need a Zillow account, cookie or API key?**\nNo. The actor works with no credentials and no proxy setup.\n\n**What is ZHVI?**\nThe Zillow Home Value Index is Zillow's estimate of the typical home value for a region and housing\ncut. It is a value index, not a transaction-price average.\n\n**What is ZORI?**\nThe Zillow Observed Rent Index is a smoothed measure of typical market-rate rent for a region.\n\n**Why are some fields missing for a ZIP code?**\nZillow's sale and market-speed coverage at ZIP level is thinner than at city/county level. The\nactor returns what Zillow publishes and omits the rest.\n\n**Can I get more than 20,000 rows?**\nNo single run exceeds 20,000 records. Split by state, region ID or name filter to cover the full\ncatalog.\n\n**How fresh is the data?**\nZillow updates research data monthly, usually in the weeks after a month ends. `latestDate` and\n`zhviAsOf` show the month each value covers.\n\n## Data source\n\nZillow's public home-values pages and the Zillow Research public data catalog. Data is attributed to\nZillow; see Zillow's research data terms before redistributing.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "zillow-market-trends-scraper",
      "title": "Zillow Housing Data Explorer - ZHVI, ZORI & Forecasts",
      "description": "Download Zillow housing data for any US city, state, county, ZIP or neighborhood: home values, rents, sale and list prices, inventory, days to pending, sale-to-list, forecasts, market heat, affordability, property-type cuts and ranked market scans. No login, API key or proxy.",
      "version": "1.1",
      "buildTag": "latest",
      "dockerfile": "./Dockerfile",
      "readme": "# Zillow Housing Data Explorer - ZHVI, ZORI & Forecasts\n\nZillow publishes a deep set of public housing metrics: home values, rents, sale and list prices,\ninventory, market speed, forecasts, market heat, affordability and housing cuts by property type and\nbedroom count. This actor turns those public pages and Zillow Research files into clean records -\nfor one neighborhood or for every ZIP code in the country.\n\nNo login, API key, cookie or proxy setup is needed.\n\n## What this actor does\n\n- **Three modes** - one deep record per location, tidy monthly history rows, or a bulk market scan\n- **Six region types** - city, state, county, ZIP, neighborhood and United States\n- **ZHVI and ZORI** - latest values plus true 1/3/6/12-month changes and up to 100 months of history\n- **Market metrics** - list and sale prices, inventory, days to pending, sale-to-list, price cuts, market heat, forecasts and affordability\n- **35 Zillow Research datasets** - property-type and bedroom cuts down to ZIP and neighborhood, with filters, sorting and rank\n- **Benchmarks** - parent state, county and national comparisons\n- **Empty fields are omitted** - never `null`, blank or placeholder values\n\n## Modes\n\n| Mode | What it returns |\n|---|---|\n| `regionTrends` (default) | One detailed record per location: ZHVI and ZORI with 1/3/6/12-month changes, median sale and list prices, inventory, new listings, days to pending, sale-to-list, % sold above/below list, 1-year forecast where Zillow publishes it, parent state/county/national benchmarks, and up to 100 months of history |\n| `history` | Tidy monthly rows, one per region x month x metric, for ZHVI, ZORI or both |\n| `marketScan` | Bulk one-row-per-region output from a Zillow Research dataset: property type, bedroom count, bottom/top price tier, market heat, affordability, price cuts, sale/list metrics, forecasts and new-construction price per square foot, with filters, sorting and rank |\n\n## Supported locations\n\n`regionTrends` and `history` accept any location Zillow's own search resolves:\n\n- City: `Austin, TX`\n- State: `Texas` or `TX`\n- County: `Travis County, TX`\n- ZIP code: `78701`\n- Neighborhood: `Barton Hills, Austin, TX`\n- United States: `United States`\n\nZIP codes and neighborhoods are resolved through Zillow's autocomplete and the canonical\n`/home-values/{regionId}/{slug}/` page. Some neighborhoods do not have their own page; Zillow then\nrenders the parent city or county page, and the record's `regionName`/`regionType` show what was\nactually returned.\n\n## Input\n\n| Field | Type | Default | Notes |\n|---|---|---|---|\n| `mode` | select | `regionTrends` | `regionTrends`, `history`, `marketScan` |\n| `locations` | string list | `[\"Austin, TX\"]` | Used by `regionTrends` and `history` |\n| `historyMonths` | integer 1-120 | `24` | Zillow pages carry up to 100 months |\n| `historyMetric` | select | `zhvi` | `zhvi`, `zori`, `both` (history mode) |\n| `dataset` | select | `zhviAllHomes` | Zillow Research series (marketScan mode) |\n| `geography` | select | `city` | `metro`, `state`, `county`, `city`, `zip`, `neighborhood`, `us` |\n| `state` | select | `all` | Market scan filter |\n| `nameContains` | text | empty | Case-insensitive region-name filter |\n| `regionIds` | string list | `[]` | Exact Zillow RegionIDs |\n| `sortBy` | select | `sizeRank` | Sort and rank key |\n| `maxItems` | integer 1-20000 | `200` (`prefill` 3) | Hard record cap; truncation is reported |\n\n### Example: compare three cities\n\n```json\n{\n  \"mode\": \"regionTrends\",\n  \"locations\": [\"Austin, TX\", \"Seattle, WA\", \"Denver, CO\"],\n  \"historyMonths\": 36\n}\n```\n\n### Example: every ZIP code in Texas, ranked by 12-month home-value change\n\n```json\n{\n  \"mode\": \"marketScan\",\n  \"dataset\": \"zhviAllHomes\",\n  \"geography\": \"zip\",\n  \"state\": \"TX\",\n  \"sortBy\": \"biggestGain12m\",\n  \"maxItems\": 500\n}\n```\n\n### Example: monthly rent history for one neighborhood\n\n```json\n{\n  \"mode\": \"history\",\n  \"locations\": [\"Barton Hills, Austin, TX\"],\n  \"historyMetric\": \"both\",\n  \"historyMonths\": 60,\n  \"maxItems\": 120\n}\n```\n\n### Example: market heat and affordability\n\n```json\n{\n  \"mode\": \"marketScan\",\n  \"dataset\": \"marketHeatIndex\",\n  \"geography\": \"metro\",\n  \"maxItems\": 50\n}\n```\n\n## Output per record type\n\n### `regionMarketTrends`\n\n- `location`, `locationType`, `slug`, `url`, `sourceUrl`, `regionId`, `regionName`, `regionType`,\n  `regionDisplayName`, `state`, `stateCode`, `county`, `metro`\n- `zhviLatest`, `zhviYoY` (decimal), `zhviAsOf`, `zhviChange1mPct`, `zhviChange3mPct`,\n  `zhviChange6mPct`, `zhviChange12mPct`\n- `zoriLatest`, `zoriAsOf`, `zoriChange1mPct`, `zoriChange3mPct`, `zoriChange6mPct`,\n  `zoriChange12mPct`\n- `medianListingPrice`, `forSaleInventory`, `newListings`, `listingAsOf`\n- `medianSalePrice`, `saleAsOf`, `saleToListRatio`, `pctSellingAboveList`,\n  `pctSellingBelowList`, `medianDaysToPending`\n- `zhvfGrowth1YrPct`, `zhvfAsOf` (ZIP and US only)\n- `nationalZhviLatest`, `parentStateZhviLatest`, `parentCountyZhviLatest`, `vsNationalPct`,\n  `vsStatePct`, `vsCountyPct`\n- `zhviHistory`, `rentalHistory`, `historyMonths`\n- `recordType`, `dataSource`, `scrapedAt`\n\n### `marketHistoryObservation`\n\n`location`, `locationType`, `slug`, `url`, `sourceUrl`, `regionId`, `regionName`, `regionType`,\n`state`, `stateCode`, `county`, `metro`, `date`, `metric` (`zhvi` or `zori`), `value`, `unit`,\n`recordType`, `dataSource`, `scrapedAt`.\n\n### `marketObservation`\n\n`geography`, `dataset`, `datasetLabel`, `metric`, `propertyType`, `unit`, `regionId`, `sizeRank`,\n`regionName`, `regionType`, `state`, `stateCode`, `county`, `metro`, `city`, `latestValue`,\n`latestDate`, `value1MonthAgo`, `value3MonthsAgo`, `value6MonthsAgo`, `value12MonthsAgo`,\n`change1mPct`, `change3mPct`, `change6mPct`, `change12mPct`, `forecast1MonthPct`,\n`forecast3MonthPct`, `forecast1YearPct` (forecast rows), `rank`, `rankedBy`, `sourceUrl`,\n`recordType`, `dataSource`, `scrapedAt`.\n\nEmpty fields are omitted at every depth. A field appears only when Zillow publishes a real value.\n\n## Datasets available in marketScan\n\nHome values (13 cuts): all homes, single-family, condo/co-op, bottom tier, top tier, 1, 2, 3, 4 and\n5+ bedrooms. Rents: all homes plus multifamily, single-family, multifamily. Forecasts: 1-month,\n3-month and 1-year growth. Market metrics: for-sale inventory, new listings, newly pending, median\nlist price, median sale price, median sale-to-list, % sold above/below list, median and mean days\nto pending, price-cut share and mean price cut, market heat index, new-construction sale price,\nnew-construction price per square foot. Affordability: income needed to buy, income needed to rent,\naffordable home price, years to save, homeowner affordability and renter affordability.\n\nEach dataset supports a subset of geographies. If the selected geography is not published, the run\nreturns a clear status message listing the supported levels.\n\n## How the numbers are calculated\n\n- Every trend is computed from Zillow's monthly month-end series by matching the **same calendar\n  month** 1, 3, 6 and 12 months earlier. The actor never uses a positional \"last N columns\" offset.\n- `zhviChange12mPct` is a percent. The legacy `zhviYoY` field stays a decimal fraction, matching\n  the value Zillow's page reports.\n- Benchmark deltas are percent differences from the parent state, parent county or national ZHVI.\n- Rank is 1-based over every matching row **before** `maxItems` truncation.\n\n## Limitations\n\n- Zillow publishes data for the United States only. There are no non-US locales.\n- `regionTrends` history is capped by the page payload at 100 months. Use `marketScan` for Zillow\n  Research series that go back further.\n- ZORI is not published for states or neighborhoods. It is available for metro areas, counties,\n  cities and most ZIP codes.\n- ZIP and neighborhood sale metrics are published less consistently than city/county metrics;\n  fields Zillow does not publish are omitted rather than filled with a placeholder.\n- The Zillow Research catalog publishes an all-homes median sale price per square foot only for\n  new construction. There is no all-homes price-per-square-foot series in the current catalog.\n- Market heat, affordability, inventory, list/sale price, days-to-pending and sale-to-list research\n  series are metro/US level only.\n- Forecasts from the live page are available for ZIP codes and the United States; the research\n  forecast file covers metro areas and ZIP codes.\n- Zillow restates history every monthly release. Treat each run as a snapshot; `scrapedAt` and\n  `sourceUrl` record when and where it came from.\n- A few neighborhoods (for example Tarrytown in Austin) do not have their own home-values page and\n  fall back to the parent city or county page. The actor reports the page's real region and logs a\n  warning.\n- Zillow page URLs (`url` and `sourceUrl` on region records) are valid but may return HTTP 403 to a\n  plain `curl` or scripted HEAD request because of Zillow's bot protection. They open normally in a\n  browser. Every Zillow Research CSV `sourceUrl` on market-scan records returns HTTP 200 without\n  cookies or a key.\n\n## Use cases\n\n- **Real estate investors** - compare home-value and rent trends across target ZIP codes\n- **Market research** - rank metros or counties by 12-month gains, inventory or affordability\n- **Relocation and site selection** - compare housing costs, forecasts and market heat between cities\n- **Proptech and lending** - feed neighborhood-level ZHVI, ZORI and forecast history into models\n- **Policy and academic research** - export reproducible Zillow Research series with clear attribution\n\n## FAQ\n\n**Is this affiliated with Zillow?**\nNo. It is an independent, third-party actor that reads publicly available Zillow pages and Zillow\nResearch downloads.\n\n**Do I need a Zillow account, cookie or API key?**\nNo. The actor works with no credentials and no proxy setup.\n\n**What is ZHVI?**\nThe Zillow Home Value Index is Zillow's estimate of the typical home value for a region and housing\ncut. It is a value index, not a transaction-price average.\n\n**What is ZORI?**\nThe Zillow Observed Rent Index is a smoothed measure of typical market-rate rent for a region.\n\n**Why are some fields missing for a ZIP code?**\nZillow's sale and market-speed coverage at ZIP level is thinner than at city/county level. The\nactor returns what Zillow publishes and omits the rest.\n\n**Can I get more than 20,000 rows?**\nNo single run exceeds 20,000 records. Split by state, region ID or name filter to cover the full\ncatalog.\n\n**How fresh is the data?**\nZillow updates research data monthly, usually in the weeks after a month ends. `latestDate` and\n`zhviAsOf` show the month each value covers.\n\n## Data source\n\nZillow's public home-values pages and the Zillow Research public data catalog. Data is attributed to\nZillow; see Zillow's research data terms before redistributing.\n",
      "input": {
        "title": "Zillow Market Trends Scraper Input",
        "description": "Get Zillow housing market data for any US city, state, county, ZIP or neighborhood, or scan Zillow Research data for thousands of regions at once.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "What to collect. regionTrends = one detailed record per location. history = tidy monthly rows per location. marketScan = one row per region from a Zillow Research dataset.",
            "editor": "select",
            "enum": [
              "regionTrends",
              "history",
              "marketScan"
            ],
            "enumTitles": [
              "Region trends - deep record per location",
              "History - monthly rows per location",
              "Market scan - bulk rows from Zillow Research"
            ],
            "default": "regionTrends",
            "prefill": "regionTrends"
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "editor": "stringList",
            "description": "(mode=regionTrends, history) Cities, states, counties, ZIP codes or neighborhoods, e.g. 'Austin, TX', 'Travis County, TX', '78701', 'Barton Hills, Austin, TX', 'Texas'.",
            "default": [],
            "prefill": [
              "Austin, TX"
            ],
            "sectionCaption": "Region trends",
            "sectionDescription": "One location per entry. Zillow's autocomplete resolves the region type and canonical page."
          },
          "historyMonths": {
            "title": "History months",
            "type": "integer",
            "description": "(mode=regionTrends, history) Months of monthly history to include per metric. Zillow's page carries up to 100 months; larger values are capped at 100.",
            "minimum": 1,
            "maximum": 120,
            "default": 24,
            "prefill": 24
          },
          "historyMetric": {
            "title": "History metric",
            "type": "string",
            "description": "(mode=history) Which monthly series to emit as tidy rows.",
            "editor": "select",
            "enum": [
              "zhvi",
              "zori",
              "both"
            ],
            "enumTitles": [
              "Home values (ZHVI)",
              "Rents (ZORI)",
              "Both (one row per metric)"
            ],
            "default": "zhvi",
            "prefill": "zhvi",
            "sectionCaption": "History",
            "sectionDescription": "Tidy one-row-per-month output for the selected metric."
          },
          "dataset": {
            "title": "Dataset",
            "type": "string",
            "description": "(mode=marketScan) Zillow Research series to scan. Each dataset supports a subset of geographies; the actor tells you if the selected geography is unavailable.",
            "editor": "select",
            "enum": [
              "zhviAllHomes",
              "zhviSingleFamily",
              "zhviCondo",
              "zhviBottomTier",
              "zhviTopTier",
              "zhvi1Bedroom",
              "zhvi2Bedroom",
              "zhvi3Bedroom",
              "zhvi4Bedroom",
              "zhvi5PlusBedroom",
              "zoriAllHomes",
              "zoriSingleFamily",
              "zoriMultiFamily",
              "zhvf1Year",
              "inventory",
              "newListings",
              "newlyPending",
              "medianListPrice",
              "medianSalePrice",
              "saleToListRatio",
              "pctSoldAboveList",
              "pctSoldBelowList",
              "medianDaysToPending",
              "meanDaysToPending",
              "priceCutShare",
              "priceCutAmount",
              "marketHeatIndex",
              "newConstructionSalePrice",
              "newConstructionPricePerSqft",
              "newHomeownerIncomeNeeded",
              "newRenterIncomeNeeded",
              "affordableHomePrice",
              "yearsToSave",
              "newHomeownerAffordability",
              "newRenterAffordability"
            ],
            "enumTitles": [
              "Zillow Home Value Index (ZHVI) - All homes, mid-tier",
              "Zillow Home Value Index (ZHVI) - Single-family homes",
              "Zillow Home Value Index (ZHVI) - Condos and co-ops",
              "Zillow Home Value Index (ZHVI) - Bottom price tier",
              "Zillow Home Value Index (ZHVI) - Top price tier",
              "Zillow Home Value Index (ZHVI) - 1-bedroom homes",
              "Zillow Home Value Index (ZHVI) - 2-bedroom homes",
              "Zillow Home Value Index (ZHVI) - 3-bedroom homes",
              "Zillow Home Value Index (ZHVI) - 4-bedroom homes",
              "Zillow Home Value Index (ZHVI) - 5+ bedroom homes",
              "Zillow Observed Rent Index (ZORI) - All homes plus multifamily",
              "Zillow Observed Rent Index (ZORI) - Single-family homes",
              "Zillow Observed Rent Index (ZORI) - Multifamily homes",
              "Zillow Home Value Forecast (ZHVF) - 1-month, 3-month and 1-year growth",
              "For-sale inventory (smoothed, all homes, monthly)",
              "New listings (smoothed, all homes, monthly)",
              "Newly pending listings (smoothed, all homes, monthly)",
              "Median list price (smoothed, all homes, monthly)",
              "Median sale price (nowcast, all homes, monthly)",
              "Median sale-to-list ratio (smoothed, all homes, monthly)",
              "Share of homes sold above list price",
              "Share of homes sold below list price",
              "Median days to pending (smoothed, all homes, monthly)",
              "Mean days to pending (smoothed, all homes, monthly)",
              "Share of listings with a price cut (smoothed, all homes, monthly)",
              "Mean price cut in dollars (smoothed, all homes, monthly)",
              "Zillow market heat index (all homes, monthly, 0-100)",
              "New construction median sale price (raw, all homes, monthly)",
              "New construction median sale price per square foot (raw, monthly)",
              "Income needed to buy (20% down, all homes, smoothed and seasonally adjusted)",
              "Income needed to rent (all homes, smoothed and seasonally adjusted)",
              "Affordable home price (20% down, all homes, smoothed and seasonally adjusted)",
              "Years to save for a 20% down payment (all homes, smoothed and seasonally adjusted)",
              "New homeowner affordability (20% down, share of income, smoothed and seasonally adjusted)",
              "New renter affordability (share of income, smoothed and seasonally adjusted)"
            ],
            "default": "zhviAllHomes",
            "prefill": "zhviAllHomes",
            "sectionCaption": "Market scan",
            "sectionDescription": "Bulk one-row-per-region output from the Zillow Research CSV catalog."
          },
          "geography": {
            "title": "Geography",
            "type": "string",
            "description": "(mode=marketScan) Region level to scan. Available levels depend on the dataset.",
            "editor": "select",
            "enum": [
              "metro",
              "state",
              "county",
              "city",
              "zip",
              "neighborhood",
              "us"
            ],
            "enumTitles": [
              "Metro area",
              "State",
              "County",
              "City",
              "ZIP code",
              "Neighborhood",
              "United States total"
            ],
            "default": "city",
            "prefill": "city"
          },
          "state": {
            "title": "State filter",
            "type": "string",
            "description": "(mode=marketScan) Keep only regions in this state. 'all' keeps every state.",
            "editor": "select",
            "enum": [
              "all",
              "AL",
              "AK",
              "AZ",
              "AR",
              "CA",
              "CO",
              "CT",
              "DE",
              "FL",
              "GA",
              "HI",
              "ID",
              "IL",
              "IN",
              "IA",
              "KS",
              "KY",
              "LA",
              "ME",
              "MD",
              "MA",
              "MI",
              "MN",
              "MS",
              "MO",
              "MT",
              "NE",
              "NV",
              "NH",
              "NJ",
              "NM",
              "NY",
              "NC",
              "ND",
              "OH",
              "OK",
              "OR",
              "PA",
              "RI",
              "SC",
              "SD",
              "TN",
              "TX",
              "UT",
              "VT",
              "VA",
              "WA",
              "WV",
              "WI",
              "WY",
              "DC"
            ],
            "enumTitles": [
              "All states",
              "Alabama",
              "Alaska",
              "Arizona",
              "Arkansas",
              "California",
              "Colorado",
              "Connecticut",
              "Delaware",
              "Florida",
              "Georgia",
              "Hawaii",
              "Idaho",
              "Illinois",
              "Indiana",
              "Iowa",
              "Kansas",
              "Kentucky",
              "Louisiana",
              "Maine",
              "Maryland",
              "Massachusetts",
              "Michigan",
              "Minnesota",
              "Mississippi",
              "Missouri",
              "Montana",
              "Nebraska",
              "Nevada",
              "New Hampshire",
              "New Jersey",
              "New Mexico",
              "New York",
              "North Carolina",
              "North Dakota",
              "Ohio",
              "Oklahoma",
              "Oregon",
              "Pennsylvania",
              "Rhode Island",
              "South Carolina",
              "South Dakota",
              "Tennessee",
              "Texas",
              "Utah",
              "Vermont",
              "Virginia",
              "Washington",
              "West Virginia",
              "Wisconsin",
              "Wyoming",
              "District of Columbia"
            ],
            "default": "all",
            "prefill": "all"
          },
          "nameContains": {
            "title": "Name contains",
            "type": "string",
            "editor": "textfield",
            "description": "(mode=marketScan) Case-insensitive substring filter on the region name, e.g. 'Travis' or 'Springfield'.",
            "default": "",
            "prefill": ""
          },
          "regionIds": {
            "title": "Region IDs",
            "type": "array",
            "editor": "stringList",
            "description": "(mode=marketScan) Exact Zillow RegionIDs to keep, e.g. '3101'. Values not in the selected dataset are ignored.",
            "default": [],
            "prefill": []
          },
          "sortBy": {
            "title": "Sort and rank by",
            "type": "string",
            "description": "(mode=marketScan) Order rows and assign a 1-based rank over all matches before maxItems truncation.",
            "editor": "select",
            "enum": [
              "sizeRank",
              "regionName",
              "largestValue",
              "smallestValue",
              "biggestGain1m",
              "biggestGain3m",
              "biggestGain6m",
              "biggestGain12m",
              "biggestDecline12m"
            ],
            "enumTitles": [
              "Market size (largest first)",
              "Region name (A-Z)",
              "Highest latest value",
              "Lowest latest value",
              "Biggest 1-month gain",
              "Biggest 3-month gain",
              "Biggest 6-month gain",
              "Biggest 12-month gain",
              "Biggest 12-month decline"
            ],
            "default": "sizeRank",
            "prefill": "sizeRank"
          },
          "maxItems": {
            "title": "Maximum records",
            "type": "integer",
            "description": "Hard cap on emitted records for this run.",
            "minimum": 1,
            "maximum": 20000,
            "default": 200,
            "prefill": 3,
            "sectionCaption": "Output limit",
            "sectionDescription": "The run stops at this many records and says so when it truncates."
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Zillow Housing Data Explorer Output",
        "description": "One dataset with three record types: regionMarketTrends (ZHVI, ZORI, sale and list metrics, forecasts and benchmarks per location), marketHistoryObservation (monthly rows) and marketObservation (ranked Zillow Research rows).",
        "properties": {
          "trends": {
            "type": "string",
            "title": "Zillow housing data",
            "description": "Dataset of Zillow market-trend records.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "title": "Zillow Housing Data",
          "fields": {
            "type": "object",
            "properties": {
              "recordType": {
                "type": "string",
                "description": "regionMarketTrends, marketHistoryObservation or marketObservation"
              },
              "location": {
                "type": "string",
                "description": "Input location string (region modes)"
              },
              "locationType": {
                "type": "string",
                "description": "city, state, county, zip, neighborhood or country"
              },
              "slug": {
                "type": "string",
                "description": "Zillow URL slug"
              },
              "url": {
                "type": "string",
                "description": "Zillow home-values page URL"
              },
              "sourceUrl": {
                "type": "string",
                "description": "Canonical source URL"
              },
              "dataSource": {
                "type": "string",
                "description": "Zillow or Zillow Research"
              },
              "regionId": {
                "type": "number",
                "nullable": true,
                "description": "Zillow region ID"
              },
              "regionName": {
                "type": "string",
                "nullable": true,
                "description": "Zillow region display name"
              },
              "regionType": {
                "type": "string",
                "nullable": true,
                "description": "Zillow region type"
              },
              "regionDisplayName": {
                "type": "string",
                "nullable": true,
                "description": "Display name with state, e.g. Austin, TX"
              },
              "state": {
                "type": "string",
                "nullable": true,
                "description": "Full state name"
              },
              "stateCode": {
                "type": "string",
                "nullable": true,
                "description": "Two-letter state code"
              },
              "county": {
                "type": "string",
                "nullable": true,
                "description": "County name"
              },
              "metro": {
                "type": "string",
                "nullable": true,
                "description": "Metro or CBSA name"
              },
              "city": {
                "type": "string",
                "nullable": true,
                "description": "City name"
              },
              "zhviLatest": {
                "type": "number",
                "nullable": true,
                "description": "Latest Zillow Home Value Index ($)"
              },
              "zhviYoY": {
                "type": "number",
                "nullable": true,
                "description": "ZHVI year-over-year change (decimal, e.g. -0.057 = -5.7%)"
              },
              "zhviAsOf": {
                "type": "string",
                "nullable": true,
                "description": "Date of latest ZHVI value (YYYY-MM-DD)"
              },
              "zhviChange1mPct": {
                "type": "number",
                "nullable": true,
                "description": "ZHVI change vs 1 month earlier, percent"
              },
              "zhviChange3mPct": {
                "type": "number",
                "nullable": true,
                "description": "ZHVI change vs 3 months earlier, percent"
              },
              "zhviChange6mPct": {
                "type": "number",
                "nullable": true,
                "description": "ZHVI change vs 6 months earlier, percent"
              },
              "zhviChange12mPct": {
                "type": "number",
                "nullable": true,
                "description": "ZHVI change vs 12 months earlier, percent"
              },
              "medianListingPrice": {
                "type": "number",
                "nullable": true,
                "description": "Median listing price ($)"
              },
              "forSaleInventory": {
                "type": "number",
                "nullable": true,
                "description": "Active for-sale inventory count"
              },
              "newListings": {
                "type": "number",
                "nullable": true,
                "description": "New listings count"
              },
              "listingAsOf": {
                "type": "string",
                "nullable": true,
                "description": "Date of latest listing metrics (YYYY-MM-DD)"
              },
              "medianSalePrice": {
                "type": "number",
                "nullable": true,
                "description": "Median sale price ($)"
              },
              "saleAsOf": {
                "type": "string",
                "nullable": true,
                "description": "Date of latest sale metrics (YYYY-MM-DD)"
              },
              "saleToListRatio": {
                "type": "number",
                "nullable": true,
                "description": "Median sale-to-list price ratio"
              },
              "pctSellingAboveList": {
                "type": "number",
                "nullable": true,
                "description": "Fraction of homes selling above list price"
              },
              "pctSellingBelowList": {
                "type": "number",
                "nullable": true,
                "description": "Fraction of homes selling below list price"
              },
              "medianDaysToPending": {
                "type": "number",
                "nullable": true,
                "description": "Median days to pending"
              },
              "zoriLatest": {
                "type": "number",
                "nullable": true,
                "description": "Latest Zillow Observed Rent Index ($/month)"
              },
              "zoriAsOf": {
                "type": "string",
                "nullable": true,
                "description": "Date of latest ZORI value (YYYY-MM-DD)"
              },
              "zoriChange1mPct": {
                "type": "number",
                "nullable": true,
                "description": "ZORI change vs 1 month earlier, percent"
              },
              "zoriChange3mPct": {
                "type": "number",
                "nullable": true,
                "description": "ZORI change vs 3 months earlier, percent"
              },
              "zoriChange6mPct": {
                "type": "number",
                "nullable": true,
                "description": "ZORI change vs 6 months earlier, percent"
              },
              "zoriChange12mPct": {
                "type": "number",
                "nullable": true,
                "description": "ZORI change vs 12 months earlier, percent"
              },
              "zhvfGrowth1YrPct": {
                "type": "number",
                "nullable": true,
                "description": "Zillow 1-year home value forecast, percent"
              },
              "zhvfAsOf": {
                "type": "string",
                "nullable": true,
                "description": "Forecast period end date (YYYY-MM-DD)"
              },
              "nationalZhviLatest": {
                "type": "number",
                "nullable": true,
                "description": "National ZHVI benchmark ($)"
              },
              "parentStateZhviLatest": {
                "type": "number",
                "nullable": true,
                "description": "Parent state ZHVI benchmark ($)"
              },
              "parentCountyZhviLatest": {
                "type": "number",
                "nullable": true,
                "description": "Parent county ZHVI benchmark ($)"
              },
              "vsNationalPct": {
                "type": "number",
                "nullable": true,
                "description": "Percent difference from the national ZHVI"
              },
              "vsStatePct": {
                "type": "number",
                "nullable": true,
                "description": "Percent difference from the parent state ZHVI"
              },
              "vsCountyPct": {
                "type": "number",
                "nullable": true,
                "description": "Percent difference from the parent county ZHVI"
              },
              "historyMonths": {
                "type": "integer",
                "nullable": true,
                "description": "Number of monthly history entries included"
              },
              "zhviHistory": {
                "type": "array",
                "nullable": true,
                "description": "Monthly ZHVI history, newest first: [{date, value}]"
              },
              "medianListingPriceHistory": {
                "type": "array",
                "nullable": true,
                "description": "Monthly median listing price history when published: [{date, value}]"
              },
              "rentalHistory": {
                "type": "array",
                "nullable": true,
                "description": "Monthly rental index history, newest first: [{date, zori}]"
              },
              "date": {
                "type": "string",
                "nullable": true,
                "description": "Observation month-end date (history rows)"
              },
              "metric": {
                "type": "string",
                "nullable": true,
                "description": "Metric key (zhvi, zori, marketHeatIndex, ...)"
              },
              "value": {
                "type": "number",
                "nullable": true,
                "description": "Observation value (history rows)"
              },
              "unit": {
                "type": "string",
                "nullable": true,
                "description": "USD, USD/month, USD/year, USD/sqft, percent, fraction, ratio, count, days, index or years"
              },
              "geography": {
                "type": "string",
                "nullable": true,
                "description": "marketScan geography: metro, state, county, city, zip, neighborhood or us"
              },
              "dataset": {
                "type": "string",
                "nullable": true,
                "description": "marketScan dataset key"
              },
              "datasetLabel": {
                "type": "string",
                "nullable": true,
                "description": "Human-readable dataset label"
              },
              "propertyType": {
                "type": "string",
                "nullable": true,
                "description": "Housing cut: allHomes, singleFamily, condo, multiFamily, bottomTier, topTier, bedrooms1-5"
              },
              "sizeRank": {
                "type": "number",
                "nullable": true,
                "description": "Zillow market size rank"
              },
              "latestValue": {
                "type": "number",
                "nullable": true,
                "description": "Latest value in the selected Zillow Research series"
              },
              "latestDate": {
                "type": "string",
                "nullable": true,
                "description": "Date of the latest value (YYYY-MM-DD)"
              },
              "value1MonthAgo": {
                "type": "number",
                "nullable": true,
                "description": "Value 1 month before latestDate"
              },
              "value3MonthsAgo": {
                "type": "number",
                "nullable": true,
                "description": "Value 3 months before latestDate"
              },
              "value6MonthsAgo": {
                "type": "number",
                "nullable": true,
                "description": "Value 6 months before latestDate"
              },
              "value12MonthsAgo": {
                "type": "number",
                "nullable": true,
                "description": "Value 12 months before latestDate"
              },
              "change1mPct": {
                "type": "number",
                "nullable": true,
                "description": "Percent change vs 1 month earlier"
              },
              "change3mPct": {
                "type": "number",
                "nullable": true,
                "description": "Percent change vs 3 months earlier"
              },
              "change6mPct": {
                "type": "number",
                "nullable": true,
                "description": "Percent change vs 6 months earlier"
              },
              "change12mPct": {
                "type": "number",
                "nullable": true,
                "description": "Percent change vs 12 months earlier"
              },
              "forecast1MonthPct": {
                "type": "number",
                "nullable": true,
                "description": "1-month forecast growth, percent (ZHVF)"
              },
              "forecast3MonthPct": {
                "type": "number",
                "nullable": true,
                "description": "3-month forecast growth, percent (ZHVF)"
              },
              "forecast1YearPct": {
                "type": "number",
                "nullable": true,
                "description": "1-year forecast growth, percent (ZHVF)"
              },
              "rank": {
                "type": "number",
                "nullable": true,
                "description": "1-based rank over all matching rows"
              },
              "rankedBy": {
                "type": "string",
                "nullable": true,
                "description": "Sort key used for rank"
              },
              "scrapedAt": {
                "type": "string",
                "description": "ISO 8601 scrape timestamp"
              }
            }
          },
          "views": {
            "marketTrends": {
              "title": "Market Trends",
              "transformation": {
                "fields": [
                  "location",
                  "locationType",
                  "regionName",
                  "zhviLatest",
                  "zhviChange12mPct",
                  "zoriLatest",
                  "medianSalePrice",
                  "medianDaysToPending",
                  "saleToListRatio",
                  "scrapedAt"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "location": {
                    "label": "Location",
                    "format": "text"
                  },
                  "locationType": {
                    "label": "Type",
                    "format": "text"
                  },
                  "regionName": {
                    "label": "Zillow region",
                    "format": "text"
                  },
                  "zhviLatest": {
                    "label": "Home value $",
                    "format": "number"
                  },
                  "zhviChange12mPct": {
                    "label": "12m change %",
                    "format": "number"
                  },
                  "zoriLatest": {
                    "label": "Rent $/mo",
                    "format": "number"
                  },
                  "medianSalePrice": {
                    "label": "Median sale $",
                    "format": "number"
                  },
                  "medianDaysToPending": {
                    "label": "Days to pending",
                    "format": "number"
                  },
                  "saleToListRatio": {
                    "label": "Sale/list",
                    "format": "number"
                  },
                  "scrapedAt": {
                    "label": "Scraped at",
                    "format": "text"
                  }
                }
              }
            },
            "history": {
              "title": "History",
              "transformation": {
                "fields": [
                  "location",
                  "metric",
                  "date",
                  "value",
                  "unit",
                  "regionId"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "location": {
                    "label": "Location",
                    "format": "text"
                  },
                  "metric": {
                    "label": "Metric",
                    "format": "text"
                  },
                  "date": {
                    "label": "Date",
                    "format": "text"
                  },
                  "value": {
                    "label": "Value",
                    "format": "number"
                  },
                  "unit": {
                    "label": "Unit",
                    "format": "text"
                  },
                  "regionId": {
                    "label": "Region ID",
                    "format": "number"
                  }
                }
              }
            },
            "marketScan": {
              "title": "Market Scan",
              "transformation": {
                "fields": [
                  "geography",
                  "datasetLabel",
                  "regionName",
                  "state",
                  "latestValue",
                  "latestDate",
                  "change12mPct",
                  "rank"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "geography": {
                    "label": "Geography",
                    "format": "text"
                  },
                  "datasetLabel": {
                    "label": "Dataset",
                    "format": "text"
                  },
                  "regionName": {
                    "label": "Region",
                    "format": "text"
                  },
                  "state": {
                    "label": "State",
                    "format": "text"
                  },
                  "latestValue": {
                    "label": "Latest value",
                    "format": "number"
                  },
                  "latestDate": {
                    "label": "As of",
                    "format": "text"
                  },
                  "change12mPct": {
                    "label": "12m change %",
                    "format": "number"
                  },
                  "rank": {
                    "label": "Rank",
                    "format": "number"
                  }
                }
              }
            }
          }
        }
      }
    },
    "buildNumber": "1.1.1",
    "imageDigest": "ab09e13729f7578ef52c226feba7ec0678bafdfddd16d474e9e69d61609a1570",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.1"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.01129
    }
  }
}