Realtor.com $0.9๐ฐ Listings, Prices & Agent Details
Pricing
from $0.90 / 1,000 results
Realtor.com $0.9๐ฐ Listings, Prices & Agent Details
From $0.9/1K. Extract property listings from realtor.com. Get comprehensive data, including prices, property details, agent contacts, coordinates, photos, and more. Supports for sale, rental, and recently sold listings across all US markets.
Pricing
from $0.90 / 1,000 results
Rating
5.0
(2)
Developer
Abot API
Maintained by CommunityActor stats
2
Bookmarked
12
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
Realtor.com Property Scraper
Extract property listings from realtor.com, the largest US real estate listing site with over 100 million monthly visitors. Get comprehensive data including prices, property details, agent contacts, coordinates, photos, and more. Supports for sale, rental, and recently sold listings across all US markets.
What does Realtor.com Scraper do?
This Actor collects property listings from realtor.com for any US city or neighborhood. It extracts up to 200 listings per request and supports all listing types, property types, and search filters. Results are delivered in structured JSON format, ready for analysis or integration into your applications.
Key Features
| Feature | Description |
|---|---|
| Search Any US Location | Enter a city and state to scrape properties in any market |
| All Listing Types | For Sale, For Rent, and Recently Sold properties |
| Property Type Filters | Single Family, Condo, Townhome, Multi Family, Mobile, Farm, Land |
| Price and Room Filters | Narrow results by price range, bedrooms, and bathrooms |
| 200 Listings Per Page | High speed extraction with up to 200 properties per request |
| Rental Data | Building names, pet policies, individual unit details with prices |
| Sold Data | Sold price and sold date for recently sold listings |
| Agent and Brokerage Data | Contact details for listing agents and offices |
| Photos and Virtual Tours | Property images, 3D Matterport tours, and Google Street View links |
| GPS Coordinates | Latitude and longitude for mapping and geospatial analysis |
| MLS Data | MLS ID, MLS name, and source information |
| Resume Support | Checkpoint based resume for large scale scrapes |
What data can you extract?
The scraper extracts 40+ fields per listing:
|
Property Details
|
Pricing
|
|
Listing Flags
|
Agent and Brokerage
|
|
Media and Location
|
Rental Specific
|
How to use Realtor.com Scraper
Step 1: Choose your search mode
Search by Location (best for market research)
{"mode": "location","locations": [{ "city": "Portland", "state": "OR" },{ "city": "Seattle", "state": "WA" }],"listingType": "for_sale"}
Direct URLs (best for specific searches with custom filters)
{"mode": "url","urls": ["https://www.realtor.com/realestateandhomes-search/Portland_OR/type-single-family-home/beds-3","https://www.realtor.com/apartments/Seattle_WA/beds-2"]}
Step 2: Add filters (optional)
{"mode": "location","locations": [{ "city": "Denver", "state": "CO" }],"listingType": "for_sale","propertyType": "single_family","bedsMin": 3,"bathsMin": 2,"priceMin": 400000,"priceMax": 800000}
Step 3: Scrape rentals
{"mode": "location","locations": [{ "city": "Austin", "state": "TX" }],"listingType": "for_rent","bedsMin": 2,"priceMin": 1000,"priceMax": 2500}
Step 4: Scrape sold properties
{"mode": "location","locations": [{ "city": "San Francisco", "state": "CA" }],"listingType": "sold","propertyType": "condo"}
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | location | Search mode: location or url |
locations | object[] | Cities to search. Each has city (string) and state (2 letter code) | |
urls | string[] | Full realtor.com search URLs (for url mode) | |
listingType | string | for_sale | for_sale, for_rent, or sold |
propertyType | string | any | any, single_family, condo, townhome, multi_family, mobile, farm, land |
bedsMin | integer | Minimum bedrooms (1 to 5) | |
bathsMin | integer | Minimum bathrooms (1 to 5) | |
priceMin | integer | Minimum price (USD) | |
priceMax | integer | Maximum price (USD) | |
openHouseOnly | boolean | false | Only listings with open houses (for sale only) |
newConstructionOnly | boolean | false | Only new construction (for sale and sold only) |
maxListings | integer | 20 | Maximum total listings (0 = unlimited) |
maxPages | integer | 0 | Maximum pages per location (0 = unlimited) |
resumeFromCheckpoint | boolean | true | Resume from last checkpoint on restart |
resumeFromRunId | string | Continue one interrupted run by pasting its run/dataset ID | |
incrementalMode | boolean | false | Track this search across scheduled runs and classify changes |
stateKey | string | Optional manual key identifying the tracked baseline | |
emitUnchanged | boolean | false | Return (and bill) rows unchanged since the last run |
emitExpired | boolean | false | Return (and bill) tombstone rows for listings no longer found |
Filter Compatibility
| Filter | For Sale | For Rent | Sold |
|---|---|---|---|
propertyType | All types | All types | All types |
bedsMin / bathsMin | Yes | Yes | Yes |
priceMin / priceMax | Yes | Yes | Yes |
openHouseOnly | Yes | Ignored | Ignored |
newConstructionOnly | Yes | Ignored | Yes |
Location Examples
| City | State | What it searches |
|---|---|---|
Portland | OR | All of Portland, Oregon |
New York | NY | All of New York City |
San Francisco | CA | San Francisco, California |
Capitol Hill | WA | Capitol Hill neighborhood in Seattle |
Orenco | OR | Orenco neighborhood in Hillsboro |
Resume and recurring updates
Two related but distinct features:
-
resumeFromRunIdโ continue ONE specific interrupted run. Paste a previous run ID or dataset ID from your account; listings it already collected are skipped so this run returns only the delta. This is different fromresumeFromCheckpointabove, which auto-continues via this actor's own internal checkpoint (no ID needed), and from Incremental mode below (which tracks a recurring search on its own, without needing an ID at all). -
incrementalModeโ turn this ON when you run this actor on a schedule against the same search. Each listing is classified against the previous run of the same search:NEWโ never seen beforeUPDATEDโ seen before, one or more fields changed (changedFieldslists which)UNCHANGEDโ identical to the last runREAPPEAREDโ was previously marked gone, is backEXPIREDโ a tombstone row for a listing no longer found, only emitted after a run that scanned every configured search to its natural end. A resume, a block, or a Max Pages/Max Listings cap skips EXPIRED detection for that run and keeps the previous state as-is, rather than risk marking still-live listings gone.
Every dataset row also gets
firstSeenAt/lastSeenAttimestamps.incrementalModeis OFF by default โ existing scheduled runs are unaffected until you opt in.Which baseline a search is compared against is controlled by
stateKey: leave it empty to auto-derive one from your location/URL and filter settings (two differently-configured searches never share a baseline either way), or set your own text to fully control it.Billing: a suppressed
UNCHANGEDrow is never pushed, so it is never billed.emitUnchangedandemitExpiredare both OFF by default for this reason โ turning either on returns (and bills) extra dataset rows every run.
Send results into your apps (MCP connectors)
Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape โ the Apify dataset is never changed.
What gets written to the connector: a condensed, human-readable summary of each record โ not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.
- Authorize a connector once under Apify โ Settings โ Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
- For Notion, also set
notionParentPageUrlto the page where items should be created.
The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.
Output Example
For Sale
{"propertyId": "P100234567","listingId": "L299887766","url": "https://www.realtor.com/realestateandhomes-detail/123-Main-St_Portland_OR_97201_M12345-67890","listingType": "for_sale","status": "for_sale","address": {"street": "123 Main St","city": "Portland","state": "Oregon","stateCode": "OR","postalCode": "97201","county": "Multnomah","full": "123 Main St, Portland, OR, 97201"},"coordinates": {"latitude": 45.5231,"longitude": -122.6765},"price": {"value": 525000,"display": "$525,000"},"features": {"propertyType": "single_family","bedrooms": 3,"bathrooms": 2.5,"sqft": 1850,"lotSqft": 5200,"yearBuilt": 2005,"garage": 2},"flags": {"isNewListing": true},"agents": [{"name": "Jane Smith","email": "jane@example.com","type": "seller","office": "Example Realty Group","phone": "5035551234"}],"brokerage": "Example Realty Group","mlsId": "MLS12345","mlsName": "RMLS","streetViewUrl": "https://maps.googleapis.com/maps/api/streetview?...","hasMatterport": true,"photos": ["https://ap.rdcpix.com/example-photo-od-w480_h360_x2.jpg"],"photoCount": 32,"listDate": "2026-03-15T10:00:00.000000Z","scrapedAt": "2026-03-23T10:30:00.000Z"}
Rental
{"propertyId": "P960012345","listingId": "L297700001","url": "https://www.realtor.com/rentals/details/456-Oak-Ave_Portland_OR_97209_M96001-23456","listingType": "for_rent","status": "for_rent","address": {"street": "456 Oak Ave","city": "Portland","stateCode": "OR","postalCode": "97209","county": "Multnomah","full": "456 Oak Ave, Portland, OR, 97209"},"price": {"min": 1200,"max": 1800,"display": "$1,200 - $1,800"},"features": {"propertyType": "apartment","bedrooms": 1,"bathrooms": 1,"sqft": 650},"buildingName": "Pearl District Apartments","petPolicy": {"cats": true,"dogs": true},"units": [{ "beds": 1, "baths": 1, "sqft": 650, "price": 1200 },{ "beds": 2, "baths": 1, "sqft": 900, "price": 1800, "availableDate": "2026-04-01" }],"scrapedAt": "2026-03-23T10:30:00.000Z"}
Recently Sold
{"propertyId": "P121000001","url": "https://www.realtor.com/realestateandhomes-detail/789-Elm-Dr_Portland_OR_97224_M12100-00001","listingType": "sold","status": "sold","address": {"street": "789 Elm Dr","city": "Portland","state": "Oregon","stateCode": "OR","postalCode": "97224","county": "Washington","full": "789 Elm Dr, Portland, OR, 97224"},"price": {"value": 475000,"display": "$475,000"},"soldPrice": 465000,"soldDate": "2026-03-10","features": {"propertyType": "single_family","bedrooms": 3,"bathrooms": 2,"sqft": 1600,"yearBuilt": 1995},"brokerage": "Example Real Estate LLC","mlsId": "MLS67890","mlsName": "Willamette","scrapedAt": "2026-03-23T10:30:00.000Z"}