Redfin Scraper — For-Sale Property Listings avatar

Redfin Scraper — For-Sale Property Listings

Pricing

from $2.50 / 1,000 listings

Go to Apify Store
Redfin Scraper — For-Sale Property Listings

Redfin Scraper — For-Sale Property Listings

[💰 $2.5 / 1K] Extract Redfin.com for-sale listings at scale -- 68 fields per home: price, beds, baths, square footage, and GPS coordinates on every row, plus county tax records with one toggle. Built for real estate investors, brokerages, and proptech teams. Up to 2,950 listings per search.

Pricing

from $2.50 / 1,000 listings

Rating

0.0

(0)

Developer

SolidCode

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

a month ago

Last modified

Share

Pull for-sale property listings from Redfin.com at scale — 68 fields per home, GPS coordinates and MLS numbers on every row, county tax records on demand, and 1,000 listings in about 21 seconds. Built for real estate investors, brokerage and CRM teams, and proptech analysts who need current US listing data in a clean table today, without standing up and babysitting a data pipeline of their own.

Why This Scraper?

  • 68 fields on every listing — price, beds, baths, interior and lot square footage, year built, stories, HOA dues, MLS number, open-house windows, tour flags and more, grouped into core, location, financial, media, contact and listing-detail sets. Measured on 699 listings drawn from five metros (Los Angeles, Chicago, Miami Beach, Seattle, Austin) across five property categories.
  • GPS coordinates on 100% of listings — latitude and longitude on 699 of 699 sampled rows, alongside MLS number, ZIP and listing status at the same 100%. Map it or geo-join it the moment it lands, with no address geocoding step in between.
  • County public records with one toggleenrichDetails adds 16 further fields to the same row: annual property tax, tax roll year, taxable land value, taxable improvement value, parcel number (APN), county name and county page, year renovated, and the recorded square footage, stories and lot size — which frequently disagree with the listing's own numbers.
  • Every photo URL, not just a photo count — full-size and thumbnail arrays per listing (the example row below carries 32 photos), plus 3D-tour, video-tour and virtual-tour flags, with the 3D tour link and its thumbnail where the listing has one.
  • 1,000 listings in 21 seconds — measured end to end on the platform; 100 listings finished in 5.9 seconds, and a 60-listing run with full county records took 15.
  • Up to 2,950 listings from a single search — the run walks to the end of the result set and stops when the site genuinely runs out of homes, rather than at an arbitrary page count.
  • lastSoldDate means the previous sale, and says so — it is the property's prior sale from public records, never the current listing's close date; 494 of the 699 sampled listings carried one, spanning 1975 to 2026. daysOnMarket is likewise a real count of days (1 to 888 observed), not a millisecond figure wearing a day label.
  • Six property categories that mean what they say — House, Condo/Co-op, Townhouse, Multi-family (2–4 units), Multi-family (5+ units) and Land / lot, checked one filter at a time against the site's own categories: 221/221 houses, 203/203 condos, 121/121 townhouses and 36/36 land came back under the matching label.
  • Wrong-city results are refused, not delivered — if a search starts answering with homes from a different state than the address you pasted, the run stops with a clear error instead of quietly filling your dataset with another market's inventory.

Use Cases

Investment & Underwriting

  • Build a comparable set from price, price per square foot, beds, baths and interior square footage inside one named neighbourhood.
  • Underwrite carrying costs with monthly HOA dues and the county's annual property tax figure sitting on the same row.
  • Spot renovation plays by reading yearBuilt against yearRenovated, and the listed square footage against the public-record square footage.
  • Time an offer with daysOnMarket and the Coming Soon status, before a property is formally on the market.

Market Research & Analytics

  • Chart median price and price per square foot by ZIP or neighbourhood across five property categories in one pass.
  • Measure the new-construction share of a metro from isNewConstruction, newConstructionBuilder and newConstructionCommunity.
  • Compare taxable land value against asking price to find pockets where the tax roll has fallen behind the market.
  • Re-run the same search weekly and diff on id to build your own inventory and price-cut time series.

Lead Generation & CRM

  • Pull listing agent and brokerage names and phone numbers wherever the local MLS republishes them.
  • Target one property class at a time — multi-family (5+ units), land parcels, townhouses — in a single filtered run.
  • Plan weekend canvassing from openHouseStart, openHouseEnd and openHouseName, with timeZone on the row so the times are unambiguous.

Data Enrichment & Integration

  • Join to records you already hold on mlsNumber or parcelNumber — county and MLS identifiers, not site-internal ones.
  • Attach coordinates, ZIP and neighbourhood to an address list that has none.
  • Fill in assessed values and property tax for a portfolio you are already tracking.

Proptech Products & Content

  • Power a listing search or map view with photo URLs, tour links and full marketing remarks.
  • Populate neighbourhood guides and market reports with counted, current inventory instead of stale copy.
  • Run on a schedule and push each new dataset into a spreadsheet, a warehouse or a Slack channel.

Getting Started

Simplest run

{
"regionId": "30818",
"areaType": "6",
"listingStatus": "9",
"propertyTypes": "1,2,3,4,5,6,7,8",
"maxItems": 100
}

Paste a filtered search URL from the site

Set your filters on the site, then copy the address bar URL — every filter in it is carried through.

City pages (/city/…) and neighbourhood pages (/neighborhood/…) are both supported. A ZIP-code page is not — open the city or neighbourhood that ZIP sits in and paste that address instead.

{
"searchUrls": [
"https://www.redfin.com/city/11467/FL/Miami-Beach"
],
"maxItems": 2950
}

Everything, with full details

{
"searchUrls": [
"https://www.redfin.com/neighborhood/290650/CA/Los-Angeles/Westchester"
],
"maxItems": 2950,
"enrichDetails": true
}

Input Reference

What to Scrape

ParameterTypeDefaultDescription
searchUrlsarrayRedfin.com search result URLs. Set your filters on Redfin.com, then paste the address bar URL here. Overrides the individual filters below when provided.
regionIdstring30818Only used when Search URLs is empty. It is the number inside a Redfin city or neighbourhood web address - https://www.redfin.com/city/30818/TX/Austin is area 30818. Easiest route: paste the address into Search URLs above and leave this alone.
areaTypestring6Whether the ID above is a city or a neighbourhood. It must match the address the ID came from - /city/... is a city, /neighborhood/... is a neighbourhood - or Redfin quietly returns listings from somewhere else entirely.
listingStatusstring9Active listings are on the market now; coming soon are announced but not yet accepting showings. The default returns both.
propertyTypesstring1,2,3,4,5,6,7,8Narrow the search to one kind of property. The default returns everything Redfin lists for the area.
maxItemsinteger100Maximum listings per search URL (0 = collect everything each search returns). Redfin.com pages through at most 2,950 listings per search, so use several narrower searches to collect more.

Options

ParameterTypeDefaultDescription
enrichDetailsbooleanfalseAdd 16 extra fields per listing. Adds one request per listing and is billed at the higher rate.
concurrencyinteger8How many requests to run in parallel. Lower this if you see failures.
proxyConfigurationobjectApify ProxyProxy settings for the run.

Output

Every listing is one dataset row. Enabling enrichDetails adds 16 further fields to the same row — there is no second record type to join.

{
"id": "6638632",
"url": "https://www.redfin.com/CA/Los-Angeles/5310-W-82nd-St-90045/home/6638632",
"address": "5310 W 82nd St",
"propertyType": "House",
"status": "Active",
"beds": 3,
"baths": 2,
"fullBaths": 2,
"sqFt": 1299,
"lotSizeSqFt": 5497,
"yearBuilt": 1950,
"stories": 1,
"parkingSpaces": 1,
"description": "Thoughtfully updated and full of character, this three-bedroom, two-bathroom Westchester home offers a rare combination of inviting living spaces and an exceptional backyard design …",
"keyFacts": ["Custom cabinetry", "Stone countertops", "Exceptional backyard"],
"city": "Los Angeles",
"state": "CA",
"zip": "90045",
"neighborhood": "Westchester",
"latitude": 33.9638032,
"longitude": -118.3723913,
"countryCode": "US",
"price": 1499000,
"pricePerSqFt": 1154,
"lastSoldDate": "2023-06-13T07:00:00+00:00",
"photoCount": 32,
"has3DTour": false,
"hasVideoTour": false,
"hasVirtualTour": false,
"mlsNumber": "26861249",
"listingId": "221195544",
"daysOnMarket": 4,
"isNewConstruction": false,
"isRedfinListing": false,
"openHouseStart": "2026-07-28T18:00:00+00:00",
"openHouseEnd": "2026-07-28T21:00:00+00:00",
"openHouseName": "Open House - 11:00 - 2:00 PM",
"timeZone": "US/Pacific",
"badges": ["Open House"],
"latestMarketingRemark": "Thoughtfully updated and full of character, this three-bedroom, two-bathroom Westchester home offers a rare combination of inviting living spaces and …",
"publicRecordSqFt": 1299,
"publicRecordLotSqFt": 5497,
"yearRenovated": 1955,
"county": "Los Angeles County",
"countyUrl": "https://www.redfin.com/county/321/CA/Los-Angeles-County",
"taxesDue": 18211.8,
"taxRollYear": 2025,
"taxableLandValue": 1206864,
"taxableImprovementValue": 301716,
"photos": [
"https://ssl.cdn-redfin.com/photo/40/bigphoto/249/26861249_0.jpg",
"https://ssl.cdn-redfin.com/photo/40/bigphoto/249/26861249_1_0.jpg",
"https://ssl.cdn-redfin.com/photo/40/bigphoto/249/26861249_2_0.jpg"
],
"photoThumbnails": [
"https://ssl.cdn-redfin.com/photo/40/tmbphoto/249/genTmb.26861249_0.jpg",
"https://ssl.cdn-redfin.com/photo/40/tmbphoto/249/genTmb.26861249_1_0.jpg"
],
"parcelNumber": "4127005011",
"publicRecordPropertyType": "Single Family Residential",
"publicRecordUpdated": "2026-07-09T00:23:21.207000+00:00"
}

That is one real captured listing with enrichDetails on. Fields a listing does not publish are dropped rather than returned empty — this one has no HOA and no unit number, so those keys are simply absent. The two long text fields and the 32-entry photo arrays are abbreviated above for readability. Agent and brokerage contact details arrive in listingAgentName, listingAgentPhone, listingBrokerName and listingBrokerPhone where the listing publishes them; they are personal data and are left out of this example rather than reprinted here.

Core Fields

FieldTypeDescription
idstringProperty ID
urlstringListing URL
addressstringStreet address
unitstringUnit
propertyTypestringProperty type
statusstringListing status
bedsnumberBedrooms
bathsnumberBathrooms
fullBathsnumberFull bathrooms
partialBathsnumberPartial bathrooms
sqFtnumberInterior sq ft
lotSizeSqFtnumberLot size (sq ft)
yearBuiltnumberYear built
storiesnumberStories
garageSpacesnumberGarage spaces
parkingSpacesnumberParking spaces
descriptionstringListing description (search tier truncates at 700 characters)
keyFactsarrayHighlights

Price & Value

FieldTypeDescription
pricenumberPrice (USD)
pricePerSqFtnumber$ per sq ft
hoaDuesnumberHOA dues (USD/month)
lastSoldDatestringLast sold (prior sale, from public records)

Location

FieldTypeDescription
citystringCity
statestringState
zipstringZIP code
neighborhoodstringNeighborhood
latitudenumberLatitude
longitudenumberLongitude
countryCodestringCountry

Contacts

FieldTypeDescription
listingAgentNamestringListing agent
listingAgentPhonestringListing agent phone
listingBrokerNamestringListing brokerage
listingBrokerPhonestringListing brokerage phone
coListingBrokerNamestringCo-listing brokerage

Media

FieldTypeDescription
photoCountnumberPhoto count
has3DTourbooleanHas a 3D tour
hasVideoTourbooleanHas a video tour
hasVirtualTourbooleanHas a virtual tour
tourUrlstring3D tour URL
tourThumbnailUrlstring3D tour thumbnail

Details & Timestamps

FieldTypeDescription
mlsNumberstringMLS number
listingIdstringListing ID
daysOnMarketnumberDays on market
isNewConstructionbooleanNew construction
isRedfinListingbooleanListed by Redfin
openHouseStartstringNext open house starts
openHouseEndstringNext open house ends
openHouseNamestringOpen house label
timeZonestringTime zone
badgesarrayListing badges
newConstructionBuilderstringBuilder
newConstructionCommunitystringCommunity

With enrichDetails enabled

FieldTypeDescription
latestMarketingRemarkstringFull marketing remarks (most recent listing event)
publicRecordSqFtnumberFinished sq ft (county records)
publicRecordLotSqFtnumberLot size, sq ft (county records)
publicRecordStoriesnumberStories (county records)
yearRenovatednumberYear renovated
countystringCounty
countyUrlstringCounty page
taxesDuenumberAnnual property tax (USD)
taxRollYearnumberTax roll year
taxableLandValuenumberTaxable land value (USD)
taxableImprovementValuenumberTaxable improvement value (USD)
photosarrayPhoto URLs (all listings of this property)
photoThumbnailsarrayPhoto thumbnail URLs
parcelNumberstringParcel number (APN)
publicRecordPropertyTypestringProperty type (county records)
publicRecordUpdatedstringCounty record last updated

Tips for Best Results

  • Paste a city or neighbourhood page, not a ZIP page. https://www.redfin.com/city/11467/FL/Miami-Beach and https://www.redfin.com/neighborhood/290650/CA/Los-Angeles/Westchester are both fine. A ZIP-code search page is not supported — open the city or neighbourhood that ZIP belongs to and paste that address instead.
  • Split a big metro to get past 2,950. One search returns at most 2,950 listings. Run one search per property category, or one per neighbourhood, and the results merge into a single dataset with duplicates removed.
  • Check photoCount before you budget for image downloads. Photo URLs are republished from each local MLS feed, and some markets publish none at all: in our enriched sample every Chicago, Los Angeles, Miami Beach and Austin listing carried photo URLs, while none of the twelve Seattle listings did — even though photoCount was populated on all of them. Treat photoCount as what the listing page shows and the photos array as what the feed releases.
  • Agent contacts are a market-by-market fact, not a scraper limitation. Whether a listing agent's name and phone travel with the listing depends on what the local MLS republishes: all 158 sampled Seattle listings carried an agent name, but only 1 of 140 in Miami Beach did. If contacts are the reason you are running this, sample one small search in your target market first and check before you scale up.
  • Leave enrichDetails off for sweeps, on for shortlists. It adds a request per listing and bills at the higher rate, so the efficient pattern is a cheap wide search, then a second run over the handful of properties you actually care about.
  • lastSoldDate is your comp anchor. It is the prior sale from public records, not this listing's close, so pairing it with the current asking price gives you a hold-period appreciation read on every home in the search — including the ones still marked Active.
  • The default returns both Active and Coming Soon listings. Coming Soon homes are announced but not yet taking showings, which makes them the best early-lead pool; filter on status downstream if you only want one or the other.

Pricing

From $2.50 per 1,000 results (search only) or from $7.50 per 1,000 results (with full details).

ResultsSearch OnlyWith Full Details
100$0.25$0.75
1,000$2.50$7.50
10,000$25.00$75.00
100,000$250.00$750.00

Those are the rates on Gold and above. Higher-volume plans pay less per result:

Your Apify planSearch OnlyWith Full Details
No discount$3.00$9.00
Bronze$2.90$8.55
Silver$2.70$8.00
Gold and above$2.50$7.50

Per 1,000 results.

A "result" is any listing row in the output dataset. When you run several searches at once, a listing matching more than one of them is de-duplicated before it reaches the dataset, so you are never charged twice for the same listing. The full-details rate applies only to rows that actually came back enriched — if a listing's detail record is unavailable, the row is still delivered and charged at the search-only rate. Platform fees (compute, storage) are additional and depend on your Apify plan.

Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

  • Zapier / Make / n8n — Workflow automation
  • Google Sheets — Direct spreadsheet export
  • Slack / Email — Notifications on new results
  • Webhooks — Trigger custom APIs on run completion
  • Apify API — Full programmatic access

This is an unofficial scraper. It is not affiliated with, endorsed by, or connected to Redfin.com or its operators in any way. All trademarks belong to their respective owners.

This actor is intended for legitimate market research and analytics. You are responsible for complying with applicable laws and with Redfin.com's Terms of Service.

Results may include personal data such as contact details. Treat them accordingly: do not use them for spam, harassment, or any unlawful purpose, and follow applicable privacy rules when storing or processing them.