How it will work: 3 steps
- Follow us on ApifyThe tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
Austin, TXin Locations. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
Redfin & Realtor Listings Scraper reads public US home listings from Realtor.com or Redfin for the cities, ZIP codes or counties you add. It returns one row per listing with price, beds, baths, square feet, address, ZIP, coordinates, listing date, photos and (on Realtor.com) the listing office name. You do not need a login or an API key.
- Locations (
locations): up to 20 places, for exampleAustin, TX, ZIP78704orTravis County, TX. For Redfin you can also paste a redfin.com city, county or neighborhood link. - Website (
source): Realtor.com (default) or Redfin. - Listing status (
status): for sale now, recently sold, or for rent. - Price range (
minPrice,maxPrice) in US dollars. For rentals this is the monthly rent. - Max listings (
maxItems): how many rows to save in total.
Good for
- Track asking prices, new listings and days on market in a city or ZIP code.
- Collect recent sales (sold price, sold date) for a price comparison.
- Build a rental list with monthly rent, beds and square feet.
- Get the same columns from Realtor.com and Redfin to check one against the other.
Not a good fit
- No agent names, phone numbers, e-mails or listing descriptions. Only the public name of the listing office, and only on Realtor.com.
- Only the United States. Only the two portals above; Zillow is not supported.
- One Realtor.com search returns at most 10,000 results. For a bigger area, split it into ZIP codes or cities.
- The data is what the portal shows at the time of the run. Some fields can be empty when the portal does not show them (see Output).
Who uses it
Real estate investors
Track new listings and days on market.
Agents and appraisers
Pull recent sales for price comps.
Renters and analysts
Check monthly rents in a ZIP code.
Price
Prices will be shown after release.
Questions
Do I need a login?
No. It reads public results without login or API key.
Why is a sold price empty?
Some states do not make sale prices public. Then you see the last asking price.
Can I get agent phone numbers?
No. You get only the listing office name on Realtor.com.
Why do the two sites show different numbers?
Each site has its own listings and area borders.
Do I need a Realtor.com or Redfin account?
No. The Actor reads public search results. You do not need a login, cookies or an API key.
How fresh is the data?
Each row is read live from the portal during your run. fetchedAt shows when the row was saved.
Details
Step by step on Apify
- Open the Input tab.
- In Locations (
locations), keep the prefilledAustin, TXor add your own place, for example78704orMiami, FL. - Keep Website = Realtor.com and Listing status = For sale (the defaults), and Max listings = 10 (the prefill).
- Click Start.
- Open the Output tab. The Listings view shows address, price, beds, baths and the link for each home.
Use cases
| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| New listings in a city | locations + status: for_sale | Listing | price, listedAt, daysOnMarket, url | Schedule + Google Sheets |
| Sales comps | status: sold + soldWithinDays | Sold listing | price, listPrice, soldAt, sqft | CSV export |
| Rental market check | status: for_rent + maxPrice | Rental | price (monthly rent), beds, sqft, buildingName | API / JSON |
| Portal check | same locations, run once with each source | Listing | mlsId, address, price | Join by mlsId or address |
Tips for better results
- Add up to 20 places per run, like a city, ZIP or county.
- Run the same search on both sites and match homes by MLS ID.
- For rentals, the price range is the monthly rent.
Limits and good to know
- Up to 20 places and 10,000 listings per run
- Realtor.com returns at most 10,000 results for one search, and some of them repeat. A very large place gives about 9,500 unique rows. The run log tells you when you hit this limit; split the place into ZIP codes
- Redfin city search uses the official city boundary from the US Census and saves only homes inside it. ZIP, county and redfin.com links work as Redfin defines them
- Redfin does not show the office name, so
brokerNameis empty for Redfin - In some regions Redfin does not show how long a home has been listed; then
listedAtanddaysOnMarketare empty bathscounts a half bath as 0.5 (for example 2 full + 1 half = 2.5)- If the portal blocks or fails for two places in a row, the run stops and skips the rest, so you do not pay for a long run with no data. Try again later
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"id": "realtor:8335975485",
"source": "realtor",
"propertyId": "8335975485",
"listingId": "3001860367",
"mlsId": "84517392",
"url": "https://www.realtor.com/realestateandhomes-detail/1704-Cherry-Orchard-Dr_Austin_TX_78745_M83359-75485",
"status": "for_sale",
"sourceStatus": "for_sale",
"address": "1704 Cherry Orchard Dr",
"city": "Austin",
"state": "TX",
"zip": "78745",
"lat": 30.201456,
"lng": -97.803077,
"price": 315000,
"priceMin": null,
"priceMax": null,
"listPrice": 315000,
"beds": 3,
"baths": 1,
"sqft": 934,
"lotSqft": 7675,
"yearBuilt": 1971,
"propertyType": "single_family",
"listedAt": "2026-10-15T05:36:33.000Z",
"soldAt": null,
"daysOnMarket": 0,
"photos": [
"https://ap.rdcpix.com/c98353ff63623b72d8afed1653f828ffl-m296950462s-w1280_h960.jpg"
],
"photoCount": 13,
"brokerName": "Houston Elite Properties LLC",
"buildingName": null,
"searchLocation": "Austin, TX",
"fetchedAt": "2026-10-15T05:57:50.503Z"
}Data fields (33)
| Field | Type | Meaning |
|---|---|---|
id | string | Unique row ID: source plus the site's property ID, e.g. realtor:9876543210. |
source | string | Site the listing comes from: realtor or redfin. |
propertyId | string | The site's own property ID. |
listingId | string | The site's listing ID for this listing, when it has one. |
mlsId | string | MLS number of the listing. |
url | string | Link to the listing page. |
status | string | for_sale, sold or for_rent, as asked in the input. |
sourceStatus | string | Status as the site shows it, e.g. Active, Pending, Coming Soon, Closed. |
address | string | Street address with unit number. |
city | string | City. |
state | string | Two-letter state code. |
zip | string | ZIP code. |
lat | number | Latitude. |
lng | number | Longitude. |
price | number | USD. For sale: asking price. Sold: sale price (null where the site hides it). Rent: monthly rent, the lowest one for buildings with several units. |
priceMin | number | Lowest price when the site shows a range (buildings, new construction). |
priceMax | number | Highest price when the site shows a range. |
listPrice | number | Asking price. For sold homes: the last asking price, when the site shows it. |
beds | integer | Bedrooms (the smallest unit for buildings). |
baths | number | Bathrooms, halves as .5. |
sqft | number | Living area in square feet. |
lotSqft | number | Lot size in square feet. |
yearBuilt | integer | Year built. |
propertyType | string | single_family, condo, townhouse, multi_family, apartment, manufactured, land, ... |
listedAt | string | When the listing went on the site (ISO date-time; Redfin: estimated to the minute from its time on site, empty where Redfin does not show it). |
soldAt | string | Sale date, YYYY-MM-DD (sold listings). |
daysOnMarket | integer | Whole days on the market: Redfin's own count for homes for sale, otherwise counted from listedAt. Null for sold listings. |
photos | array | Links to the full-size listing photos. |
photoCount | integer | Number of photos the listing has. |
brokerName | string | Public name of the listing office (Realtor.com only; Redfin search results do not include it). No agent names, phones or e-mails. |
buildingName | string | Building or community name (rentals). |
searchLocation | string | Which input location found this listing. |
fetchedAt | string | When the row was saved (ISO date-time). |
Input settings (7)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| Locations required | locations | array | ["Austin, TX"] |
| Website | source | string | "realtor" |
| Listing status | status | string | "for_sale" |
| Max listings | maxItems | integer | 10 |
| Min price (USD) | minPrice | integer | |
| Max price (USD) | maxPrice | integer | |
| Sold within (days) | soldWithinDays | integer | 90 |






