Redfin Scraper — Property Data, Redfin Estimate & Agent avatar

Redfin Scraper — Property Data, Redfin Estimate & Agent

Pricing

from $45.00 / 1,000 enriched listings

Go to Apify Store
Redfin Scraper — Property Data, Redfin Estimate & Agent

Redfin Scraper — Property Data, Redfin Estimate & Agent

Redfin scraper for US real estate data — listings with the Redfin Estimate, price & tax history, photos, schools, HOA, geo, plus listing agent and brokerage. Search by ZIP, city, URL, or listing URL. No API key, no run-start fee.

Pricing

from $45.00 / 1,000 enriched listings

Rating

0.0

(0)

Developer

Jura Moshkov

Jura Moshkov

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

2 days ago

Last modified

Share

Redfin Scraper — Property Data, Redfin Estimate, Agent & Brokerage

This Redfin scraper turns any Redfin search into a clean, structured dataset of property listings with the listing agent and brokerage attached. Give it a ZIP code, a city, a property URL, or a Redfin search URL and get one flat row per property — price, beds, baths, the Redfin Estimate, price and tax history, photos, schools, HOA and coordinates, plus the listing agent's name and their brokerage. It runs on a stable real-estate data API rather than a browser, there is no run-start fee, and you pay only for successfully enriched properties.

Two things set it apart from the near-identical Redfin scrapers in this niche:

  • Agent and brokerage on every row. Most Redfin scrapers return property data only. This one attaches the real listing agent's name and their brokerage to each property, so the output is built for lead generation and brokerage attribution, not just market data.
  • It is agent-native and pay-per-result. It runs as a callable tool through the Apify MCP server, so an AI agent can fill the input from the schema and run it directly. Billing is per enriched property, with no charge for a run that starts and returns nothing.

Looking for a Redfin property scraper, Redfin Estimate data by ZIP code, or Redfin listings with agent and brokerage? This actor does it in one run and exports to CSV, JSON, or Excel.

Note on agent contact: Redfin does not publish listing agents' phone numbers or email addresses on its listing pages — contact is routed through Redfin. This actor reliably returns the agent's name and brokerage on each listing. The agentPhone and agentEmail fields exist for consistency but are usually null, because Redfin does not expose them. If you need agent email and phone, use the Realtor.com or Realtor.ca scrapers instead.

What is a Redfin scraper?

A Redfin scraper is a tool that reads Redfin the way you would — a place (a ZIP or city) or a specific listing — and returns each matching home as a structured record instead of a web page. Plain Redfin shows you a listing with a price, some photos, and a "contact agent" button. This actor pulls the underlying data behind that page: the full property detail, the Redfin Estimate, the price and tax history, the nearby schools, the geo coordinates, and the listing agent and brokerage — and flattens it into one row per property that drops straight into a spreadsheet, a model, or a CRM.

It has four input modes so you can start from whatever you already have:

ModeUse it toRequires
zipSearchDiscover every listing (and its agent) in a ZIP code — the main modezipCodes
citySearchDiscover listings and agents across a citycities
propertyUrlsEnrich a known list of Redfin property URLsstartUrls
urlScrape any Redfin search or listing URL you pastestartUrls

What you get

One flat row per property. The full field set:

FieldTypeDescription
propertyIdstringRedfin property / listing ID.
urlstringListing URL on Redfin.
statusstringListing status (e.g. for_sale).
pricenumberListing price.
currencystringCurrency, usually USD.
redfinEstimatenumberThe Redfin Estimate valuation when available.
bedsnumberBedrooms.
bathsnumberBathrooms.
sqftnumberInterior square footage.
lotSqftnumberLot size in square feet.
yearBuiltnumberYear built.
propertyTypestringProperty type.
streetAddress / city / state / zipstringAddress parts.
latitude / longitudenumberCoordinates.
hoaFeenumberMonthly HOA fee when available.
propertyTaxnumberMost recent annual property tax when available.
daysOnMarketnumberDays on market.
priceHistoryarrayPrice history entries {date, price, event}.
photoUrlsarrayListing photo URLs.
schoolsarrayNearby schools when available.
listedDatestringListing date (ISO).
agentNamestringListing agent name (real, per listing).
brokerNamestringBrokerage name.
agentProfileUrlstringAgent profile URL when available.
agentPhonestringNot published by Redfin — usually null.
agentEmailstringNot published by Redfin — usually null.
agentEmailMaskedbooleanWhether the email was masked for a free-plan preview.
mode / searchZip / searchCity / sourceUrlstringWhich input produced the row.
scrapedAtstringWhen the row was scraped (ISO).
errorstringnull on success; a message on a failed row.

Example output row

One property comes back as one flat JSON object:

{
"mode": "zipSearch",
"propertyId": "12345678",
"url": "https://www.redfin.com/WA/Seattle/123-Main-St-98103/home/12345678",
"status": "for_sale",
"price": 875000,
"currency": "USD",
"redfinEstimate": 862500,
"beds": 3,
"baths": 2,
"sqft": 1680,
"lotSqft": 4000,
"yearBuilt": 1926,
"propertyType": "Single Family Residential",
"streetAddress": "123 Main St",
"city": "Seattle",
"state": "WA",
"zip": "98103",
"latitude": 47.6743,
"longitude": -122.3421,
"hoaFee": null,
"propertyTax": 7412,
"daysOnMarket": 11,
"priceHistory": [
{ "date": "2026-09-09T00:00:00.000Z", "price": 875000, "event": "Listed" }
],
"photoUrls": ["https://ssl.cdn-redfin.com/photo/....jpg"],
"schools": [{ "name": "B.F. Day Elementary", "rating": 8 }],
"listedDate": "2026-09-09T00:00:00.000Z",
"agentName": "Jane Broker",
"brokerName": "Redfin Corporation",
"agentProfileUrl": "https://www.redfin.com/real-estate-agents/jane-broker",
"agentPhone": null,
"agentEmail": null,
"agentEmailMasked": false,
"searchZip": "98103",
"searchCity": null,
"sourceUrl": null,
"scrapedAt": "2026-09-20T14:02:11.318Z",
"error": null
}

How do I get Redfin property data by ZIP code?

Use zipSearch mode with one or more zipCodes, and narrow with the optional filters:

{
"mode": "zipSearch",
"zipCodes": ["98103"],
"listingStatus": "forSale",
"minPrice": 400000,
"maxPrice": 1200000,
"beds": 3,
"maxResults": 100
}

Each search returns listings with full property detail, the Redfin Estimate, price and tax history, photos, schools, and the listing agent plus brokerage. Filters — minPrice, maxPrice, beds (minimum bedrooms), baths (minimum bathrooms), and listingStatus (forSale, forRent, or sold) — are all optional.

Enrich a known list of Redfin property URLs:

{
"mode": "propertyUrls",
"startUrls": ["https://www.redfin.com/WA/Seattle/123-Main-St-98103/home/12345678"],
"maxResults": 1
}

Scrape any Redfin search URL you paste:

{
"mode": "url",
"startUrls": ["https://www.redfin.com/zipcode/98103"],
"listingStatus": "forSale",
"maxResults": 100
}

How much does it cost?

Pricing is pay-per-result, so you pay for enriched properties, not for run time. There is no run-start fee, and you are charged only for successfully enriched properties.

Apify planPrice per enriched property
Free$0.07
Bronze$0.06
Silver$0.05
Gold$0.045
Platinum$0.04
Diamond$0.04

Set maxResults to cap a run — each enriched property is roughly one upstream API request, so the row count is your ceiling. Free-plan runs are capped at 15 enriched properties and mask the agent email in the preview so you can inspect the output before upgrading. Agent name, brokerage, the Redfin Estimate, and all property data are returned on every plan.

How do I use it with an AI agent?

This actor is available as a callable tool through the Apify MCP server. Because every input field carries a description, an AI agent can fill the input straight from the schema and run it with no hand-holding:

{ "mode": "zipSearch", "zipCodes": ["78701"], "listingStatus": "forSale", "maxResults": 20 }

The output is one flat JSON object per property with no nested structure to unwrap (aside from the priceHistory, photoUrls, and schools arrays), which keeps it easy for an agent or a downstream step to consume. It is also a natural fit for a scheduled run: point it at a set of ZIPs or cities and let it refresh your dataset on a cadence.

This actor collects publicly available listing data — the same property information any visitor sees on Redfin's public listing pages. It does not log in, access private data, or bypass paywalls. As with any data tool, you are responsible for how you use the results: respect Redfin's terms of service, follow the marketing, outreach, and privacy laws in your market (for example getting consent before cold outreach), and honour opt-outs. Agent name and brokerage are professional business information, not consumer personal data.

Why is it reliable?

It is built on a stable real-estate data API rather than a browser scraper, so it is not broken by Redfin layout changes or anti-bot defences the way page-scraping actors are. That matters most when you automate it: point an agent or a scheduler at a set of ZIPs and it keeps returning structured data instead of silently failing on a redesign. Rows that fail individually come back with an error message rather than crashing the run, and the requestDelayMs setting lets you slow the request pace on shared upstream plans.

Use cases

  • Real estate market research — price, the Redfin Estimate, price and tax history, and days-on-market analysis across a ZIP or city, at scale.
  • Valuation and comps — pull the Redfin Estimate alongside the list price and recent price history to build comparables.
  • Investor and analytics pipelines — feed structured Redfin listing data into dashboards, models, or spreadsheets.
  • Brokerage attribution — see which brokerage and agent list each property, market by market.
  • Lead generation — build a list of listing agents by area, enriched with the properties they represent.

Example inputs

  • All for-sale homes in a ZIP: { "mode": "zipSearch", "zipCodes": ["78701"] }
  • Three-bed homes under $1.2M in a city: { "mode": "citySearch", "cities": ["Seattle, WA"], "beds": 3, "maxPrice": 1200000 }
  • Recently sold comps in a ZIP: { "mode": "zipSearch", "zipCodes": ["98103"], "listingStatus": "sold" }
  • Rentals in a city: { "mode": "citySearch", "cities": ["Austin, TX"], "listingStatus": "forRent" }
  • Enrich a specific listing: { "mode": "propertyUrls", "startUrls": ["https://www.redfin.com/..."] }

FAQ

Does it include the agent's phone or email?

Not reliably. Redfin does not publish listing agents' phone numbers or email addresses on its listing pages — contact is routed through Redfin. This actor returns the listing agent's name and brokerage on every listing, but agentPhone and agentEmail are usually null. For agent email and phone, use the Realtor.com or Realtor.ca scrapers.

What is the Redfin Estimate?

It is Redfin's own automated valuation for a home. This actor returns it in the redfinEstimate field alongside the list price when available.

How is this different from a Zillow or Realtor.com scraper?

It targets Redfin specifically and pairs listing data — including the Redfin Estimate — with the listing agent and brokerage in the same row. It is built for lead generation and brokerage attribution, not just raw property data.

Do I need an API key?

No. Set your input and run — the actor handles the upstream data source for you.

Does it work outside the US?

No. Redfin covers United States listings only, so this actor returns US properties.

What happens to a listing that fails?

It comes back as a row with an error message and null data fields rather than stopping the run, so a single bad listing never sinks a batch.

Coverage

United States listings only. Agent phone and email are not published by Redfin, so treat agentName and brokerName as the reliable agent fields. The Redfin Estimate, HOA fee, property tax, schools, and photos are returned where Redfin exposes them and come back null or empty where it does not.