Realtor.com Scraper
Pricing
Pay per usage
Realtor.com Scraper
Extract live property listings, prices, photos, and agent details from Realtor.com. Perfect for market research, competitor tracking, and real estate lead generation, all automated at scale.
Pricing
Pay per usage
Rating
0.0
(0)
Developer

Shahid Irfan
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Extract for-sale property listings from Realtor.com search pages with clean, structured output ready for analytics, monitoring, and lead pipelines.
Features
- Search URL support — Start from a direct Realtor.com search URL.
- Location slug mode — Build search pages from a location slug when no URL is provided.
- Deterministic pagination — Uses stable offset-based pagination with a configurable cap.
- Clean dataset output — Omits null and empty values automatically.
- Duplicate-safe storage — Filters repeated listings by listing/property identifiers.
- Production-friendly controls — Supports proxy settings for stable runs.
Use Cases
Market Tracking
Track listing price changes, availability, and market movement by city or ZIP over time.
Lead Data Pipelines
Build structured listing feeds for CRM enrichment, outreach campaigns, or reporting.
Neighborhood Intelligence
Collect city-level and postal-level inventory snapshots for location comparison.
Competitive Monitoring
Monitor listing trends and volume changes across target regions in scheduled runs.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrl | String | No | https://www.realtor.com/realestateandhomes-search/Jacksonville_FL | Full Realtor search URL to start from |
location | String | No | Jacksonville_FL | Location slug used when startUrl is not provided |
results_wanted | Integer | No | 20 | Maximum number of listings to save |
max_pages | Integer | No | 5 | Maximum number of search pages to process |
proxyConfiguration | Object | No | Apify Residential Proxy | Proxy settings for reliability |
Output Data
Each dataset item may include:
| Field | Type | Description |
|---|---|---|
listing_id | String | Unique listing identifier |
property_id | String | Property identifier |
status | String | Listing status |
list_price | Number | Current asking price |
price_reduced_amount | Number | Price reduction amount when available |
list_date | String | Listing date |
description | Object | Property traits (beds, baths, sqft, lot size, type, year built) |
location | Object | Structured address and coordinates |
photo_count | Number | Number of photos |
primary_photo | String | Primary photo URL |
photos | Array | Flat photo URL list (no tags, ids, captions) |
products | Object | Listing product metadata |
matterport | Boolean | Matterport availability flag |
virtual_tours | Array | Virtual tour links when available |
url | String | Listing detail URL |
source_url | String | Search URL where the listing was found |
page | Number | Search page index |
Usage Examples
Basic City Search
{"startUrl": "https://www.realtor.com/realestateandhomes-search/Jacksonville_FL","results_wanted": 20,"max_pages": 3}
Slug-Based Search Without Start URL
{"location": "Austin_TX","results_wanted": 50,"max_pages": 5}
Higher-Volume Collection
{"startUrl": "https://www.realtor.com/realestateandhomes-search/Orlando_FL","results_wanted": 150,"max_pages": 8,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Sample Output
{"listing_id": "2981057150","property_id": "5249218121","status": "for_sale","list_price": 1900000,"description": {"beds": 5,"baths_consolidated": "4.5","sqft": 3509,"lot_sqft": 903870,"type": "single_family","year_built": 1997},"location": {"address": {"line": "455 County Road 217","city": "Jacksonville","state_code": "FL","postal_code": "32234"}},"url": "https://www.realtor.com/realestateandhomes-detail/455-County-Road-217_Jacksonville_FL_32234_M52492-18121","source_url": "https://www.realtor.com/realestateandhomes-search/Jacksonville_FL","page": 1}
Tips For Best Results
Keep Initial Runs Small
Start with results_wanted: 20 and max_pages: 2 to validate coverage, then scale.
Use Stable Search URLs
Use canonical city/state or ZIP-based search URLs for consistent pagination behavior.
Scale Collection Gradually
Use smaller results_wanted and max_pages values first, then scale gradually.
Use Residential Proxy For Reliability
Residential proxy settings improve consistency on stricter traffic patterns.
Integrations
- Google Sheets — Build shareable listing trackers.
- Airtable — Create searchable listing databases.
- Zapier — Trigger notifications and downstream actions.
- Make — Build no-code automation pipelines.
- Webhooks — Stream data to custom services.
Export Formats
- JSON — Developer-first integrations
- CSV — Spreadsheet and BI workflows
- Excel — Business reporting
- XML — Legacy system integrations
Frequently Asked Questions
Why are some fields missing in certain rows?
Listings can vary by source and market. The scraper keeps only available values and skips empty fields.
Can I scrape more than one city in one run?
Yes. Provide multiple start URLs by API input if needed, or run separate tasks per city.
How many results can I collect?
You can increase results_wanted and max_pages, subject to website availability and run limits.
Is pagination automatic?
Yes. The actor paginates automatically until limits are reached.
What proxy setting is recommended?
Residential proxy is recommended for stable large-scale collection.
Support
Use the Apify Console issue channels for bug reports and feature requests.
Resources
Legal Notice
This actor is intended for legitimate data collection. You are responsible for compliance with applicable laws and website terms.