← Health board

Zillow & Redfin Property Data Scraper

Look up any US home by street address and get 40 structured fields — Redfin Estimate, price history, tax assessment, beds/baths/sqft, schools, climate risk, amenities and photos — from Redfin and Zillow. Pay per match; misses are free.

100%golden-diff pass
Run it on Apify verified nightly

Verification

100%golden-diff success
436canary runs
0days since last canary run

Output fields

Authoritative field set from the dataset schema.

FieldType
querystring|null
foundboolean|null
sourcestring|null
addressstring|null
citystring|null
statestring|null
zipstring|null
bedsinteger|null
bathsnumber|null
sqftinteger|null
yearBuiltinteger|null
lotSizeSqftinteger|null
propertyTypestring|null
sourceUrlstring|null
estimatedValueinteger|null
priceinteger|null
priceLabelstring|null
pricePerSqftnumber|null
lastSoldDatestring|null
statusstring|null
latitudenumber|null
longitudenumber|null
countystring|null
fipsstring|null
apnstring|null
mlsIdstring|null
storiesnumber|null
yearRenovatedinteger|null
fullBathsinteger|null
halfBathsinteger|null
taxAssessedValueinteger|null
taxAssessedLandinteger|null
taxAssessedImprovementinteger|null
taxesDuenumber|null
taxYearinteger|null
descriptionstring|null
listingAgentstring|null
listingBrokerstring|null
priceHistoryarray|null
amenitiesobject|null
schoolsarray|null
riskFactorsobject|null
imagesarray|null

Sample row

{
  "found": true,
  "source": "redfin",
  "data": {
    "address": "745 Garland Dr",
    "amenities": {
      "Interior": {
        "# of Baths (1/2)": "1",
        "# of Baths (Full)": "4"
      },
      "Parking": {
        "Garage (Maximum)": "2",
        "Garage (Minimum)": "2"
      }
    },
    "apn": "00361019",
    "baths": 4.5,
    "beds": 5,
    "city": "Palo Alto",
    "county": "Santa Clara County",
    "description": "This home checks all the boxes for Silicon Valley living. New construction completed just 6 years ago, a separate home for extended family or rental income, a central courtyard wit ...",
    "estimatedValue": 8608047,
    "fips": "06085",
    "fullBaths": 4,
    "halfBaths": 1,
    "images": [
      {
        "url": "https://ssl.cdn-redfin.com/photo/8/bigphoto/261/ML81715261_8.jpg",
        "width": 1440,
        "height": 960
      }
    ],
    "lastSoldDate": "2018-08-09",
    "latitude": 37.4377962,
    "listingAgent": "Jennifer Buenrostro",
    "listingBroker": "Compass",
    "longitude": -122.133369,
    "lotSizeSqft": 12722,
    "mlsId": "ML81715261",
    "price": 6750000,
    "priceHistory": [
      {
        "date": "2018-08-09",
        "event": "Sold (MLS)",
        "price": 6750000
      },
      {
        "date": "2018-08-09",
        "event": "Sold (Public Records)",
        "price": 6750000
      }
    ],
    "priceLabel": "Last Sold Price",
    "pricePerSqft": 2094,
    "propertyType": "Single Family Residential",
    "riskFactors": {
      "flood": {
        "score": 1,
        "summary": "Minimal risk of a flood reaching the building in the next 30 years"
      },
      "fire": {
        "score": 1,
        "summary": "Unlikely to be in a wildfire in next 30 years"
      }
    },
    "schools": [
      {
        "distanceMiles": "0.6",
        "grades": "K-5",
        "name": "Walter Hays Elementary School",
        "rating": 9,
        "students": 305,
        "type": "Public"
      },
      {
        "distanceMiles": "0.1",
        "grades": "6-8",
        "name": "Frank S. Greene Jr. Middle",
        "rating": 9,
        "students": 732,
        "type": "Public"
      }
    ],
    "sourceUrl": "https://www.redfin.com/CA/Palo-Alto/745-Garland-Dr-94303/home/1210666",
    "sqft": 4110,
    "state": "CA",
    "status": "Sold",
    "stories": 2,
    "taxAssessedImprovement": 1952156,
    "taxAssessedLand": 5577593,
    "taxAssessedValue": 7529749,
    "taxYear": 2025,
    "taxesDue": 91413.72,
    "yearBuilt": 2012,
    "yearRenovated": 2012,
    "zip": "94303"
  }
}

Inputs

FieldTypeReqDefaultDescription
address string no "745 Garland Dr, Palo Alto, CA 94303" Full US property address, e.g. '745 Garland Dr, Palo Alto, CA 94303'. To look up several properties, use 'Property addresses' below — one run handles the whole list on a single browser, which is faster and cheaper than a run per address.
addresses array no ["745 Garland Dr, Palo Alto, CA 94303","1600 Amphitheatre Pkwy, Mountain View, CA 94043"] Look up many properties in ONE run. Each address is scraped on the same warm browser and pushed as its own row, so a batch is substantially faster than starting a run per address. Combined with 'Property address' if you fill both, and duplicates are removed. Billing is unchanged: you are charged per matched property, not per address submitted.
source string no "auto" Which site to look the property up on. 'Auto' tries Redfin first and only falls back to Zillow when the residential proxy is on (Zillow is PerimeterX-gated, so a direct attempt just wastes time). Pick a single source to pin the lookup to it.
useProxy boolean no false Route the browser through Apify residential proxy. Default off (direct). Turn on only for IP rate-limiting at volume or to help pass Zillow's PerimeterX.

Pricing

Pay per result (property-lookup) — no charge for empty runs.
Example: 100 matched property lookup at $0.004/result ≈ $0.40.

FAQ

What do I give it and what do I get back?

You give it a US street address. It returns one JSON record with up to 40 fields — the Redfin Estimate, price and price history, tax assessment, beds, baths, sqft, year built, lot size, property type, county/FIPS/APN, lat/long, MLS number, listing description and agent, assigned schools, climate-risk scores, amenities, and the photo gallery — or { "found": false } if no source has a match.

Does it return the Redfin Estimate / a valuation?

Yes — data.estimatedValue is the Redfin Estimate, Redfin's own automated valuation, in whole dollars. It came back on every address we tested, including sold and off-market homes. It is Redfin's number, not ours and not a Zestimate; the Zillow path has no valuation field.

Which sources are supported?

Redfin and Zillow. Redfin is the reliable path, works without a proxy, and is where the full 40-field record comes from. Zillow sits behind PerimeterX and returns only the core physical facts; enable the residential proxy option to reach it. The default source 'auto' tries Redfin first, and adds Zillow as a fallback only when the proxy is on.

How am I charged?

Pay-per-event: one charge per successful lookup (a match with address, city, and ZIP). Not-found or blocked lookups are free, so you never pay for a miss.

Why does it need a real browser?

Redfin and Zillow block plain HTTP requests on TLS/browser fingerprint (not just IP), so curl, a bare fetch, and datacenter proxies all get 403/429. Driving a real browser gets past that and reads each site's own structured data.

Do I need a proxy?

No for Redfin (it works direct at low volume). For Zillow, or for higher volume, turn on the residential proxy option; there's a useProxy input for exactly this.

Does it return listing photos?

Yes — the data.images array gives the listing's photo gallery as full-size image URLs in order (the first is the hero), each with width and height. The URLs are public CDN links you can load directly in an <img> tag. A home with no gallery (many off-market/sold listings) returns an empty array; photos are supported on Redfin today.

Is this personal data?

It returns public property facts, plus the listing agent's and brokerage's names exactly as they are published on the public listing page — that is business contact information, not private data. It does no owner lookup and adds no PII enrichment: there is no owner name, phone, email, or occupant data in the output.

Why are some fields missing from my result?

Unknown fields are omitted rather than returned as null or 0, so what is present is real. Valuation, status, geo and county come back on effectively any resolvable address. Tax assessment needs a public county record, and MLS number, listing description and agent need an MLS record — a never-listed or off-market home simply won't have those keys.

How current is the data?

It reflects each site's live data at run time, so the facts are as current as Redfin's/Zillow's own published records. Values are passed through as published — including the assessment roll year in data.taxYear, which is whatever the county last filed rather than the current year.

Guides & use cases

Related actors