Redfin Property Listings Scraper avatar

Redfin Property Listings Scraper

Pricing

from $0.60 / 1,000 item processeds

Go to Apify Store
Redfin Property Listings Scraper

Redfin Property Listings Scraper

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

Pricing

from $0.60 / 1,000 item processeds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

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

SettingJSON keyDescription
Redfin search URLsstartUrlsPublic Redfin ZIP, city, county, neighborhood, or filtered search URLs. Single home detail URLs are not supported in this version.
LocationslocationsZIP 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 listingsmaxItemsMaximum dataset rows to save across all targets. Start small to verify output and cost.
Listing statusstatusFilterChoose for_sale, for_rent, sold, or all/default. Redfin may expose fewer public rental or sold records in some markets.
Include raw source snippetsincludeRawAdds selected source snippets for debugging; keep off for smaller exports.
Proxy configurationproxyConfigurationRedfin commonly needs US residential Apify Proxy routing.

Output fields

FieldDescription
propertyId, listingId, mlsIdStable identifiers when available.
url, sourceUrlListing URL and source search page URL.
status, propertyTypeListing status/type fields when available in public page data.
price, beds, baths, sqft, lotSize, yearBuilt, daysOnMarketProperty metrics.
street, city, state, zip, countryAddress fields.
latitude, longitudeCoordinates when available.
listingRemarks, primaryPhotoUrl, photoUrls, brokerName, agentNameOptional public listing details when exposed by Redfin search data.
scrapedAt, warnings, rawCollection timestamp, row-level warnings, and optional raw snippet.

Pricing

EventPriceCharged when
Run start$0.005 per runOnce when the Actor starts.
Item processedFree $0.00115, Bronze $0.00100, Silver $0.00078, Gold $0.00060, Platinum $0.00040, Diamond $0.00028 per saved dataset rowEach listing saved to the dataset.

Pricing will be rechecked with cloud cost measurements before Store publication.

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."

FAQ

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.

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