Real Estate Listings Scraper
Pricing
Pay per usage
Real Estate Listings Scraper
Extracts structured property data from real estate search pages via schema.org and CSS selectors. No API key needed. Built-in presets for Realtor.com, Zillow, Rightmove. Customize selectors for any portal via input config.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Proyecto Apify
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Extracts structured property listing data from real estate portal search pages or direct listing URLs. No API key, no login — just public pages.
How It Works
- Start URLs — Provide search results page URLs or direct listing URLs.
- Phase 1 (CheerioCrawler) — Fast HTML parsing. Tries schema.org/RealEstateListing JSON-LD first (most stable), then CSS selectors.
- Phase 2 (PlaywrightCrawler) — If Cheerio finds zero listing cards (portal uses JavaScript rendering), the Actor automatically retries with a headless browser.
- Output — One row per listing in the Dataset.
Extracted Fields
| Field | Description |
|---|---|
title | Listing title / property name |
price | Normalized price (numeric) |
currency | Currency code (e.g. USD, GBP) |
address | Full address string |
propertyType | House, apartment, land, etc. |
sizeValue | Numeric size |
sizeUnit | sqft, sqm, or null |
bedrooms | Number of bedrooms |
bathrooms | Number of bathrooms |
description | Listing description text |
primaryPhotoUrl | Main photo URL |
listingUrl | Direct link to the listing |
publishDate | Date listed |
agentName | Agent/agency name (if visible) |
agentPhone | Agent phone (if visible) |
extractionMethod | How the data was extracted |
Portal Configuration
The Actor includes built-in presets for: Realtor.com, Zillow, Rightmove, and a generic preset that uses schema.org markup (works with many portals worldwide).
Using a Built-In Preset
Just add the URL — the Actor auto-detects the portal:
{"startUrls": [{ "url": "https://www.realtor.com/realestateandhomes-search/San-Francisco_CA" }]}
Custom Selectors for a New Portal
Override any selector via portalConfig:
{"startUrls": [{"url": "https://example-real-estate.com/search","portalConfig": {"searchCardSelector": ".listing-item","cardLinkSelector": "a.listing-link","cardPriceSelector": ".price-tag","priceSelector": "[data-price]","addressSelector": ".property-address","titleSelector": "h1.title","descriptionSelector": ".listing-body","sizeSelector": ".area-value","bedroomsSelector": ".bed-count","bathroomsSelector": ".bath-count","imageSelector": ".main-photo img","agentNameSelector": ".agent-info .name","agentPhoneSelector": "a[href^='tel:']"}}]}
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | Array | (required) | Search page or listing URLs |
maxListingsPerSearch | Integer | 30 | Max listings per search page |
currency | String | USD | Preferred currency code |
includeAgentContact | Boolean | true | Extract agent name and phone |
proxyConfiguration | Object | Apify proxy | Proxy settings |
maxConcurrency | Integer | 2 | Max concurrent requests |
Example Output
{"title": "123 Main St, San Francisco, CA 94102","price": 1250000,"currency": "USD","address": "123 Main St, San Francisco, CA 94102","propertyType": "House","sizeValue": 1850,"sizeUnit": "sqft","bedrooms": 3,"bathrooms": 2,"description": "Beautiful Victorian home...","primaryPhotoUrl": "https://example.com/photo.jpg","listingUrl": "https://www.realtor.com/property/123","publishDate": "2025-01-10","agentName": "Jane Smith","agentPhone": "+1-555-0123","portal": "realtor","extractionMethod": "schema.org","scrapedAt": "2025-01-15T10:30:00Z"}
⚠️ Important
- Only accesses publicly visible pages — no login-gated listings
- No MLS/IDX data — only what portals show to unauthenticated visitors
- Selector presets may need adjustment if a portal redesigns
- Results depend on portal structure; not all fields will be available for every listing
Costs
Pay per result pricing. Each listing row in the Dataset counts as one result. Pages that return no data or fail to load are not charged.
License
ISC