Redfin scraper avatar

Redfin scraper

Pricing

from $0.65 / 1,000 results

Go to Apify Store
Redfin scraper

Redfin scraper

Scrapes real-estate data from a provided location.

Pricing

from $0.65 / 1,000 results

Rating

0.0

(0)

Developer

Lukáš Širhal

Lukáš Širhal

Maintained by Community

Actor stats

4

Bookmarked

190

Total users

0

Monthly active users

3 days ago

Last modified

Categories

Share

Scrapes real-estate listings from Redfin — homes for sale and rentals — and returns them as structured data.

Give it a Redfin search URL (or just a location name), optionally narrow the results with filters, and get back every matching listing with price, size, address, coordinates, status and description.

Features

  • Homes for sale and rentals — pick either category.
  • Search by URL or by location — paste a Redfin region URL, or type a city, ZIP code or neighborhood.
  • Server-side filters — price, beds, baths, square footage, property type, sold-within-days and sort order are applied by Redfin itself, so filtering makes runs cheaper, not slower.
  • Whole regions in one request — a full metro (7,000+ listings) is fetched in a single API call.
  • No duplicates — listings are deduplicated by property id within and across runs.
  • Only downloads what you need — a maxItems of 20 fetches roughly 20 listings, not the whole city.

Input

Everything is optional, but you must give either Redfin search URLs or a location.

FieldTypeDescription
startUrlsArrayRedfin search URLs to scrape, e.g. https://www.redfin.com/city/16163/WA/Seattle. The fastest and cheapest option — it needs no browser. Use search/region URLs, not individual property pages.
locationStringA city, ZIP code, neighborhood or address, e.g. "Philadelphia". Only used when no start URLs are given. Slower and more expensive, because Redfin's location lookup may require a browser.
categoryEnumforSale (default) or forRent. A start URL must match the category you pick.
maxItemsIntegerMaximum listings to return. 0 (default) means every listing in the search. Lower values make runs cheaper.
propertyTypesArrayRestrict to house, condo, townhouse, multiFamily, land, other, coop. Empty means all types.
minPrice / maxPriceIntegerPrice range in US dollars.
minBeds / maxBedsIntegerBedroom count range.
minBathsIntegerFewest bathrooms.
minSqFt / maxSqFtIntegerInterior size range in square feet.
soldWithinDaysIntegerAlso include homes sold in the last N days. Leave empty for on-market listings only.
sortByEnumrelevance (default), newest, oldest, priceAsc, priceDesc, sqftDesc, pricePerSqftAsc. Matters when combined with maxItems.
proxyConfigObjectProxy configuration. See below.

Example input

{
"startUrls": [{ "url": "https://www.redfin.com/city/15502/PA/Philadelphia" }],
"category": "forSale",
"maxItems": 100,
"minPrice": 300000,
"maxPrice": 750000,
"minBeds": 3,
"propertyTypes": ["house", "townhouse"],
"sortBy": "priceAsc"
}

Proxy

A proxy is strongly recommended. Redfin blocks datacenter IP addresses on its web pages, so if you search by location, use the RESIDENTIAL proxy group — the location lookup may need to load a real page. Scraping from startUrls is far more tolerant.

{ "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }

Output

Each listing becomes one dataset item.

For sale

FieldTypeDescription
propertyIdNumberRedfin's unique id for the property.
urlStringLink to the listing on Redfin.
priceNumberAsking price in US dollars.
bedsNumberNumber of bedrooms. null when not disclosed.
bathsNumberNumber of bathrooms, halves included (e.g. 2.5).
sqftNumberInterior size in square feet.
statusStringMLS status — Active, Coming Soon, Pending, Closed, …
typeStringProperty type — House, Condo, Townhouse, Vacant Land, …
addressStringStreet line, e.g. 1710 Montrose St.
city / state / zipStringAddress components.
lat / lonNumberCoordinates in decimal degrees.
yearBuiltNumberYear of construction.
communityStringNeighborhood or community name.
hoaNumberHOA dues per month, when published.
mlsStringMLS listing number.
timeOnRedfinNumberMinutes since the listing appeared on Redfin.
descriptionStringListing remarks written by the agent.
yearBuildNumberDeprecated misspelling of yearBuilt, kept for backwards compatibility.

Fields Redfin does not publish for a given listing come back as null — this is common for hoa, and for sqft and yearBuilt on land and new construction.

For rent

Rentals return the same shape, minus yearBuilt, community, hoa, mls and timeOnRedfin. Because a rental building lists several units, price, beds, baths and sqft are ranges given as strings (e.g. "1100 - 1350") when the units differ, and a plain number when they don't.

Example output

{
"propertyId": 38798295,
"url": "https://www.redfin.com/PA/Philadelphia/1710-Montrose-St-19146/home/38798295",
"price": 925000,
"beds": 3,
"baths": 4,
"sqft": 2178,
"status": "Coming Soon",
"type": "Townhouse",
"address": "1710 Montrose St",
"city": "Philadelphia",
"state": "PA",
"zip": "19146",
"lat": 39.9400914,
"lon": -75.1716835,
"yearBuilt": 2006,
"community": "Graduate Hospital",
"hoa": null,
"mls": "2187927345424205529",
"timeOnRedfin": 37,
"description": "Welcome to 1710 Montrose Street, a beautifully renovated 3-bedroom, 3.5-bath home with GARAGE parking…"
}

Notes and limits

  • A start URL must match the category. A rentals URL with category: "forSale" returns nothing useful.
  • Redfin caps very large searches. If a region exceeds the cap, the scraper automatically splits it into smaller map viewports and keeps going.
  • soldDate on Redfin refers to a property's previous sale and appears on active listings too, so it is not exposed as a "sold" flag. Use status to tell sold listings apart, and soldWithinDays to include them.
  • Rental results overlap between pages; the scraper deduplicates them, so a run may report fewer new listings than the page size.

Support

Found a bug or need a field that isn't here? Open an issue on the actor's Issues tab.