Redfin Scraper 💰 $1/1K – For Sale, Sold Comps & Rentals
Pricing
from $0.65 / 1,000 results
Redfin Scraper 💰 $1/1K – For Sale, Sold Comps & Rentals
Scrape Redfin homes for sale, recently sold comps and rentals in any US city, ZIP or county. A whole metro in one request, with price, beds, baths, sqft, price per sqft, lot size, photos, MLS# and sold date. Monitoring mode returns only new listings. No login.
Pricing
from $0.65 / 1,000 results
Rating
0.0
(0)
Developer
Lukáš Širhal
Maintained by CommunityActor stats
4
Bookmarked
192
Total users
0
Monthly active users
20 hours ago
Last modified
Categories
Features
Share
Redfin Scraper
Scrape Redfin real-estate data for any US city, ZIP code, county or neighborhood: homes for sale, recently sold homes (sold comps) and rentals. Paste a Redfin search URL or type a location, add filters, and get every matching home with price, beds, baths, square feet, price per square foot, lot size, photos, MLS number, sold date and the agent's description. No login or API key needed.
Why this Redfin scraper
- 🏙️ A whole metro in one request. Redfin's search API returns thousands of listings at once, so there is no 350-result or 9-page limit to work around. Very large searches are split into map areas automatically.
- 💰 Sold comps. Homes sold in the last 7 days to 5 years, with sold price and date, including public-record sales that never went through an MLS.
- 🔔 Monitoring mode. Schedule a search and get only the listings that appeared since the last run, paying only for new ones.
- 🎯 Redfin's own filters. Price, beds, baths, square feet, property type, sold window and sort order are applied by Redfin, so filtering makes a run cheaper, not slower.
- 📸 Rich records at no extra cost. Photos, price per sq ft, lot size, badges (Hot Home, Price Drop, Open House), key facts and the listing description come straight from the search, without a request per home.
- 🏷️ Redfin Estimate on demand. Turn on property details for each home's Redfin Estimate, the comparable sales behind it, Walk/Transit/Bike Score and the parcel number (APN).
- 🔗 Paste a filtered search. Filters in a Redfin URL (price, beds, property type, year built, lot size, HOA, sort) are applied, so a search set up in your browser runs as is.
- ⚡ Only downloads what you need.
maxItems: 20fetches about 20 listings, not the whole city.
Who uses it
- Investors and wholesalers: pull sold comps for a ZIP, spot underpriced listings by price per sq ft, and get new multi-family or land listings every morning.
- Agents and brokers: track new listings, price drops and open houses in your farm area.
- Analysts and proptech: build price, inventory and rent datasets for any US market.
- Home buyers and renters: get a daily list of new homes that match your filters.
How to scrape Redfin
- Open Redfin, search for a city, ZIP or county and copy the URL from the address bar, or just type the place into Location.
- Choose For sale, Recently sold or For rent, and add filters if you like.
- Click Start. Download the results as JSON, CSV, Excel or HTML, or connect them to Google Sheets, Zapier or your own app through the API.
Input examples
Homes for sale in Philadelphia between $300k and $750k, 3+ bedrooms, cheapest first:
{"startUrls": [{ "url": "https://www.redfin.com/city/15502/PA/Philadelphia" }],"category": "forSale","minPrice": 300000,"maxPrice": 750000,"minBeds": 3,"sortBy": "priceAsc","maxItems": 200}
Sold comps: every house sold in Phoenix in the last 6 months:
{"startUrls": [{ "url": "https://www.redfin.com/city/14240/AZ/Phoenix" }],"category": "sold","soldWithinDays": 180,"propertyTypes": ["house"]}
A sold search pasted from Redfin works too: https://www.redfin.com/city/14240/AZ/Phoenix/filter/include=sold-3mo
is read as sold within 90 days, and .../apartments-for-rent as rentals.
New Seattle listings only, for a daily schedule:
{"startUrls": [{ "url": "https://www.redfin.com/city/16163/WA/Seattle" }],"monitoringMode": true,"maxItems": 300}
Input
Give either Redfin search URLs or a location; everything else is optional.
| Field | Type | Description |
|---|---|---|
startUrls | Array | Redfin search URLs, e.g. https://www.redfin.com/city/16163/WA/Seattle. Fastest and cheapest: city and county URLs need no browser at all. Filters in the URL are applied (see below). Use region URLs, not single property pages. |
location | String | A city, ZIP code, neighborhood or address, e.g. "Philadelphia". Used when no start URLs are given. Slower, because Redfin's location lookup sometimes needs a browser. |
category | Enum | forSale (default), sold (recently sold comps) or forRent. A rentals or sold URL keeps its own category. |
maxItems | Integer | Maximum listings to return. 0 (default) means every listing in the search. Lower values make runs cheaper. |
monitoringMode | Boolean | Return only listings earlier runs of the same search did not return. See below. |
includeDetails | Boolean | Adds Redfin Estimate, estimate comparables, Walk/Transit/Bike Score, APN and FIPS code. One extra request and one extra charge per home. Not for rentals. |
propertyTypes | Array | house, condo, townhouse, multiFamily, land, other, coop. Empty means all types. |
minPrice / maxPrice | Integer | Price range in US dollars. |
minBeds / maxBeds | Integer | Bedroom range. |
minBaths | Integer | Fewest bathrooms. |
minSqFt / maxSqFt | Integer | Interior size range in square feet. |
minYearBuilt / maxYearBuilt | Integer | Construction year range. |
minLotSize / maxLotSize | Integer | Lot size range in square feet (1 acre = 43,560 sq ft). |
maxHoa | Integer | Highest monthly HOA dues. 0 returns only homes without HOA dues. |
soldWithinDays | Integer | With sold: how far back to go (default 90; e.g. 30, 365, 1825). With forSale: also mixes in a few recently sold homes. |
sortBy | Enum | relevance (default), newest, oldest, priceAsc, priceDesc, sqftDesc, pricePerSqftAsc. Matters with maxItems. |
proxyConfig | Object | Proxy configuration. See below. |
Filters in pasted URLs
Set up a search on Redfin, copy the URL and paste it: the /filter/ part is applied. For example
https://www.redfin.com/city/16163/WA/Seattle/filter/property-type=house+townhouse,min-price=500k,max-price=1.2M,min-beds=3,min-year-built=1990
returns Seattle houses and townhouses from $500k to $1.2M with 3+ bedrooms built since 1990. Supported: property type,
price, beds, baths, square feet, year built, lot size, HOA, sort and the sold window. Filters this scraper doesn't
support (e.g. pool, garage) are listed in the run log and not applied. URL filters win over the input's.
Monitoring mode: only new listings
Turn on monitoringMode and schedule the task (daily, hourly). Each run remembers the listings it returned, and the
next run of the same search skips them, so you get, and pay for, only what is new.
- For-sale searches are sorted newest first and stop at the first listing an earlier run returned, so a daily run downloads very little.
- Sold and rental searches are filtered the same way: you get homes sold, or rentals listed, since the last run.
- The first run returns everything (up to
maxItems), which sets the starting point. Sold and rental searches aren't ordered by date, so with amaxItemslimit they also catch up, run by run, on homes the limit left out before. - Changing the URLs, location, category or filters starts a fresh list.
maxItemsdoes not.
To get alerts, connect the task to email, Slack or a webhook with Apify's integrations.
Proxy
Redfin's search API works with the default Apify Proxy. Searching by location may need to load a real Redfin page,
which Redfin blocks on datacenter IPs, so use the RESIDENTIAL group for location searches:
{ "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
Output
One dataset item per home. Download it as JSON, CSV, Excel or HTML.
{"propertyId": 26839412,"url": "https://www.redfin.com/AZ/Scottsdale/5312-E-Anderson-Dr-85254/home/26839412","price": 1699000,"pricePerSqft": 438,"beds": 5,"baths": 4,"sqft": 3879,"lotSize": 13696,"status": "Closed","type": "House","address": "5312 E Anderson Dr","city": "Scottsdale","state": "AZ","zip": "85254","lat": 33.6439953,"lon": -111.965927,"yearBuilt": 1997,"community": "ARABIAN CREST TWO","hoa": null,"mls": "7067457","listingId": 222465250,"isSold": true,"soldDate": "2026-09-15","soldPrice": 1699000,"lastSoldDate": null,"badges": ["Sold"],"openHouse": null,"isHot": false,"isNewConstruction": null,"hasVirtualTour": false,"keyFacts": [],"photoCount": 59,"mainPhoto": "https://ssl.cdn-redfin.com/photo/86/bigphoto/457/7067457_0.jpg","photos": ["https://ssl.cdn-redfin.com/photo/86/bigphoto/457/7067457_0.jpg", "…"],"description": "Absolutely stunning home that…"}
| Field | Description |
|---|---|
propertyId, url | Redfin's id for the home and the link to it. |
price, pricePerSqft | Asking price (sold price for sold homes) and price per square foot, in US dollars. |
beds, baths, sqft, lotSize | Bedrooms, bathrooms (halves included), interior size and lot size in square feet. |
status | Active, Coming Soon, Pending, Closed, or Sold for public-record sales. |
type | House, Condo, Townhouse, Vacant Land, … |
address, city, state, zip, lat, lon | Location. |
yearBuilt, community, hoa, mls, listingId | Year built, neighborhood, monthly HOA dues, MLS number, Redfin listing id. |
isSold, soldDate, soldPrice | Sale date and price of a sold home. |
lastSoldDate | Previous sale date of a home that is on the market now. |
badges, openHouse, isHot, isNewConstruction, hasVirtualTour, keyFacts | Redfin's badges (Price Drop, Open House, Hot Home…), open house times and listing highlights. |
photoCount, mainPhoto, photos | Full-size photo URLs. Public-record sales have none. |
description | The agent's listing remarks. |
daysOnMarket, timeOnRedfin | Shown only when Redfin publishes them without a login, which is rare. |
redfinEstimate, estimateComparables | With includeDetails: Redfin's estimated value and the comparable sales behind it (address, price, sold date, beds, baths, sqft). Empty when Redfin shows "Estimate not available", e.g. on brand-new construction. |
walkScore, transitScore, bikeScore | With includeDetails: Walk Score ratings 0-100. |
apn, fipsCode | With includeDetails: assessor parcel number and county FIPS code, for matching with county records. |
Fields Redfin doesn't publish for a home come back as null, most often hoa, and sqft or yearBuilt on land and new
construction. yearBuild is a deprecated alias of yearBuilt, kept for existing integrations.
Rentals return the same location fields plus price, beds, baths and sqft. A building with several units
reports them as ranges, e.g. "1100 - 1350".
How much does it cost?
You pay $1.00 per 1,000 listings (as low as $0.65 on higher Apify plans) plus $0.01 per run. Property details
(includeDetails) add $0.50 per 1,000 homes. Platform and proxy costs are included. Apify's free plan gives you $5 of credit every month, enough for about 5,000 listings.
With monitoringMode, a scheduled run pays only for new listings, often a few cents a day. You can also cap a run's
cost with the maximum charge setting; the scraper stops cleanly when it is reached.
Notes and limits
- A rentals URL needs
category: forRent(or is detected automatically when it ends in/apartments-for-rent). - Redfin caps very large searches; the scraper splits the map into smaller areas and keeps going.
- Within a run every home is returned once, even when several start URLs overlap.
Is it legal to scrape Redfin?
The scraper collects only publicly available listing data. Listing descriptions and photos may be copyrighted, and personal data is protected by laws such as GDPR and CCPA, so use the data responsibly. If you're unsure, consult a lawyer. See also is web scraping legal?
Support
Found a bug or need a field that isn't here? Open an issue on the Issues tab.