Redfin Scraper [$1.50/1K] | US Listings | Price History & Walk
Pricing
from $1.50 / 1,000 results
Redfin Scraper [$1.50/1K] | US Listings | Price History & Walk
Extract Redfin US real estate listings with price, beds, baths, sqft, address, neighborhood scores, HOA, MLS status, agent info, photos, and price history via Redfin's internal Stingray JSON API. Only $0.0015/listing - most rivals charge $0.004-$0.01. Built for investors, agents & proptech.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Ahmed Jasarevic
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 hours ago
Last modified
Categories
Share
Redfin Scraper
What does Redfin Scraper do? It extracts for-sale listings from Redfin — listing price, beds/baths, sqft, address, neighborhood, HOA, MLS status, agent info, photos and price history — and returns them as clean JSON rows. Built for US realtors, investors, proptech and AVM/lead-gen teams who need Redfin data in a pipeline instead of a browser. Running on the Apify platform you get API access, scheduling, proxy rotation and monitoring out of the box.
Why use Redfin Scraper?
- Investor deal screening: filter listings by price, beds and location.
- AVM / comp pipelines: price history plus Redfin Estimate history per property.
- Lead generation: listing agents and brokers per active listing.
- Market monitoring: schedule daily runs per city, county or ZIP.
How it works (the bypass — no browser needed)
Redfin's homepage is guarded by AWS WAF + CloudFront (a plain request returns a captcha challenge), so this actor never scrapes HTML. Instead it talks to the same internal Stingray JSON API the Redfin frontend uses:
- Enumeration —
GET https://www.redfin.com/stingray/api/giswithregion_id+region_type(1 = neighborhood, 2 = ZIP, 5 = county, 6 = city). Returns up to ~350 listings per page with price, beds/baths, sqft, address, MLS id/status, agent, photo metadata, lat/lng and thepropertyId/listingIdpair. Verified working over plain HTTP while the homepage served a captcha to the same IP — this endpoint is the core bypass. - Optional add-ons — pick a
detailModeto add fast detail endpoints, each charged as its own event:Historical Data→stingray/api/home/details/avmHistoricalData(Redfin Estimate value history + sale history)Neighborhood Scores→stingray/api/home/details/neighborhoodStats/statsInfo(walk/bike/transit scores)Full→ both.Summary→ GIS data only, no add-on requests or charges.
Note: aboveTheFold / belowTheFold are no longer called — they are reliably blocked by Redfin's WAF for datacenter/anonymous IPs, and the unique data they carry (description and HOA) is already present in the fast GIS response. This keeps the run fast and 403-free.
3. Related public techniques this builds on: the reteps/redfin Python wrapper's endpoint map and the community gis-search/gis-csv parameter docs. No Algolia/Meilisearch backend or embedded __NEXT_DATA__ blob exists on Redfin — the Stingray API is the structured surface.
The GIS response also carries HOA, full description (listingRemarks), soldDate, timeOnRedfin, stories, tour flags and more — all extracted for free with zero extra requests. No Algolia/Meilisearch backend or embedded __NEXT_DATA__ blob exists on Redfin — the Stingray API is the structured surface.
How to use Redfin Scraper
- Paste one or more Redfin search URLs in Redfin search or property URLs — city, county, or neighborhood pages like
https://www.redfin.com/city/29439/WA/Bothell, or individual property pages. The region id is embedded in the URL, so there is no lookup round-trip and the run is fast and reliable. ZIP codes and free-text place names are intentionally NOT accepted (Redfin's WAF blocks the page that would resolve them) — paste URLs instead. - Set Max listings (free accounts get a 10-listing preview automatically).
- Choose Details to include —
Summary(fast, free),Historical Data,Neighborhood Scores, orFull(both). Historical Data and Neighborhood Scores are optional add-ons billed at their own per-listing price. - Run and download the dataset as JSON, CSV or Excel.
Input
| Field | Description |
|---|---|
startUrls | Redfin city/county/neighborhood URLs or property pages (required) — e.g. https://www.redfin.com/city/29439/WA/Bothell. Paste one or more. The region id is in the URL, so no lookup is needed and runs are fast. ZIPs/free-text names are not supported (Redfin's WAF blocks the resolver). |
maxItems | Max listings to return (default 50, hard max 1000). |
detailMode | summary (default) · historical · neighborhood · full. Picks the detail add-ons per listing. historical = Redfin Estimate value history + sales; neighborhood = walk/transit/bike scores; full = both. Each add-on is charged per listing only when it returns data. |
minPrice / maxPrice / minBeds | Optional filters passed to the search API. |
proxyConfiguration | Native Apify proxy editor: default ON with Apify Proxy AUTO; pin a residential group (e.g. RESIDENTIAL) or country code to control the tier. |
maxRequestsPerCrawl | Hard request cap for loop safety (default 600). |
Example input:
{"startUrls": [{ "url": "https://www.redfin.com/city/29439/WA/Bothell" }],"maxItems": 20,"detailMode": "full","proxyConfiguration": { "useApifyProxy": true }}
Output
Each row is one listing. You can download the dataset in JSON, CSV, HTML or Excel.
{"url": "https://www.redfin.com/WA/Bothell/18108-19th-Dr-SE-98012/home/2791097","address": "18108 19th Dr SE","city": "Bothell","state": "WA","zip": "98012","price": 679950,"beds": 3,"baths": 2,"sqft": 1041,"lotSize": 6534,"pricePerSqft": 653,"mlsId": "2566592","mlsStatus": "Active","daysOnMarket": 26,"listingAgent": "Marie Hartung","listingBroker": "Redfin","neighborhood": "…","hoa": "…","photos": ["https://…jpg"],"photoCount": 24,"priceHistory": [{ "price": 679950, "date": "…" }],"scrapedAt": "2026-09-06T…"}
Main data fields (all from the fast GIS request): url, address, city, state, zip, latitude, longitude, price, beds, baths, sqft, lotSize, pricePerSqft, propertyType, yearBuilt, mlsId, mlsStatus, daysOnMarket, hoa, description, soldDate, timeOnRedfin, originalTimeOnRedfin, stories, fullBaths, partialBaths, isHot, isRedfin, hasVirtualTour, listingAgent, listingBroker, sellingBroker, photoCount. With detailMode: historical (or full): priceHistory, avmHistory. With detailMode: neighborhood (or full): walkScore, transitScore, bikeScore.
How much does it cost to scrape Redfin?
Per-listing (pay-per-event): the base result is $0.003 (~$3 per 1,000 listings). Optional add-ons are charged only when their data is returned:
| Event | What you get | Price |
|---|---|---|
result | One listing, GIS summary (price, beds, baths, sqft, address, HOA, description, agent, photos count, …) | $0.003 |
historicalData | Redfin Estimate value history + sale history | +$0.002 |
neighborhoodScores | Walk / transit / bike scores | +$0.001 |
A Full run (both add-ons) comes to $0.006 per listing ($6 per 1,000). A $3 per 1,000). Free-plan users get a 10-listing preview per run. One search page = 1 request; each add-on listing = 1 extra request. Compute and proxy usage are a few cents per ~1,000 listings at low concurrency.Summary run is $0.003 per listing (
Tips
- Prefer city or neighborhood regions over huge counties to keep result sets focused.
- Use
minPrice/maxPrice/minBedsto cut detail-request volume before it happens. - For thousands of listings, run one actor task per region and merge datasets.
- If detail fields come back empty, the detail IPs were likely flagged — retry later or switch proxy groups; core GIS fields (price, beds, baths, HOA, description) still flow, and you're never charged the add-on events when the data didn't come back.
FAQ, disclaimers and support
- Is this an official Redfin API? No. Redfin publishes no public API; this actor uses Redfin's own internal endpoints the same way its website does. Internal endpoints can change without notice — if a run returns errors, please report it via the Issues tab.
- Legality: scrape public listing data responsibly and review Redfin's Terms of Use for your use case. This actor is built for legitimate real-estate analytics.
- Limitations: photo/description shapes vary by listing and missing values are returned as
null. Walk/transit/bike scores and price history requiredetailMode: historical,neighborhood, orfulland depend on the detail endpoints being accessible from the current proxy IP — when they aren't, you're not charged for those add-ons. Photo URLs are not available (the endpoint that carries them is WAF-blocked), so onlyphotoCountis returned. - Found a bug or want bulk-search / sold-history support? Open an issue — custom builds are available.