Redfin Property Listings Scraper

Extract public Redfin property listings by URL, ZIP, city, county, or neighborhood.

Data fields

FieldTypeDescription
propertyIdstring | nullValue exported as propertyId.
listingIdstring | nullValue exported as listingId.
mlsIdstring | nullValue exported as mlsId.
urlstringValue exported as url.
sourceUrlstringValue exported as sourceUrl.
statusstring | nullValue exported as status.
propertyTypestring | nullValue exported as propertyType.
priceinteger | number | nullValue exported as price.

Input preview

startUrlsRedfin search URLs
locationsLocations
maxItemsMaximum listings *
statusFilterListing status
includeRawInclude raw source snippets
proxyConfigurationProxy configuration

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Extract public Redfin property listings from search pages, ZIP codes, and supported city/county aliases. The Actor saves structured rows for real estate research, inventory monitoring, lead workflows, and market analysis.

Why use Redfin Property Listings Scraper?

Redfin Property Listings Scraper turns public Redfin search pages into analysis-ready property listing rows. Instead of copying listing cards manually, provide search URLs or supported locations and export the resulting dataset.

What does this Actor do?

The Actor fetches Redfin search result pages, extracts public listing data, deduplicates records across targets, and saves one structured dataset row per property listing.

Who is it for?

  • Real estate investors tracking inventory, price ranges, and target ZIP codes.
  • Agents and brokerages monitoring market supply and comparable public listings.
  • Proptech and data teams feeding listing URLs, prices, and addresses into internal workflows.
  • Researchers building repeatable snapshots for market analysis.

What you get

  • Listing records with Redfin URL, property ID, price, beds, square footage, address, coordinates, and scrape timestamp.
  • Flexible targets using Redfin search URLs, ZIP codes, supported aliases such as Austin TX, San Francisco CA, and Travis County TX, plus listing status filters.
  • Exports and automation through Apify datasets, API, webhooks, CSV, JSON, Excel, and MCP-compatible agents.
  • Run summary in key-value store record RUN-SUMMARY with saved count, failed targets, and partial-run status.

Input recipes

  • Austin ZIP smoke test: set locations to ["78701"] and maxItems to 10.
  • San Francisco city sample: set locations to ["San Francisco CA"] and maxItems to 25.
  • County inventory sample: set startUrls to [{"url":"https://www.redfin.com/county/2866/TX/Travis-County"}] and choose your result limit.
  • Filtered Redfin search: paste a public Redfin search URL in startUrls to preserve Redfin-side filters.

Example input

{
  "locations": ["78701"],
  "maxItems": 10,
  "statusFilter": "for_sale",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "US"
  }
}

Example output

{
  "propertyId": "31378169",
  "url": "https://www.redfin.com/TX/Austin/1800-Lavaca-St-78701/unit-A-407/home/31378169",
  "sourceUrl": "https://www.redfin.com/zipcode/78701",
  "propertyType": "Residence",
  "price": 234000,
  "beds": 1,
  "baths": null,
  "sqft": 608,
  "street": "1800 Lavaca St Unit A-407",
  "city": "Austin",
  "state": "TX",
  "zip": "78701",
  "latitude": 30.280586,
  "longitude": -97.741692,
  "scrapedAt": "2026-07-21T09:00:00.000Z",
  "warnings": []
}

Input settings

Setting JSON key Description
Redfin search URLs startUrls Public Redfin ZIP, city, county, neighborhood, or filtered search URLs. Single home detail URLs are not supported in this version.
Locations locations ZIP codes plus supported aliases. This build includes ZIP codes, Austin TX, San Francisco CA, and Travis County TX; use startUrls for other Redfin pages.
Maximum listings maxItems Maximum dataset rows to save across all targets. Start small to verify output and cost.
Listing status statusFilter Choose for_sale, for_rent, sold, or all/default. Redfin may expose fewer public rental or sold records in some markets.
Include raw source snippets includeRaw Adds selected source snippets for debugging; keep off for smaller exports.
Proxy configuration proxyConfiguration Redfin commonly needs US residential Apify Proxy routing.

Tips and limits

  • Start with maxItems: 10 before running broad searches.
  • Use Redfin search URLs when you need filters that are not represented by simple ZIP/city/county inputs.
  • If a target returns no data or a block page, the Actor records the failed target in RUN-SUMMARY; a run with some saved listings is treated as partial success.
  • Only public Redfin listing/search pages are supported. Do not use this Actor for private account data or pages that require login.

API usage

Node.js:

import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("fetch_cat/redfin-property-listings-scraper").call({
  locations: ["78701"],
  maxItems: 10,
});
console.log(run.defaultDatasetId);

Python:

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("fetch_cat/redfin-property-listings-scraper").call(run_input={
    "locations": ["78701"],
    "maxItems": 10,
})
print(run["defaultDatasetId"])

cURL:

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~redfin-property-listings-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"locations":["78701"],"maxItems":10}'

MCP and AI agents

Use this Actor from MCP-compatible tools through the Apify MCP Server:

claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/redfin-property-listings-scraper"

JSON config:

{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=fetch_cat/redfin-property-listings-scraper"
    }
  }
}

Example prompts:

  • "Run the Redfin scraper for ZIP 78701 and return the first 10 listings as a table."
  • "Collect public Redfin listings from this search URL and summarize price ranges."

Support

Questions or issues? Open an Actor issue on Apify and include:

  • Run ID
  • Input JSON
  • Expected output
  • Actual output or error
  • Reproducible public URL

Common questions

Questions and answers reused from the canonical actor README.

Can I scrape individual Redfin home detail URLs?

Not in this first version. Use Redfin search, ZIP, city, county, neighborhood, or filtered search URLs.

Why is a residential proxy prefilled?

Redfin commonly rate-limits plain datacenter traffic. Keep the default US residential proxy unless you have tested another route.

What happens if one target fails?

The Actor saves listings from successful targets and records failed targets in RUN-SUMMARY. If every target fails or returns no listings, the run fails clearly.