Redfin Property Listings Scraper
Pricing
from $3.00 / 1,000 results
Redfin Property Listings Scraper
Scrape Redfin listings in bulk from any Redfin search URL: for-sale, sold and rental homes. Get price, beds, baths, sqft, lot, year built, address, geo, HOA, days on market, status and more. Paginates deep past Redfin's 350-per-search cap.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Nicolas van Arkens
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Scrape Redfin real-estate listings in bulk from any Redfin search page — for‑sale homes, recently sold homes, and rentals. Paste one or more Redfin search URLs and get a clean, structured row for every listing: price, beds, baths, square footage, lot size, year built, full address, GPS coordinates, HOA, days on market, sold date, status, feature tags and the listing description.
No login, no API key, no browser automation. The scraper paginates deep past Redfin's 350‑results‑per‑search limit automatically, so a single busy city URL can return thousands of listings.
What you can do with it
- Build a comps / valuation dataset for a market (active + recently sold, with price/sqft and sold dates).
- Feed a lead list for agents, investors, iBuyers, lenders and home‑service businesses (new listings, price drops, high days‑on‑market).
- Track inventory and pricing trends across cities, ZIPs or neighborhoods over time.
- Power a property search / map app or an internal real‑estate dashboard.
- Enrich a CRM with fresh listing data by ZIP or neighborhood.
Input
Give the actor a list of Redfin search URLs. Open redfin.com, search for a city, ZIP code or neighborhood, apply any filters you like (for‑sale, sold, price, beds, property type…), then copy the page URL from your browser and paste it in.
| Field | Type | Description |
|---|---|---|
searchUrls | array of strings | Redfin search‑result page URLs. One row per listing is returned for each. Required. |
maxResultsPerSearch | integer | Max listings per URL (default 1000). Set ≤ 350 for one fast request per URL. |
maxResults | integer | Optional overall cap across all URLs combined. |
enablePriceSlicing | boolean | Deep pagination past Redfin's 350 cap via automatic price bands (default true). |
priceMin / priceMax | integer | Optional global price filter (USD; monthly rent for rentals). Overrides any price already in the URL. |
proxyConfiguration | object | Residential proxy (required — Redfin blocks datacenter IPs). Default: Apify Proxy RESIDENTIAL, US. |
Example input
{"searchUrls": ["https://www.redfin.com/city/30818/TX/Austin","https://www.redfin.com/zipcode/78701","https://www.redfin.com/city/30818/TX/Austin/filter/include=sold-3mo"],"maxResultsPerSearch": 1000,"enablePriceSlicing": true,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US" }}
Where do the URLs come from? Anything you can search on Redfin works:
- City:
https://www.redfin.com/city/30818/TX/Austin - ZIP code:
https://www.redfin.com/zipcode/78701 - Recently sold: add
/filter/include=sold-3mo(orsold-1wk,sold-1mo,sold-6mo,sold-1yr) - Filtered:
.../filter/property-type=house,min-price=400k,max-price=800k,min-beds=3
Output
Every listing becomes one flat row. Sample (a for‑sale home in Denver, CO):
{"propertyId": 41326377,"listingId": 191234567,"mlsNumber": "9432187","status": "Active","url": "https://www.redfin.com/CO/Denver/1309-S-Humboldt-St-80210/home/41326377","price": 1475000,"pricePerSqFt": 512,"hoaMonthly": null,"soldDate": null,"beds": 4,"baths": 3.0,"fullBaths": 3,"sqft": 2880,"lotSize": 6250,"stories": 2.0,"yearBuilt": 1925,"propertyType": "Single-family home","uiPropertyTypeCode": 1,"streetAddress": "1309 S Humboldt St","unitNumber": null,"city": "Denver","state": "CO","zip": "80210","neighborhood": "Washington Park","countryCode": "US","latitude": 39.6975,"longitude": -104.9678,"daysOnMarket": 6,"timeOnRedfinDays": 6.1,"isNewConstruction": false,"isHot": true,"hasVirtualTour": true,"hasVideoTour": false,"has3DTour": true,"photoCount": 40,"statusBadges": ["New", "Hot Home"],"listingTags": ["UPDATED KITCHEN", "FINISHED BASEMENT"],"keyFacts": ["Washington Park location", "Detached 2-car garage"],"description": "Beautifully updated home just steps from Washington Park...","dataSourceId": 4,"marketId": 8,"searchUrl": "https://www.redfin.com/city/5155/CO/Denver","resultPosition": 1,"scrapedAt": "2026-07-19T00:00:00+00:00"}
Output fields
| Field | Description |
|---|---|
propertyId, listingId, mlsNumber | Redfin property id, listing id and MLS number. |
status | MLS status string (e.g. Active, Pending, Closed). |
url | Full Redfin listing page URL. |
price | List price (for‑sale), sale price (sold) or monthly rent (rentals). |
pricePerSqFt, hoaMonthly | Price per sq ft and monthly HOA dues. |
soldDate | Sale date (sold listings) or last sale date (active listings), YYYY-MM-DD. |
beds, baths, fullBaths | Bedroom and bathroom counts. |
sqft, lotSize, stories, yearBuilt | Interior sq ft, lot sq ft, stories, year built. |
propertyType / uiPropertyTypeCode | Human label + Redfin numeric type code. |
streetAddress, unitNumber, city, state, zip, neighborhood, countryCode | Address parts. |
latitude, longitude | GPS coordinates. |
daysOnMarket, timeOnRedfinDays | Days on market and days on Redfin. |
isNewConstruction, isHot, hasVirtualTour, hasVideoTour, has3DTour | Listing flags. |
photoCount | Number of photos on the listing. |
statusBadges, listingTags, keyFacts | Redfin badges (New, Price Drop, Open House…), feature tags, and highlighted facts. |
description | The public listing remarks. |
dataSourceId, marketId | Redfin source / market identifiers. |
searchUrl, resultPosition, scrapedAt | Which input URL it came from, its position, and the scrape timestamp (UTC). |
How deep pagination works
Redfin returns at most 350 results for a single search. When a search has more than that and enablePriceSlicing is on, the actor automatically re‑runs the search across narrowing price bands (min-price / max-price) and merges the results, de‑duplicated by property id. That's how one city URL can yield thousands of listings. Set maxResultsPerSearch to control how deep it goes; set it to 350 or turn slicing off for a single fast request per URL.
Notes & FAQ
Do I need proxies? Yes. Redfin blocks datacenter IP addresses, so the actor runs on residential proxies (the default). Keep the default proxy configuration.
Does it work for rentals? Yes — paste a Redfin rentals search URL. The price field is the monthly rent.
How do I get sold homes? Add /filter/include=sold-3mo (or another window) to the URL, or use a Redfin "Sold" search and copy that URL.
Why is soldDate filled on active listings? For an active home it reflects the last time the home sold, which is useful history. On a "sold" search it is the current sale date.
Is this legal? The actor reads the same publicly available listing data your browser loads on Redfin's search pages. You are responsible for complying with Redfin's terms and applicable laws. It does not access anything behind a login.
Pricing. Pay‑per‑result: you are charged once per listing returned. Blocked or empty pages are never charged.