Realtor.com Scraper
Pricing
from $1.30 / 1,000 results
Realtor.com Scraper
Scrape Realtor.com property listings by location or ZIP code with full search filters. Extract list price, beds and baths, square footage, lot size, photos, property type, HOA fees, and listing status, including active, sold, pending, and contingent listings.
Pricing
from $1.30 / 1,000 results
Rating
0.0
(0)
Developer
Farhan Ali
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Realtor.com Scraper creates a structured dataset of property listings collected from Realtor.com, the US real estate portal. Each dataset item represents one property and can include list price, beds and baths, square footage, lot size, photos, property type, coordinates, and listing status. Query the source by location or ZIP code with 30+ search filters, control the result limit with maxItems, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, or other supported formats.
Dataset at a glance
| Property | Value |
|---|---|
| Source | realtor.com (United States) |
| Record unit | One property listing |
| Input methods | Location (searchLocation) or ZIP codes (zipCodes) with search filters |
| Main identifiers | propertyId, listingId |
| Delivery | Apify Dataset and API |
| Export formats | JSON, CSV, Excel, XML, HTML (Apify dataset exports) |
| Update model | Fresh records per Actor run |
| Pricing | $2 per 1,000 listings |
Coverage and available records
The Actor collects properties from public Realtor.com search results using a location or ZIP-code entry point:
- Location-based: Pass a city, neighborhood, or address (for example
"Austin, TX") insearchLocation. - ZIP-code-based: Pass one or more US ZIP codes (for example
["78702", "78704"]) inzipCodes, alone or combined with a location.
Supported record types and limits:
- Listing-level records are always collected: property ID, listing ID, URL, status, list price, list date, property type, beds, baths, square feet, lot size, address, coordinates, primary photo, and photo count.
- Status filters:
listingStatussupports active, pending, contingent, and sold listings (defaultactive). - Result cap:
maxItemslimits the number of listings collected (0means unlimited; the default is50). - Filters: 30+ filters for price, beds, baths, property type, features, keywords, commute time, HOA fees, open houses, square footage, lot size, home age, and more.
Known exclusions: each run captures page state at run time (no historical snapshots); fields the listing does not expose (for example isNewConstruction) are returned as null.
Data dictionary
Field names below match dataset record JSON properties exactly.
| Field | Type | Nullable | Description | Example |
|---|---|---|---|---|
propertyId | string | No | Realtor.com property identifier; best stable deduplication key | 9607103106 |
listingId | string | No | Realtor.com listing identifier | 2997598864 |
url | string | No | Listing detail URL | https://www.realtor.com/realestateandhomes-detail/... |
status | string | No | Listing status | for_sale |
listPrice | number | Yes | Current list price in USD | 1100000 |
listDate | string | Yes | Date listed (ISO 8601) | 2026-06-24T04:15:09.000000Z |
propertyType | string | Yes | Property type | single_family |
beds | number | Yes | Number of bedrooms | 4 |
baths | string | Yes | Number of bathrooms (may include +) | 2.5+ |
squareFeet | number | Yes | Interior square footage | 2538 |
lotSquareFeet | number | Yes | Lot size in square feet | 2309 |
address | string | Yes | Full address | 3101.5 Neal St, Austin, TX, 78702 |
city | string | Yes | City | Austin |
state | string | Yes | State | TX |
zipCode | string | Yes | ZIP code | 78702 |
latitude | number | Yes | Map latitude | 30.265224 |
longitude | number | Yes | Map longitude | -97.703499 |
primaryPhotoUrl | string | Yes | Primary photo URL | https://ap.rdcpix.com/... |
photoCount | number | Yes | Number of photos | 15 |
isNewListing | boolean | Yes | Whether the listing is new | true |
isNewConstruction | boolean | Yes | Whether it is new construction | true |
Example dataset record
Real record produced with a location search (searchLocation: "Austin, TX"), active listings, minimum price $150,000.
{"propertyId": "9607103106","listingId": "2997598864","url": "https://www.realtor.com/realestateandhomes-detail/31015-Neal-St_Austin_TX_78702_M96071-03106","status": "for_sale","listPrice": 1100000,"listDate": "2026-06-24T04:15:09.000000Z","propertyType": "single_family","beds": 4,"baths": "2.5+","squareFeet": 2538,"lotSquareFeet": 2309,"address": "3101.5 Neal St, Austin, TX, 78702","city": "Austin","state": "TX","zipCode": "78702","latitude": 30.265224,"longitude": -97.703499,"primaryPhotoUrl": "https://ap.rdcpix.com/6e0c453a2d46d2fce84428317a99692dl-m2570498838s.jpg","photoCount": 15,"isNewListing": true,"isNewConstruction": true}
The record above was produced with this input:
{"searchLocation": "Austin, TX","maxItems": 10,"listingStatus": ["active"],"minPrice": 150000,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
Query and input reference
| Input | Type | Required | Default | Accepted values | Description |
|---|---|---|---|---|---|
searchLocation | string | No* | Austin, TX | City, neighborhood, or address | Location search |
zipCodes | array (stringList) | No* | ["78702"] | US ZIP codes | ZIP-code search, alone or with location |
maxItems | integer | No | 50 | 0 (unlimited) or positive integer | Maximum listings to collect |
sortBy | string | No | relevant | relevant, newest, lowest_price, highest_price, open_house_date, recently_reduced, lot_size, photo_count | Sort order |
minPrice / maxPrice | integer | No | — | USD | Price range |
priceReduced | boolean | No | false | true / false | Price reduced in last 30 days |
builderPromotions | boolean | No | false | true / false | Builder promotions only |
bedrooms | array | No | — | studio, 1, 2, 3, 4, 5_plus | Bedroom filter |
bathrooms | array | No | — | 1, 2, 3, 4, 5_plus | Bathroom filter |
propertyTypes | array | No | — | house, condo, townhouse, multi_family, mobile, land, farm | Home type |
listingStatus | array | No | ["active"] | active, pending, contingent, sold | Listing activity status |
listingTypes | array | No | — | existing_homes, foreclosures, new_construction, 55_plus_community, auction | Special listing categories |
soldWithinMonths | integer | No | 6 | 1, 3, 6, 12, 24, 36 | Limit sold search |
tours | array | No | — | open_house, three_d_tour, virtual_tour | Open house and tour filters |
daysOnRealtor | integer | No | — | 2, 7, 14, 21, 30 | Listed within N days |
minSquareFeet / maxSquareFeet | integer | No | — | sqft | Interior square footage range |
minLotSizeSqft / maxLotSizeSqft | integer | No | — | sqft | Lot size range |
minHomeAgeYears / maxHomeAgeYears | integer | No | — | years | Home age range |
maxHoaFeePerMonth | integer | No | — | USD (50–3000) | Max monthly HOA fee |
garageSpaces | integer | No | — | 1, 2, 3 | Minimum garage spaces |
stories | string | No | — | single, multiple | Number of stories |
keywords | array | No | — | Free text (e.g. pool, waterfront) | Keyword filters |
features | array | No | — | basement, pool, waterfront, and 40+ more | Home feature tags |
commuteAddress | string | No | — | Address | Commute destination |
commuteMode | string | No | — | walking, cycling, transit, driving | Commute transport mode |
maxCommuteMinutes | integer | No | — | 10–60 | Max commute minutes |
searchRadiusMiles | integer | No | — | miles | Expand search radius |
proxyConfiguration | object | No | Apify proxy, RESIDENTIAL group | Apify proxy groups or custom proxies | Residential proxies are recommended |
* Provide either searchLocation or zipCodes — at least one source is required.
Minimal request:
{ "searchLocation": "Austin, TX" }
Advanced request (location search with filters):
{"searchLocation": "Austin, TX","listingStatus": ["active"],"minPrice": 250000,"maxPrice": 900000,"bedrooms": ["3", "4"],"bathrooms": ["2"],"propertyTypes": ["house"],"features": ["pool", "hardwood_floors"],"maxItems": 500,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
Retrieve the data through the API
The Actor runs on the Apify platform, so there is no server to host and no crawling infrastructure to maintain.
- Start the Actor with a JSON input (console or API).
- Wait for the run to finish, or use a synchronous endpoint if you want the response inline.
- Retrieve items from the run's default dataset.
- Paginate or export the dataset.
Python example:
from apify_client import ApifyClientclient = ApifyClient("YOUR-APIFY-TOKEN")run_input = {"searchLocation": "Austin, TX","maxItems": 10,"listingStatus": ["active"],}run = client.actor("datascrapers/realtor-scraper").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["propertyId"], item["listPrice"], item["address"])
Apify generates ready-to-run Python, JavaScript, and cURL examples on the Actor's API tab. Do not put a real API token in shared code or URLs.
Data quality and record handling
- Nullability: fields the listing does not expose (for example
isNewConstructionorlistPrice) are returned as null rather than fabricated. - Source changes: Realtor.com page structure and values can change; unreadable fields are returned as null.
- Deduplication: each run appends fresh records; the Actor does not deduplicate listings across runs. Use
propertyIdas the stable key and filter repeated runs against previously stored IDs. - Rate limits: Realtor.com can rate-limit automated traffic; residential proxies are recommended for consistent coverage.
- Normalization:
listPriceis a numeric USD value;bathsmay include a+suffix (for example2.5+);listDateis an ISO 8601 timestamp.
Export and pipeline examples
| Destination | Recommended method | Typical use |
|---|---|---|
| PostgreSQL / Supabase | Dataset API poll or webhook consumer | Store US property inventory with price history |
| Google Sheets | Apify Google Sheets integration | Share market shortlists with agents |
| BI tools (Looker, Tableau) | Scheduled export via Apify scheduler | Price-per-square-foot benchmarking |
| S3 / cloud storage | Scheduled export + integration | Archival of market snapshots |
Pricing and cost examples
The Actor uses pay-per-event pricing with a single chargeable result event:
| Event | Trigger | Rate |
|---|---|---|
| Result | Every listing record pushed to the dataset | $2 per 1,000 listings |
Example costs:
| Records | Configuration | Estimated base cost |
|---|---|---|
| 1,000 | Active listings | $2.00 |
| 10,000 | Active listings | $20.00 |
| 50,000 | Active listings | $100.00 |
Apify paid plans reduce the per-1,000 rate. Compute units consumed by the run are billed by your Apify plan. Estimates depend on the verified pricing model and the options selected for the run.
Limitations and responsible data use
- The Actor collects publicly accessible data from Realtor.com pages only.
- Field availability depends on what Realtor.com renders at run time; some values can be null or missing, and site changes can alter fields.
- The Actor does not provide historical snapshots unless you store them yourself.
- Large runs require residential proxies; without them, coverage may degrade due to rate limiting.
- You are responsible for compliance with Realtor.com's terms of service, applicable privacy law, and any contractual obligations before using the data.
Dataset questions
What does one dataset item represent?
One property listing from Realtor.com, with its price, size, location, photos, and listing status in a single record.
Which field should I use as a unique identifier?
propertyId is the stable Realtor.com property identifier and is the recommended deduplication key. listingId is a reasonable secondary key tied to a specific listing.
Are fields nullable or conditional?
Yes. Fields the listing does not expose are returned as null (for example isNewConstruction). baths is a string and may include a + suffix, so treat it as text rather than a number.
Can I retrieve the records as CSV or JSON?
Yes. The dataset can be exported as JSON, CSV, Excel, XML, or HTML from the Apify Console, and queried through the Dataset API.
Does the Actor return historical data?
No. Each run captures the state of the pages at run time. To track price changes over time, schedule repeated runs and store the outputs yourself.
What counts as a billable result?
A single pay-per-event charge applies: $2 per 1,000 listing records pushed to the dataset. There are no separate detail or contact charges for this Actor.
Which listing statuses can I filter?
listingStatus supports active, pending, contingent, and sold. Use soldWithinMonths to limit sold listings to recent sales, and listingTypes for foreclosures, new construction, and other categories.
Related datasets from Data Scrapers
- Zoopla Scraper — UK property listings for cross-market real estate research.
- Redfin Scraper — US property listings and market signals that can be joined by address or ZIP code.
- Apartments Scraper — US rental listings for comparative housing market analysis.
Data Scrapers support
Need an additional field, record type, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample source URL, required fields, expected record volume, and preferred delivery format.