Zillow Market Data Scraper — ZHVI · Rent · Mortgage Rates avatar

Zillow Market Data Scraper — ZHVI · Rent · Mortgage Rates

Pricing

from $3.75 / 1,000 market metric extracteds

Go to Apify Store
Zillow Market Data Scraper — ZHVI · Rent · Mortgage Rates

Zillow Market Data Scraper — ZHVI · Rent · Mortgage Rates

Pull Zillow's ZHVI home value index, rent appreciation history, and current mortgage rates for any US metro or zipcode. Tidy-long output — one row per metric × period — drops cleanly into BigQuery, Snowflake, or pandas. Built for REITs, funds, and PropTech analytics teams.

Pricing

from $3.75 / 1,000 market metric extracteds

Rating

0.0

(0)

Developer

SIÁN OÜ

SIÁN OÜ

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Share

Zillow Market Data Scraper — ZHVI · Rent · Mortgage Rates 🚀

SIÁN Agency Store SIÁN Zillow Property Scraper SIÁN Realtor.com Scraper SIÁN Redfin Scraper

🎉 NEW: 200 rows per query — ZHVI + rent + mortgage in one tidy-long feed

Built for REIT analysts, PropTech engineers, and real-estate fund ETL teams who need normalized housing-market data without ATTOM-tier minimums.


📋 Overview

The macro-data feed real-estate engineers actually want — pull Zillow's ZHVI home value index, rent appreciation history, and current mortgage rates for any US metro, city, or zipcode in one normalized stream.

Why thousands of data teams choose us:

  • 3 endpoints in one feed: ZHVI history + rent appreciation + mortgage rates — no juggling three actors
  • ~200 rows per area query: 106 housing + 85 rental + 16 mortgage rows, one call
  • 🎯 Tidy-long output: one row per (source × metric × period × location) — drops straight into BigQuery, Snowflake, pandas
  • 💰 ~$1.00 per metro query at BRONZE: order of magnitude below ATTOM, HouseCanary, Black Knight, CoreLogic monthly minimums
  • 💎 100 monthly ZHVI data points per metro (~8 years of history) + 47-bucket rent histogram + 16 daily mortgage products
  • NEW: Full FREE-tier sample — no row truncation, evaluate the complete time-series before you scale

✨ Features

  • 🏠 ZHVI Time-Series: 100 monthly Zillow Home Value Index points per metro for performance attribution and trend analysis
  • 🏘️ Rent Appreciation Feed: 12-month median rent history + 47-bucket rent price histogram + 6 nearby-area comps + 10 zipcode trends
  • 💰 16 Mortgage Products: 30yr fixed, 15yr fixed, 20yr, 10yr, FHA, VA, ARM, Jumbo — refreshed with daily rate + APR + points
  • 📊 Tidy-Long Output: Primary-key-ready (source_type, location_id, metric_name, period_start) — no nested-blob parsing
  • 🗺️ Any US Location: Metro names (Austin, TX), city + state, or 5-digit zipcodes (90210, 10001) — all supported
  • ⚙️ Per-Source Toggles: Switch off endpoints you don't need to control row counts and spend
  • 📥 Batch Mode: Process dozens of metros in a single run — perfect for portfolio-wide market refreshes
  • 📈 HTML Run Report: Per-location and per-metric row-count summary saved to key-value store
  • 🔁 Stable IDs: locationId is stable across runs — re-join over time without fuzzy matching
  • 🌎 US-Wide Coverage: National mortgage rates + every metro, city, and zipcode in Zillow's research footprint

🎬 Quick Start

Pick one or more US metros, cities, or zipcodes. Run. Get ~200 normalized rows per query — ready to load into your warehouse.

curl -X POST https://api.apify.com/v2/acts/sian.agency~zillow-market-analytics-scraper/runs?token=YOUR_TOKEN \
-d '{"searchQueries": ["Austin, TX"]}'

🚀 Getting Started (3 Simple Steps)

Step 1: Pick your areas

Add one or more US metros, cities, or zipcodes to searchQueries. Examples: Austin, TX · Brooklyn, NY · 90210 · San Francisco, CA.

Step 2: Choose your endpoints

Toggle includeHousingMarket, includeRentalMarket, and includeMortgageRates based on which feed you need. All three default to true.

Step 3: Run the actor

Hit Run on Apify Store, or call the API. Results land in the default dataset as tidy-long rows — ready for SQL, pandas, or your BI tool.

That's it! In under 60 seconds, you'll have:

  • ~106 housing-market rows per metro (ZHVI history + sale-side dynamics)
  • ~85 rental-market rows per metro (rent histogram + comps + trends)
  • 16 national mortgage-rate rows (one per loan product)

📥 Input Configuration

FieldTypeRequiredDescription
searchQueriesarrayYesUS metros, cities, or zipcodes to pull market data for
includeHousingMarketboolNoToggle ZHVI history + sale-side dynamics (default true)
includeRentalMarketboolNoToggle rent histogram + appreciation + comps (default true)
includeMortgageRatesboolNoToggle daily national mortgage rate snapshot (default true)

Example:

{
"searchQueries": ["Austin, TX"]
}

Batch Processing:

{
"searchQueries": ["Austin, TX", "Brooklyn, NY", "90210", "San Francisco, CA"],
"includeHousingMarket": true,
"includeRentalMarket": true,
"includeMortgageRates": true
}

📤 Output

Results are saved to the Apify dataset with 14+ fields per row in tidy-long shape:

FieldTypeDescription
sourceTypestringWhich endpoint produced this row — housing_market, rental_market, or current_mortgage_rates
metricNamestringCanonical metric identifier — zhvi, medianRent, mortgageRate30YrFixed, medianDaysToPending, etc.
metricValuenumberNumeric value (price, rate, count, percent)
unitstringDisplay unit — usd, percent, count, days, usd_per_month
currencystringISO 4217 currency code (USD in v1.0)
periodStartstringISO-8601 period start date
periodEndstringISO-8601 period end date
locationIdstringStable Zillow / realtyAPI area identifier — safe primary key
locationLabelstringHuman-readable location (Austin, TX, 10001, Brooklyn, NY)
locationTypestringcity, zipcode, metro, state, or national
bucketLabelstringHistogram bucket label for rent-price distribution rows
queryInputstringVerbatim user input that generated this row
fetchedAtstringISO-8601 timestamp when upstream returned the row
extraobjectOriginal blob fragment kept for full traceability

Example row (ZHVI history point):

{
"sourceType": "housing_market",
"metricName": "zhvi",
"metricValue": 511263.62,
"unit": "usd",
"currency": "USD",
"periodStart": "2026-04-01",
"periodEnd": "2026-04-30",
"locationId": "10221",
"locationLabel": "Austin, TX",
"locationType": "city",
"queryInput": "Austin, TX",
"fetchedAt": "2026-05-21T08:42:33.182Z"
}

Export to JSON, CSV, Excel, or XML directly from the Apify dataset — or stream via the Apify API into your warehouse of choice.


💼 Use Cases & Examples

1. ZHVI Time-Series Feed for REIT Analytics

REIT analysts loading 100 monthly ZHVI data points per metro into BigQuery for portfolio performance attribution.

Input: List of metros where the trust holds properties. Output: Tidy-long ZHVI history + sale dynamics per metro, ready for SQL JOIN against portfolio holdings. Use: Quarterly performance attribution decks, NAV calculations, geographic risk dashboards.

2. Rent Appreciation Tracking for PropTech

Build-to-rent investment platforms tracking 12-month median rent + 47-bucket rent histogram per zipcode for underwriting models.

Input: Target acquisition zipcodes. Output: Rent appreciation curves + price distributions + nearby comps. Use: Auto-refresh PropTech dashboards that show rent trajectory and competitive density.

3. Mortgage Rate Snapshots for Affordability Calculators

Fintech and brokerage teams refreshing 16 loan products daily (30yr fixed, 15yr fixed, FHA, VA, ARM, Jumbo) for customer-facing affordability widgets.

Input: Toggle includeMortgageRates: true. Output: 16 national rate rows per run — rate + APR + points + loan type. Use: Mortgage calculators, pre-qual tools, customer-facing rate tickers.

4. Market Comp Analysis for Real Estate Funds

Acquisition teams at private real-estate funds pulling nearby-area rent comps and zipcode trends for diligence on new markets.

Input: Target metros under evaluation. Output: 6 nearby-area comps + 10 zipcode trends per query. Use: Acquisition memos, market-entry diligence, comp pricing.

5. Macro Real-Estate Dashboards for MLS Resellers

MLS data resellers and market-intelligence vendors building dashboards on Zillow's research footprint — without ATTOM-tier monthly minimums.

Input: Bulk list of metros the dashboard covers. Output: Normalized ZHVI + rent + mortgage feeds at ~$1 per metro query. Use: Replace $500–$5000/mo ATTOM, HouseCanary, Black Knight, CoreLogic contracts with on-demand calls.

6. Affordability Index Research

Housing-policy researchers and economists combining ZHVI, median rent, and 30yr-fixed rates to compute metro-level affordability indexes over time.

Input: Set of metros being studied. Output: Aligned home-value + rent + mortgage rows on a single periodStart axis. Use: Academic papers, policy briefs, public-facing housing indexes.

7. Geographic Cohort Analysis for Portfolio Risk

Real estate hedge funds stress-testing geographic concentration via ZHVI cohort trends and rent appreciation deltas.

Input: Top-25 metros by exposure. Output: Tidy-long history per metro, ready for cohort joins. Use: Risk committee reports, hedging strategy, allocation rebalancing.


🔗 Integration Examples

JavaScript/Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('sian.agency/zillow-market-analytics-scraper').call({
searchQueries: ['Austin, TX', 'Brooklyn, NY'],
includeHousingMarket: true,
includeRentalMarket: true,
includeMortgageRates: true
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('sian.agency/zillow-market-analytics-scraper').call(
run_input={
'searchQueries': ['Austin, TX', 'Brooklyn, NY'],
'includeHousingMarket': True,
'includeRentalMarket': True,
'includeMortgageRates': True
}
)
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item)

cURL

curl -X POST 'https://api.apify.com/v2/acts/sian.agency~zillow-market-analytics-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"searchQueries": ["Austin, TX", "Brooklyn, NY"]}'

Automation Workflows (n8n / Zapier / Make)

  1. Trigger: Schedule (e.g. monthly on ZHVI release day) or webhook
  2. HTTP Request: Call the Apify Actor API with your metro list
  3. Process: Parse the tidy-long JSON rows
  4. Action: Stream into BigQuery / Snowflake / Postgres, push KPIs to Slack, or refresh a Looker / Metabase dashboard

📊 Performance & Pricing

FREE Tier (Try It Now)

  • 1 area query per run — full ~200 rows, no truncation
  • Complete time-series sample (all 100 ZHVI points, full rent histogram, all 16 mortgage products)
  • No credit card required
  • Perfect for evaluating data quality before scaling
  • Unlimited area queries per run
  • 6-tier volume ladder — bigger refreshes get cheaper per row
  • Pay-per-event: charged per metric row delivered, not per failed call
TierPer Row (market-metric-extracted)Per Run (apify-actor-start)
FREE$0.015$0.050
BRONZE$0.005$0.005
SILVER$0.00438$0.005
GOLD$0.00375$0.005
PLATINUM$0.0025$0.005
DIAMOND$0.0015$0.005

💰 Headline math: ~200 rows per metro × $0.005 BRONZE = ~$1.00 per metro query — an order of magnitude below the $500–$5000/mo minimums charged by ATTOM, HouseCanary, Black Knight, and CoreLogic for equivalent normalized feeds.

🔗 View live pricing


❓ Frequently Asked Questions

Q: What's "tidy-long" and why does it matter? A: One row per (source × metric × period × location). It's the shape data engineers, BI tools, and SQL warehouses expect. You can GROUP BY metricName or JOIN on locationId directly — no nested-blob parsing, no preprocessing step.

Q: How fresh is the data? A: ZHVI is published monthly by Zillow Research — we surface their latest release. Rent statistics refresh monthly. Mortgage rates are snapshot daily (priced to the previous business day).

Q: How many areas can I process per run? A: FREE tier: 1 area query (~200 complete rows). PAID tiers: unlimited — batch dozens of metros in one call.

Q: Can I query specific zipcodes? A: Yes — pass any valid US 5-digit zipcode in searchQueries (e.g. ["10001", "90210"]). City queries (Austin, TX) also return ten constituent zipcodes via the rental endpoint.

Q: What output formats are available? A: JSON, CSV, Excel (XLSX), and XML — export directly from the Apify dataset, or stream rows via the Apify API.

Q: How is this different from per-property scrapers? A: This actor delivers area-level macro data (metro / city / zipcode aggregates). For per-property data (Zestimate history, tax history, listing details), use Zillow Property Scraper — different row shape entirely.

Q: Is this legal? A: Yes — we extract only publicly available Zillow research data. See the Legal section below.

Q: How long does processing take? A: Typically 10–30 seconds per area query. Mortgage rates run once per execution regardless of query count.


🐛 Troubleshooting

No rows returned for a city query

  • Verify the city + state format: Austin, TX (city name, comma, two-letter state). Austin Texas will not resolve.
  • Try a zipcode instead: small towns may not be covered by Zillow research; the nearest zipcode usually is.

Mortgage row count looks low

  • current_mortgage_rates runs once per execution regardless of how many areas you query — that produces 16 national rows, not 16 per area. Toggle off includeMortgageRates if you only need housing + rental data.

Some rows have null in metricValue

  • Expected for inventory rows that carry only metadata (e.g. nearbyArea lookups). Filter metricValue IS NOT NULL in your warehouse if you only want numeric metrics.

Run finished but row count is lower than expected

  • Toggle settings: each include* flag drops the row count by ~85–106 rows per area. Re-enable to get the full ~200-row sample.

FREE-tier run capped at one area

  • That's by design — FREE shows a complete sample (all rows for one area, no truncation). Upgrade to BRONZE for unlimited batch queries.

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the legality of web scraping.


⚠️ Trademark Disclaimer

This is an independent tool created by SIÁN Agency. We are not affiliated with, endorsed by, or sponsored by Zillow Group, Inc. "Zillow", "ZHVI" (Zillow Home Value Index), and related marks are trademarks of Zillow Group, Inc. used here under nominative fair use for descriptive purposes only. This actor pulls publicly available Zillow research data and reformats it into a normalized row stream — it does not replicate, mirror, or republish Zillow's proprietary applications.


🤝 Support

Telegram Support

Join our active support community


Built by SIÁN Agency | More Tools