Redfin Property Listings Scraper
Pricing
from $0.60 / 1,000 item processeds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
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-SUMMARYwith saved count, failed targets, and partial-run status.
Input recipes
- Austin ZIP smoke test: set
locationsto["78701"]andmaxItemsto10. - San Francisco city sample: set
locationsto["San Francisco CA"]andmaxItemsto25. - County inventory sample: set
startUrlsto[{"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
startUrlsto 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. |
Output fields
| Field | Description |
|---|---|
propertyId, listingId, mlsId | Stable identifiers when available. |
url, sourceUrl | Listing URL and source search page URL. |
status, propertyType | Listing status/type fields when available in public page data. |
price, beds, baths, sqft, lotSize, yearBuilt, daysOnMarket | Property metrics. |
street, city, state, zip, country | Address fields. |
latitude, longitude | Coordinates when available. |
listingRemarks, primaryPhotoUrl, photoUrls, brokerName, agentName | Optional public listing details when exposed by Redfin search data. |
scrapedAt, warnings, raw | Collection timestamp, row-level warnings, and optional raw snippet. |
Pricing
| Event | Price | Charged when |
|---|---|---|
| Run start | $0.005 per run | Once when the Actor starts. |
| Item processed | Free $0.00115, Bronze $0.00100, Silver $0.00078, Gold $0.00060, Platinum $0.00040, Diamond $0.00028 per saved dataset row | Each listing saved to the dataset. |
Pricing will be rechecked with cloud cost measurements before Store publication.
Tips and limits
- Start with
maxItems: 10before 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 ApifyClientclient = 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."
Related Actors
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