Zillow & Redfin Property Data Scraper
Pricing
$0.004 / property lookup
Zillow & Redfin Property Data Scraper
Look up any US home by street address and get consolidated property facts — beds, baths, sqft, year built, lot size, and property type — from Redfin and Zillow. Pay per match; misses are free.
Pricing
$0.004 / property lookup
Rating
0.0
(0)
Developer
ScrapeBench
Maintained by CommunityActor stats
1
Bookmarked
49
Total users
3
Monthly active users
1.1 hours
Issues response
10 days ago
Last modified
Categories
Share
Pain points
- You have a street address but need the property's facts — valuation, price history, tax assessment, beds, baths, sqft — as structured data, not a web page you have to read by hand.
- Redfin and Zillow block plain HTTP requests (TLS/browser fingerprinting + WAFs), so a simple
fetchor a datacenter proxy just returns 403/429. - Every listing site names and nests its fields differently, so consolidating an address into a single clean record means bespoke parsing per site.
What we solve
- Give it one US street address; it returns that property's consolidated record as a single clean JSON object — 40 fields, from the Redfin Estimate and full price history to tax assessment, assigned schools and climate-risk scores.
- Drives a real browser so it gets past the fingerprint/WAF blocks that stop plain HTTP scrapers, then reads each site's structured data directly.
- Normalizes every site into one schema — unknown fields are omitted, never guessed, so a null never has to be told apart from a real zero.
- Charges only when it finds a real match (address + city + ZIP); a not-found or blocked lookup is free.
Summary
Turn a street address into a full structured property record. Give this actor a US address — or a whole list of them in one run — and each returns up to 40 fields as one clean JSON object: the Redfin Estimate (Redfin's own AVM), current or last-sold price and price-per-sqft, the complete listed/sold/price-change history with dates, county tax assessment (land, improvement, taxes due, roll year), beds, baths, sqft, year built and renovated, stories, lot size, property type, latitude/longitude, county, FIPS, APN and MLS number, the agent's listing description, assigned schools with GreatSchools ratings, First Street climate-risk scores for flood/fire/heat/wind/air, grouped MLS amenities, and the listing's photo gallery as full-size image URLs. It drives a real browser so it gets past the browser-fingerprint and WAF blocks that defeat plain HTTP scrapers, then reads each site's own structured data and normalizes it to a single schema. Built for property-management onboarding, real-estate CRM enrichment, valuation/comp workflows, and any app that needs to auto-fill a property record from just an address. Addresses in, structured facts out — one row per address, and you pay only for matches.
Who it's for
- Property-management and PropTech teams auto-filling a property form from just an address
- Real-estate CRMs and marketplaces enriching listings/leads with structured home facts
- Analysts and investors building valuation, comp, and underwriting datasets
- Developers who need a simple address-to-property-facts API without maintaining browser scrapers
How to use
Set the input, run the actor, and collect results from the run's dataset (export to JSON/CSV/Excel, or pull via the Apify API). Example input:
{"address": "745 Garland Dr, Palo Alto, CA 94303","source": "auto","useProxy": false}
See Inputs below for every available field.
What you get
One row per record:
| Field | Description |
|---|---|
found | true when a property with address + city + ZIP was resolved; false when this source has no match or was blocked |
source | Which site produced the record ('redfin' or 'zillow') — with source 'auto', the one that actually answered |
data.address | Street line only, e.g. '745 Garland Dr' |
data.city | City |
data.state | 2-letter state code, e.g. 'CA' |
data.zip | ZIP code |
data.county | County the property record belongs to, e.g. 'Santa Clara County' (Redfin) |
data.estimatedValue | The Redfin Estimate — Redfin's own automated valuation for the home, in whole dollars (Redfin only; there is no valuation on the Zillow path) |
data.price | Asking price for an active listing, or the last sold price for an off-market home — data.priceLabel says which |
data.priceLabel | What data.price means: 'Price' (currently asking) or 'Last Sold Price' |
data.pricePerSqft | Price per square foot as the source reports it |
data.lastSoldDate | Date of the most recent sale, YYYY-MM-DD |
data.status | Listing status, e.g. 'Active', 'Sold', 'Off Market' |
data.priceHistory | Ordered array of { date, event, price } covering listed / sold / price-change / delisted events, newest first (Redfin) |
data.taxAssessedValue | County assessed value — the sum of assessed land and improvement |
data.taxAssessedLand | Assessed value of the land alone |
data.taxAssessedImprovement | Assessed value of the structure alone |
data.taxesDue | Property taxes due for the assessment year |
data.taxYear | Assessment roll year the tax figures come from |
data.beds | Number of bedrooms |
data.baths | Number of bathrooms (may be fractional, e.g. 2.5) |
data.fullBaths | Count of full bathrooms |
data.halfBaths | Count of half/partial bathrooms |
data.sqft | Living area in square feet |
data.stories | Number of storeys |
data.yearBuilt | Year the home was built |
data.yearRenovated | Year of the most recent recorded renovation |
data.lotSizeSqft | Lot size in square feet (acres are converted to sqft) |
data.propertyType | Property type, e.g. 'Single Family Residential', 'Condo' |
data.latitude | Latitude of the property |
data.longitude | Longitude of the property |
data.fips | 5-digit county FIPS code — the join key for census and county datasets |
data.apn | Assessor's parcel number — the join key for county assessor records |
data.mlsId | MLS listing number, when the home has an MLS record |
data.description | The listing agent's own marketing description of the home, as published on the listing |
data.listingAgent | Name of the listing agent as published on the listing page |
data.listingBroker | Name of the listing brokerage |
data.schools | Assigned schools as an array of { name, type, grades, rating, distanceMiles, students }; rating is the GreatSchools 1-10 score |
data.riskFactors | First Street climate risk as { flood, fire, heat, wind, air }, each { score, summary } with score on First Street's 1-10 scale |
data.amenities | MLS amenities grouped by section, e.g. { "Parking": { "Garage Spaces": "2" }, "Interior": { ... } } |
data.sourceUrl | Link to the source listing/record page |
data.images | Listing photo gallery as an ordered array of { url, width, height } (url is the full-size CDN image; [0] is the hero). Empty array when the listing has no gallery — e.g. many off-market/sold homes |
Sample:
{"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.0,"taxAssessedImprovement": 1952156,"taxAssessedLand": 5577593,"taxAssessedValue": 7529749,"taxYear": 2025,"taxesDue": 91413.72,"yearBuilt": 2012,"yearRenovated": 2012,"zip": "94303"}}
Inputs
| Field | Required | Type | Default | Description |
|---|---|---|---|---|
address | no | string | "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 | no | array | ["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 | no | string | "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 | no | boolean | 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 Event)
You pay per result (property-lookup) — no charge for empty runs. Example: 100 matched property lookup at $0.004/result ≈ $0.40.
Illustrative — 100 matched lookups at $0.004 each. Not-found/blocked lookups are free. Apify platform usage (compute) is billed separately per your plan.
Use cases
- Auto-add property — type an address, prefill a property form with beds, baths, sqft, year built, lot size, and type.
- CRM / listing enrichment — turn an address into a structured property record for a database or marketplace.
- Valuation & comps — assemble per-address home facts for pricing, underwriting, or comparison workflows.
- Address-to-facts API — call it per address from your app instead of building and maintaining Redfin/Zillow scrapers.
Why this actor
- One call returns the whole record — valuation, price history, tax assessment, structure, schools, climate risk and photos — instead of the handful of physical facts an address lookup usually gives you.
- Reads Redfin's and Zillow's own structured data, then normalizes to one clean schema — not a brittle screen-scrape of visible text.
- Drives a real browser, so it gets past the browser-fingerprint and WAF blocks that return 403/429 to plain HTTP scrapers and datacenter proxies.
- Honest output: only address+city+ZIP-complete matches count as found; unknown fields are omitted (never null/0/guessed); you pay only for matches.
- Ships the join keys — APN, FIPS, county and lat/long — so a record lines up with county assessor and census data instead of dead-ending at a street address.
Limitations & updates
The full 40-field record comes from Redfin, which is the reliable path and works without a proxy. Zillow sits behind PerimeterX, needs the residential proxy option, can still be rate-limited, and returns only the core physical facts — there is no Redfin Estimate, price history, tax, school or climate data on the Zillow path. Source 'auto' tries Redfin first and only adds Zillow when the proxy is on, since a direct Zillow attempt is near-certain to be blocked; pick a single source to pin the lookup. Not every field is present on every home: valuation, status and geo come back on effectively any resolvable address, while tax assessment needs a public county record and MLS number, listing description and agent need an MLS record — an off-market or never-listed home simply omits those keys rather than returning nulls. Values are passed through as the source publishes them, so a source-side error (a wrong county on an atypical property, a stale assessment year) is reproduced rather than corrected. Photos come from the listing's own gallery, so a home with no gallery (e.g. many off-market/sold listings) returns an empty images array. A result missing address, city, or ZIP is reported as not-found rather than a partial record. It resolves one property per call from a full street address; it is not a bulk area/ZIP crawler.
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 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.
Which actor to choose
Owning or managing a property usually means hiring the people who work on it — verify and find them:
- Multi-State Contractor & Trade License Lookup — You're hiring a contractor to work on the property — verify their license across states before you sign.
- California Contractor Directory & Leads Scraper (CSLB) — You need licensed contractors by trade and county for work on a California property.
Guides & use cases
Written up on scrapebench.dev — the bench that runs and verifies this actor against the live source every night:
- How-to: How to run Zillow & Redfin Property Data Scraper
- Use case: Auto-fill a Property Form from Just an Address
More actors, coverage and nightly verification results: scrapebench.dev