Realtor.com Scraper avatar

Realtor.com Scraper

Pricing

Pay per usage

Go to Apify Store
Realtor.com Scraper

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

Shahid Irfan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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

ParameterTypeRequiredDefaultDescription
startUrlStringNohttps://www.realtor.com/realestateandhomes-search/Jacksonville_FLFull Realtor search URL to start from
locationStringNoJacksonville_FLLocation slug used when startUrl is not provided
results_wantedIntegerNo20Maximum number of listings to save
max_pagesIntegerNo5Maximum number of search pages to process
proxyConfigurationObjectNoApify Residential ProxyProxy settings for reliability

Output Data

Each dataset item may include:

FieldTypeDescription
listing_idStringUnique listing identifier
property_idStringProperty identifier
statusStringListing status
list_priceNumberCurrent asking price
price_reduced_amountNumberPrice reduction amount when available
list_dateStringListing date
descriptionObjectProperty traits (beds, baths, sqft, lot size, type, year built)
locationObjectStructured address and coordinates
photo_countNumberNumber of photos
primary_photoStringPrimary photo URL
photosArrayFlat photo URL list (no tags, ids, captions)
productsObjectListing product metadata
matterportBooleanMatterport availability flag
virtual_toursArrayVirtual tour links when available
urlStringListing detail URL
source_urlStringSearch URL where the listing was found
pageNumberSearch page index

Usage Examples

{
"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.

Residential proxy is recommended for stable large-scale collection.


Support

Use the Apify Console issue channels for bug reports and feature requests.

Resources


This actor is intended for legitimate data collection. You are responsible for compliance with applicable laws and website terms.