Zillow & Redfin Property Data Scraper avatar

Zillow & Redfin Property Data Scraper

Pricing

$0.004 / property lookup

Go to Apify Store
Zillow & Redfin Property Data Scraper

Zillow & Redfin Property Data Scraper

Look up any US home by street address — city or rural — and get up to 50 structured fields: Redfin Estimate, price and tax history, beds/baths/sqft, listing agent phone, schools, FEMA flood zone, climate risk, from Redfin and Zillow, with Realtor.com as an option. Pay per match; misses are free.

Pricing

$0.004 / property lookup

Rating

0.0

(0)

Developer

ScrapeBench

ScrapeBench

Maintained by Community

Actor stats

1

Bookmarked

91

Total users

30

Monthly active users

2 days ago

Last modified

Categories

Features

Limited permissions

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 fingerprint their visitors (TLS/browser fingerprinting, Zillow's PerimeterX "Press & Hold" wall), so a simple fetch 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.
  • Uses a real browser for Redfin and a Chrome-fingerprinted client over residential IPs for Zillow, 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.
  • Optional Realtor.com: source 'all' merges Realtor.com into the same row (its own value estimate and range, agent email, HOA fee, list date), and source 'realtor' looks Realtor.com up alone. Realtor.com pages only open through Apify's Web Fetch service, which the run calls with your Apify account, so Apify bills you for it separately (about $0.0015 per Realtor page on the Free plan). This actor's own price is unchanged.

Summary

Turn a street address into a full structured property record. Give this actor a US address — in a city or a small rural town, one or a whole list per run — and each returns up to 50 fields as one clean JSON object: the Redfin Estimate (Redfin's own AVM), current or last-sold price and its price-per-sqft, the complete listed/sold/price-change history with dates, MLS numbers and annual appreciation between sales, up to 17 years of county tax history plus the latest assessment (land, improvement, taxes due, roll year), beds, baths, sqft, year built, stories, lot size, property type, the county's own public-record beds/baths/sqft next to the listing's (they often disagree), latitude/longitude, county, FIPS, APN and MLS number, the agent's listing description, the listing agent's and office's phone numbers and the buyer's agent on sold homes, the FEMA flood zone, assigned schools with GreatSchools ratings, district and sub-ratings, First Street climate-risk scores for flood/fire/heat/wind/air, grouped MLS amenities, the virtual tour link, and the listing's photo gallery as full-size image URLs. Add Realtor.com (source 'all') to get its own value estimate and range in the same row. It uses a real browser for Redfin and a Chrome-fingerprinted client over residential IPs for Zillow (which also backs up every Redfin miss), 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:

FieldDescription
foundtrue when a property with address + city + ZIP was resolved; false when this source has no match or was blocked
sourceWhich site produced the record ('redfin', 'zillow' or 'realtor') — with source 'auto' or 'all', the one that actually answered first; data.sources lists every site in the row
data.addressStreet line only, e.g. '745 Garland Dr'
data.cityCity
data.state2-letter state code, e.g. 'CA'
data.zipZIP code
data.countyCounty the property record belongs to, e.g. 'Santa Clara County' (Redfin and Zillow)
data.estimatedValueThe Redfin Estimate — Redfin's own automated valuation for the home, in whole dollars (Redfin rows only; Zillow rows carry data.zestimate instead)
data.zestimateZillow's Zestimate for the home, in whole dollars (Zillow rows only). A different model from the Redfin Estimate, so it has its own field
data.rentZestimateZillow's estimated monthly rent for the home, in whole dollars (Zillow rows only)
data.priceAsking price for a home listed for sale, or the most recent sale price for a sold one — data.priceLabel says which. Zillow rows include it only for homes listed or sold, because Zillow's own 'price' for an off-market home is just its Zestimate
data.priceLabelWhat data.price means, in Redfin's wording: 'Listed at Price' (asking), 'Last Sold Price' or 'Sold Price'
data.pricePerSqftdata.price divided by the living area — the asking or sale price per square foot, matching data.priceLabel. Omitted when there is no price
data.lastSoldDateDate of the most recent sale, YYYY-MM-DD
data.statusListing status, e.g. 'Active', 'Sold', 'Off Market'
data.priceHistoryOrdered array of { date, event, price, mlsNumber, mlsStatus, annualAppreciation } covering listed / sold / price-change / delisted events, newest first (Redfin). annualAppreciation is the yearly growth since the previous sale (0.1925 = 19.25%/yr). A price Redfin itself hides (e.g. a non-disclosure-state sale) is left out
data.taxAssessedValueCounty assessed value — the sum of assessed land and improvement
data.taxAssessedLandAssessed value of the land alone
data.taxAssessedImprovementAssessed value of the structure alone
data.taxesDueProperty taxes due for the assessment year
data.taxYearAssessment roll year the tax figures come from (Redfin rows only — Zillow publishes no year)
data.bedsNumber of bedrooms
data.bathsNumber of bathrooms (may be fractional, e.g. 2.5)
data.fullBathsCount of full bathrooms
data.halfBathsCount of half/partial bathrooms
data.sqftLiving area in square feet
data.storiesNumber of storeys
data.yearBuiltYear the home was built
data.yearRenovatedYear of the most recent recorded renovation (omitted when the county just repeats the build year)
data.lotSizeSqftLot size in square feet (acres are converted to sqft)
data.propertyTypeProperty type, e.g. 'Single Family Residential', 'Condo'
data.latitudeLatitude of the property itself, not a ZIP or city centre (Redfin and Zillow)
data.longitudeLongitude of the property itself (Redfin and Zillow)
data.fips5-digit county FIPS code — the join key for census and county datasets
data.apnAssessor's parcel number — the join key for county assessor records
data.mlsIdMLS listing number, when the home has an MLS record
data.descriptionThe listing agent's own marketing description of the home, as published on the listing
data.listingAgentName of the listing agent as published on the listing page
data.listingBrokerName of the listing brokerage
data.schoolsAssigned schools as an array of { name, type, grades, rating, distanceMiles, students, district, studentTeacherRatio, testScoresRating, studentGrowthRating, equityRating }; ratings are GreatSchools 1-10 scores
data.riskFactorsFirst Street climate risk as { flood, fire, heat, wind, air }, each { score, summary } with score on First Street's 1-10 scale
data.amenitiesMLS amenities grouped by section, e.g. { "Parking": { "Garage Spaces": "2" }, "Interior": { ... } }
data.sourceUrlLink to the source listing/record page
data.imagesListing 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
data.floorPlansThe listing's floor plans, separate from the photos: { url, kind ('image' or 'interactive'), viewerUrl, caption, source }. Empty array when the listing publishes none — most homes, and every Zillow-only lookup. In a sample of 28 for-sale homes (2026-10-28), 10 had one
data.taxHistoryCounty tax history, newest first: array of { year, land, improvement, assessed, taxesDue } — up to 17 years on our test homes (Redfin)
data.publicRecordBeds / publicRecordBaths / publicRecordSqft / publicRecordYearBuiltThe county's own record of the home, next to the listing's beds/baths/sqft. They disagreed on 2 of our 3 detailed test homes (e.g. 3 bd / 3,301 sqft on record vs 5 bd / 4,110 listed) — a gap often worth checking
data.listingAgentPhone / data.listingOfficePhoneThe listing agent's and brokerage's phone numbers, as published on the listing (Redfin; Realtor.com fills them when Redfin has none)
data.buyerAgent / data.buyerBrokerThe buyer's agent and brokerage on a sold home
data.femaFloodZoneThe FEMA flood zone the home is estimated to be in, e.g. 'X (unshaded)' or 'AE'
data.virtualTourUrlLink to the listing's virtual tour, when the listing has one
data.sourcesWith source 'all': every site that answered for this address, e.g. ['redfin', 'realtor']
data.filledFromWith source 'all': which fields were filled from Realtor.com because Redfin/Zillow had none, e.g. { "hoaFee": "realtor" }
data.realtorEstimate / realtorEstimateLow / realtorEstimateHighRealtor.com's own value estimate and the low/high of the estimates it shows (source 'realtor' or 'all'). A different model from the Redfin Estimate and the Zestimate
changeMonitor mode only: 'new' (first time this home is in the watch) or 'changed' (a listing or sale fact moved since your last monitored run)
data.listingAgentEmail, data.hoaFee, data.listDate, data.realtorUrlFrom Realtor.com (source 'realtor' or 'all'): the listing agent's email as published, the HOA fee, the date a listed home went on the market, and the Realtor.com page

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": 8864967,
"femaFloodZone": "X (shaded)",
"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,
"buyerAgent": "Elyse Barca",
"buyerBroker": "Compass",
"listingAgent": "Jim Holt",
"listingAgentPhone": "650-388-0108",
"listingBroker": "Compass",
"listingOfficePhone": "650-323-1111",
"longitude": -122.133369,
"lotSizeSqft": 12722,
"mlsId": "ML81715261",
"price": 6750000,
"priceHistory": [
{
"date": "2018-08-09",
"event": "Sold (MLS)",
"mlsNumber": "ML81715261",
"mlsStatus": "Sold",
"price": 6750000
},
{
"annualAppreciation": 0.1925,
"date": "2018-08-09",
"event": "Sold (Public Records)",
"price": 6750000
}
],
"priceLabel": "Last Sold Price",
"pricePerSqft": 1642,
"propertyType": "Single Family Residential",
"publicRecordBaths": 4.0,
"publicRecordBeds": 3,
"publicRecordSqft": 3301,
"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",
"district": "Palo Alto Unified School District",
"equityRating": 5,
"grades": "K-5",
"name": "Walter Hays Elementary School",
"rating": 9,
"studentGrowthRating": 8,
"studentTeacherRatio": 11,
"students": 305,
"testScoresRating": 10,
"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": 1991199,
"taxAssessedLand": 5689144,
"taxAssessedValue": 7680343,
"taxHistory": [
{
"assessed": 7680343,
"improvement": 1991199,
"land": 5689144,
"taxesDue": 91413.72,
"year": 2025
}
],
"taxYear": 2025,
"taxesDue": 91413.72,
"virtualTourUrl": "http://www.745Garland.com",
"yearBuilt": 2012,
"zip": "94303"
}
}

Inputs

FieldRequiredTypeDefaultDescription
addressnostring"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.
addressesnoarray["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. A batch stops early, with a free notice row listing the addresses it skipped, when your run's maximum charge is reached, or when the batch clearly isn't working: fewer than 3 of the first 50 addresses found (usually a list missing city, state or ZIP), 200 misses in a row, or 10 lookups in a row refused by the sites or timed out. Ordinary misses mixed into a list don't stop it.
sourcenostring"auto"Which site to look the property up on. 'Auto' tries Redfin first (the full 40-field record) and falls back to Zillow (core physical facts) when Redfin has no exact match — no proxy setting needed. Pick a single source to pin the lookup to it. 'Realtor.com only' and 'All sources' (opt-in): 'All sources' runs Auto and also looks the address up on Realtor.com, returning ONE merged row per address — the Redfin/Zillow record plus Realtor's own value estimate (with its low–high range), listing agent phone/email, listing office, buyer's agent on sold homes, HOA fee and list date, with any gap filled from Realtor and named in 'filledFrom'. This actor's price is the same in every mode (one charge per matched address). IMPORTANT: Realtor.com pages can only be opened through Apify's Web Fetch service, which this run calls with YOUR Apify account, so Apify bills you for it separately (about $0.0015 per Realtor page on the Free plan, less on paid plans). It is only called for addresses Realtor.com has an exact match for, and Realtor is switched off for the rest of the run after 5 refused pages in a row. Realtor lookups take ~15 s each (several run at once).
useProxynobooleanfalseRoute the Redfin browser through Apify residential proxy. Default off (direct). Turn on only for IP rate-limiting at high volume. Zillow lookups always use residential IPs on their own, whatever this is set to.
monitorModenobooleanfalseOff: every address returns its full record, every run. On: a matched home is returned (and charged) only if it is new to this watch or its price, status, price label, last sale date, MLS number, listing agent or brokerage, list date or HOA fee changed since your previous monitored run with the same addresses and source; each such row says change: new or changed. Estimates (Redfin Estimate, Zestimate) moving on their own do not count. Addresses not found still return their free not-found row. The first monitored run returns everything; a run where no home changed returns one free no_change row.

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.
  • Watch list — schedule the same list of addresses with monitor mode on, and get (and pay for) only the homes whose price, status or listing changed since the last run.

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.
  • Two sources in one lookup: when Redfin has no exact match, the default 'auto' mode tries Zillow before calling it a miss — on our 50-address test list that took matches from 36 to all 38 real addresses, with every invented address still reported not found.
  • 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.
  • Up to 17 years of tax history and the county's own beds/baths/sqft next to the listing's, so an under-recorded addition or a tax jump shows up in the data, not on a site visit.

Limitations & updates

Realtor.com is opt-in (source 'realtor' or 'all') and is billed to you by Apify's Web Fetch service on top of this actor's price (about $0.0015 per Realtor.com page); its rows carry no tax or price history, which Realtor.com loads separately. Rural and small-town records are often thinner, because counties publish less. The full record comes from Redfin, which is the primary path. Zillow rows carry the core physical facts plus Zestimate, rent Zestimate, latitude/longitude, county and tax-assessed value — no Redfin Estimate, price history, tax breakdown or year, schools, climate risk or photos — and Zillow sits behind PerimeterX: in two 2026-10-09 test runs over the same 38 real addresses, Zillow alone answered 36 and then all 38; a refused lookup comes back as a free not-found row that says why. Source 'auto' tries Redfin first and falls back to Zillow on a Redfin miss; 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 properties from full street addresses, one or a batch per run; it is not a bulk area/ZIP crawler. A batch stops early, with a free notice row listing the skipped addresses, when the run's maximum charge is reached, when fewer than 3 of the first 50 addresses are found, after 200 misses in a row, or after 10 refused or timed-out lookups in a row.

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 50 fields — the Redfin Estimate, price and price history, tax assessment and tax history, beds, baths, sqft, year built, lot size, property type, the county's public-record figures, county/FIPS/APN, lat/long, MLS number, listing description, listing agent and office phone, buyer's agent, FEMA flood zone, 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. When Zillow answers instead, the row carries data.zestimate (Zillow's Zestimate) and data.rentZestimate (its monthly rent estimate). They are different models — on 32 Philadelphia homes we checked, the Zestimate never equalled the Redfin Estimate and the two were a median 10.7% apart — so each keeps its own field.

Which sources are supported?

Redfin and Zillow by default, with Realtor.com as an option. Redfin is the primary path and is where the full record comes from. Set source to 'all' to also look the address up on Realtor.com and merge its own value estimate and range, agent email, HOA fee and list date into the same row, or 'realtor' for Realtor.com alone (see the Realtor.com cost question below). Zillow returns the core physical facts (address, beds, baths, sqft, year built, lot size, property type) plus the Zestimate, rent Zestimate, latitude/longitude, county, county tax-assessed value, and a price when the home is listed or sold. The default source 'auto' tries Redfin first and falls back to Zillow when Redfin has no exact match, with no setting needed. Zillow sits behind PerimeterX, so a Zillow lookup can occasionally be refused; it is then reported as not found with the reason, and is free.

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 did my batch stop before the end?

For one of two reasons, and the last row of the dataset says which and lists every address it skipped, free of charge. Either your run's maximum charge was reached (raise it and re-run the skipped addresses), or the batch was clearly not going to work: fewer than 3 of the first 50 addresses found (usually a list missing city, state or ZIP — fix it and re-run), 200 misses in a row, or 10 lookups in a row refused by the sites or timed out (re-run those later). A batch with ordinary misses mixed in runs to the end.

Why not just fetch the pages?

Redfin and Zillow block plain HTTP requests on TLS/browser fingerprint (not just IP), so curl and a bare fetch get 403/429. Redfin is read from inside a real browser session; Zillow walls headless browsers outright, so it is read with a client that presents Chrome's fingerprint over residential IPs. Either way the actor reads each site's own structured data.

Do I need a proxy?

No. Redfin works direct, and the Zillow fallback routes its requests through residential IPs on its own. The useProxy option additionally sends the Redfin browser through a residential proxy, which can help at high volume.

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 come from Redfin and, with source 'realtor' or 'all', Realtor.com; the Zillow-only mode returns none.

Does it return floor plans?

Yes, when the listing publishes one: data.floorPlans holds them separately from the photos. Each entry has a url (the image, or the SVG preview of an interactive CubiCasa scan), a kind ('image' or 'interactive'), a viewerUrl for interactive scans, and the source. Most homes have no public floor plan, so the array is often empty: 10 of 28 for-sale homes sampled on 2026-10-28 had one, and off-market homes rarely do. Redfin is checked on every lookup; source 'all' also adds plans only Realtor.com tags. The Zillow-only mode returns none. The price per property is unchanged.

Is this personal data?

It returns public property facts, plus the listing agent's, buyer's agent's and brokerage's names and the phone numbers (and, from Realtor.com, the email) they publish 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.

Does it work for rural and small-town addresses?

Yes. On 2026-10-27 we looked up 20 addresses in 10 small towns in 10 states — Ely NV, Marfa TX, Hettinger ND, Lewistown MT, Hazard KY, Valentine NE, Monticello UT, Greenville ME, Clayton GA and Hillsboro WV — and 17 came back as full records (the other 3 had no exact match on Redfin, and were free). What varies is how much the county and MLS publish: rural records are thinner — tax history came back on 8 of those 17, the county's beds/sqft on fewer — and a non-disclosure state like Texas publishes no sale prices at all. Fields a county does not publish are simply left out of the row.

What does Realtor.com cost me?

This actor's price is the same in every mode — one charge per matched address. But Realtor.com only opens through Apify's Web Fetch service (it blocks ordinary scrapers), and the run calls Web Fetch with your own Apify account, so Apify bills you for it separately: about $0.0015 per Realtor.com page on the Free plan, less on paid plans. It is only called when Realtor.com has an exact match for your address, and Realtor.com is switched off for the rest of the run after 5 refused pages in a row. Realtor.com pages take ~15 s each, several in parallel. The default 'auto' never uses it.

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.

Can it tell me only which homes changed since my last run?

Yes: turn on 'Only homes that changed since my last run (monitor)' and run the same address list on a schedule. Each matched home is compared, by the site's own property page, with your previous monitored run that used the same addresses and source, and returned only when it is new to the watch or its price, status, price label, last sale date, MLS number, listing agent or brokerage, list date or HOA fee changed; the row then carries change: new or changed, and only those rows are charged. The Redfin Estimate and Zestimate move on their own every week, so they do not count as a change. Addresses not found still come back as free not-found rows. The first monitored run returns every home; a run where nothing changed returns one free no_change row. The saved state lives in a key-value store in your own Apify account.

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 by Trade & County (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:

More actors, coverage and nightly verification results: scrapebench.dev

Works with AI assistants (MCP)

Callable as an MCP tool, so Claude, Cursor, VS Code Copilot and other MCP clients can run it directly. Grab the config from the MCP tab on this page — Apify hosts the server and keeps that snippet current, and OAuth signs you in on first connect, so no API token goes in your config file.

Then just ask:

"Pull the property details for 745 Garland Dr, Palo Alto, CA 94303."

Give it a full street address with ZIP: the actor checks the resolved record against what you asked for, so a partial address comes back as not found rather than matched to a neighbouring house. Runs started this way bill exactly like any other run.

Data & lawful use

This actor collects publicly available information that Zillow Group or Redfin Corporation publishes for public lookup — licence records, business listings and the contact details professionals list there. Some of it identifies individuals (sole proprietors, licence holders, agents), so treat any names, phone numbers and emails in your results as personal data.

When you run this actor, you decide what is collected and what it is used for, so you are the controller of that data and we act only as your processor (Apify Standard Actor Contract). You need a lawful basis for your use, must honour opt-out and deletion requests, and must follow the marketing rules that apply to you (CAN-SPAM, TCPA, GDPR, CCPA and similar). Don't use the output for unsolicited bulk messaging, for screening covered by the FCRA, or for anything the source's own terms forbid.

Your results are stored in your own Apify account. We don't keep a copy of your results and don't sell or share them.

Disclaimer

This is an independent tool. It is not affiliated with, endorsed by or sponsored by Zillow Group or Redfin Corporation. Names and marks are used only to describe the data source. Records are provided as published by the source and may be out of date or incomplete. For anything consequential (hiring, a permit, a legal decision), confirm the record with the issuing agency. You are responsible for making sure your use complies with applicable law and the source's terms.

Need help?

Open an issue on this actor's Issues tab and we'll respond there. Bug reports, missing fields and feature requests are all welcome. Guides and examples: scrapebench.dev.

If you are a person named in this data and want your record removed from our copy, email apify-help@scrapebench.dev; the source agency remains the official record.

Your run may be used to improve our services. If something looks off, or you want this actor to fit your use better, please share your run data with us: Apify Console → Settings → Security → Share run data with developers. It lets us see exactly what went wrong and keep improving the actor.

If this actor saved you time, a short review on its Store page helps other buyers find it.