Redfin Property Listings Scraper avatar

Redfin Property Listings Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Redfin Property Listings Scraper

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

Nicolas van Arkens

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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.

FieldTypeDescription
searchUrlsarray of stringsRedfin search‑result page URLs. One row per listing is returned for each. Required.
maxResultsPerSearchintegerMax listings per URL (default 1000). Set ≤ 350 for one fast request per URL.
maxResultsintegerOptional overall cap across all URLs combined.
enablePriceSlicingbooleanDeep pagination past Redfin's 350 cap via automatic price bands (default true).
priceMin / priceMaxintegerOptional global price filter (USD; monthly rent for rentals). Overrides any price already in the URL.
proxyConfigurationobjectResidential 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 (or sold-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

FieldDescription
propertyId, listingId, mlsNumberRedfin property id, listing id and MLS number.
statusMLS status string (e.g. Active, Pending, Closed).
urlFull Redfin listing page URL.
priceList price (for‑sale), sale price (sold) or monthly rent (rentals).
pricePerSqFt, hoaMonthlyPrice per sq ft and monthly HOA dues.
soldDateSale date (sold listings) or last sale date (active listings), YYYY-MM-DD.
beds, baths, fullBathsBedroom and bathroom counts.
sqft, lotSize, stories, yearBuiltInterior sq ft, lot sq ft, stories, year built.
propertyType / uiPropertyTypeCodeHuman label + Redfin numeric type code.
streetAddress, unitNumber, city, state, zip, neighborhood, countryCodeAddress parts.
latitude, longitudeGPS coordinates.
daysOnMarket, timeOnRedfinDaysDays on market and days on Redfin.
isNewConstruction, isHot, hasVirtualTour, hasVideoTour, has3DTourListing flags.
photoCountNumber of photos on the listing.
statusBadges, listingTags, keyFactsRedfin badges (New, Price Drop, Open House…), feature tags, and highlighted facts.
descriptionThe public listing remarks.
dataSourceId, marketIdRedfin source / market identifiers.
searchUrl, resultPosition, scrapedAtWhich 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.