Realtor.com Scraper - Homes for Sale & Rent Data
Pricing
from $2.20 / 1,000 results
Realtor.com Scraper - Homes for Sale & Rent Data
Scrape Realtor.com for-sale and rental listings by US city. Extract prices, beds, baths, sqft, MLS details, agents, photos, pet policy, floorplans, and fees. A Realtor.com API alternative for Excel, CSV, or JSON export.
Pricing
from $2.20 / 1,000 results
Rating
0.0
(0)
Developer
kane liu
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Realtor.com Scraper — Homes for Sale & Rent
Scrape Realtor.com for-sale and rental listings by US city — then download structured real estate data as Excel, CSV, or JSON.
Architecture: thin Apify Actor → realtor-com Cloud Run worker (HTTPS + API key).
Worker URL is config (WORKER_BASE_URL), not hardcoded-only — migrate the worker by updating Actor env without a code change. SetWORKER_PROVIDES_PROXY=1when the worker supplies its ownPROXY_URL.
This Actor is a practical Realtor.com API alternative for market research, investor screening, rental comps, and lead lists. Enter a city such as Austin, TX, choose For sale, For rent, or Both, optionally filter by full residential property types, and get listing rows with prices, beds, baths, sqft, MLS source, agents, photos, pet policy, floorplans, and fees when present.
- Pull homes for sale and apartments for rent from Realtor.com
- Filter by full residential property types: house, condo, townhouse, multi_family, mobile, farm, land, apartment (multi-select)
- Enrich search results with GraphQL home details (MLS, advertisers, photos, HOA, open houses, pet policy, floorplans)
- Or paste known detail URLs to skip search
- Export to Excel / CSV / JSON, or connect Make, n8n, Zapier, Python, or MCP
- Pay per event — Actor start + each Dataset listing; no subscription
Need a dedicated scraper for one website?
This Actor is the general tool for protected public pages. If you already have one specific site and a field list, a dedicated scraper is faster and more stable: listing + detail, your export format, delivered to your Apify account or as a standalone runnable client.
I confirm the tier before you pay. The clock starts after that confirmation.
Start here: Submit a custom scraper request
| Starter $50 | Dedicated $100 | Hard target $200–999 | |
|---|---|---|---|
| Site | 1 simple anti-bot public site | 1 medium anti-bot public site | Cloudflare / aggressive anti-bot / custom parser |
| Scope | Full listing + detail fields | Listing + detail + pagination, your field list | Agreed fields, repeatable runs |
| Delivery | CSV/JSON · Apify Actor or standalone runnable client (script/CLI) | Same, plus a sample run and short instructions | Feasibility first, then build |
| Time | 24 hours after we confirm the URL is in scope | 48 hours after confirmation | Quoted after feasibility |
| Fixes | 30 days for small public-layout changes | 30 days | Scoped in the quote |
Hard-target sites are not a 100% uptime promise. You get a dedicated parser that can be re-run on the agreed fields. If the URL is not feasible, you get a refund or pay an assessment fee only — you will know before the build starts.
Not in Starter/Dedicated: login-walled data, native APK / Windows installer / full web apps, or two-year maintenance. Those are a separate quote.
What does the Realtor.com Scraper do?
It turns a US city search on Realtor.com into a clean Apify Dataset of property listings.
Under the hood, the Actor mints an Apify RESIDENTIAL proxy (US, sticky per
location) and calls a dedicated Cloud Run worker (realtor-com), which:
- Resolves your location via search suggestions
- Runs
home_searchfor sale and/or rent with optional price and property-type filters - Optionally enriches each result with
home(property_id)detail fields (bounded concurrency) - Returns normalized records the Actor writes to the Dataset
Apify RESIDENTIAL proxy is required on cloud runs (prefilled). Proxy country follows the search location.
Property types (full residential set)
| Input value | Realtor.com category |
|---|---|
house | Single-family |
condo | Condo |
townhouse | Townhome |
multi_family | Multi-family |
mobile | Mobile / manufactured |
farm | Farm / ranch |
land | Land |
apartment | Apartment (esp. rentals) |
Use propertyTypes: ["house","condo"] for multi-select, or leave empty for all types. Legacy single propertyType is still accepted and merged.
Commercial office/retail/industrial is not supported (different product surface).
What data can you extract?
| Data point | For sale | For rent |
|---|---|---|
| Address / listing name | ✅ | ✅ |
| List price or rent range | ✅ | ✅ |
| Beds / baths / sqft | ✅ | ✅ |
| Property type & status | ✅ | ✅ |
| GPS coordinates | ✅ | ✅ |
| Listing URL & main image | ✅ | ✅ |
| MLS / source metadata | ✅ | ✅ |
| Agents / advertisers | ✅ | ✅ |
| Photo gallery | ✅ | ✅ |
| HOA / open houses | ✅ | — |
| Pet policy / fees / floorplans | — | ✅ |
Every Dataset row includes scrapedAt and source = realtor.com. A RUN_SUMMARY in the key-value store reports counts and warnings. Raw GraphQL payloads are off by default (includeRaw).
Lead & contact fields
Realtor.com exposes agent / office contact data inside the same GraphQL hydration that powers the listing detail page — no login, no click-to-reveal, no extra request beyond the detail enrichment the worker already performs. When enrichDetails is true (the default), every detail-enriched row carries the structured lead keys below. List-only rows (search results without enrichment) carry identity keys but thinner contact data; enable enrichDetails for outreach-ready records.
| Field | Type | Meaning on Realtor.com |
|---|---|---|
phones | [{ value, type }] | Listing agent phone + office phone (sale: advertisers[0].phones / advertisers[0].office.phones; rent: advertiser_contact_info.phone). Plain JSON, already visible. |
emails | [{ value, type }] | Agent direct email (sale: advertisers[0].email) or office/platform mailbox (rent: advertisers[0].office.email, e.g. rentalservice@move.com). |
address | { street, unit, locality, region, postalCode, country, full } | Structured property address from location.address. unit = street number / 门牌 (e.g. 9372); street = street name + suffix; full = assembled one-line address. |
geo | { lat, lng } | GPS coordinates from the listing, in addition to (not instead of) the street address. |
person | { name, role } | Listing agent name and role (e.g. TONI SMART, listing_agent). Rent listings may show Zillow as the advertiser — role is marked platform to distinguish the Zillow Rental Network mailbox from a per-listing agent. |
org | { name, id } | Brokerage / office name (e.g. Smart Group, REALTORS®). id is null when Realtor.com does not expose an office id. |
web | { website, socials } | Per-listing / per-agent website and social links. Realtor.com does not expose these — see Honest limitations. |
leadSource | enum | Where the lead was captured: search (list card) or detail (enriched home details). Detail-enriched rows are outreach-ready. |
leadReveal | enum | How the contact was surfaced. Realtor.com is visible everywhere — phones/emails are already in the GraphQL JSON, no click-to-reveal controls exist site-wide. |
leadAbsences | object | Per-subfield reason when a lead value is null (本站无 = site does not provide it, 闸门锁 = gated behind a form/login, 未验证 = not confirmed during research). |
Sample detail-enriched row (sale, San Antonio TX):
{"phones": [{ "value": "2106953663", "type": "Office" }],"emails": [{ "value": "smartgrouprealtors@gmail.com", "type": "agent" }],"address": { "street": "Boiling Rpd", "unit": "9372", "locality": "San Antonio", "region": "TX", "postalCode": "78254", "country": "USA", "full": "9372 Boiling Rpd, San Antonio, TX 78254" },"geo": { "lat": 29.531086, "lng": -98.77184 },"person": { "name": "TONI SMART", "role": "listing_agent" },"org": { "name": "Smart Group, REALTORS®", "id": null },"web": { "website": null, "socials": [] },"leadSource": "detail","leadReveal": "visible","leadAbsences": { "web": "本站无" }}
Reveal cost
There is no click-to-reveal cost on Realtor.com. Phones, emails, address, person, and org are all already-visible in the GraphQL hydration JSON returned by the /frontdoor/graphql GetHomeDetails call. The only added cost is the detail enrichment the worker already performs (one GraphQL request per listing when enrichDetails is on) — this is the same request that fetches MLS, photos, HOA, and floorplan data, so lead extraction adds zero extra requests or page loads beyond the normal enrichment. Set enrichDetails: true (default) to get outreach-ready records; list-only runs (enrichDetails: false) skip the detail request and return thinner contact data.
Honest limitations
web(website + socials) = 本站无. Realtor.com listing and advertiser data has no per-listing or per-agent website / social media fields. Only platform-levelsameAslinks (Facebook / Twitter / LinkedIn / Instagram) point to Realtor.com's own official accounts, not to individual agents.webis always{ website: null, socials: [] }withleadAbsences.web = "本站无".- Rent listings use a platform mailbox, not a direct agent email. Rental advertiser emails are often
rentalservice@move.com(Realtor.com / Move.com platform mailbox) rather than the listing agent's personal email. Sale listings expose the agent's direct email. - Rent listings may list
Zillowas the advertiser. Rentals sourced through the Zillow Rental Network showZillowas the advertiser name withperson.role = platform; this is the network operator, not a per-listing agent. Sale listings expose the named listing agent. - Agent profile pages are out of scope. Realtor.com agent profile pages belong to the separate Realtor.com Agents Scraper (RE-003). This Actor covers property listings only.
- "Contact agent" / "Email agent" buttons are lead forms (闸门锁), not revealers. They open a contact form, not hidden contact data — the actual phone/email is already visible above the form, so there is nothing to reveal by submitting it. This Actor does not submit forms.
- Commercial real estate is not supported. This Actor covers residential for-sale and for-rent categories only.
More Actors like this
Looking for another property portal, or a scraper outside real estate? Use a specialized Actor when one exists — structured fields, better coverage, usually lower cost. Use this Actor for Realtor.com residential for-sale / for-rent search and detail pages.
Similar real estate Actors
- Zillow & Zumper Scraper
- Realtor.com Agents Scraper
- Apartments.com Rental Scraper
- Zillow Group Scraper
- Craigslist Housing Scraper
- Realtor.ca Scraper
- Rightmove Scraper
- Idealista Scraper
- ImmoScout24 Scraper
- realestate.com.au Scraper
- Bayut Scraper
- Property Finder Scraper
Prefer another specialized scraper?
Jobs & Freelance
- LinkedIn Jobs Scraper
- Indeed Jobs Scraper
- Upwork Jobs Scraper
- Glassdoor Scraper
- Fiverr Gigs Scraper
- Bayt Jobs Scraper
E-commerce
- Walmart Product Scraper
- Amazon Search Scraper
- Shopee Search Scraper
- Etsy Scraper
- SHEIN Product Scraper
- Temu Product Scraper
- Target Product Scraper
- Allegro Scraper
Travel & Stays
Social & Content
Ads Intelligence
Local & Maps
General Tools
→ See the full catalog in Related Actors below, or browse apify.com/lentic_clockss.
How to scrape Realtor.com (no code required)
- Click Try for free
- Enter a location (
Austin, TX) - Choose For sale, For rent, or Both
- Optionally set property types, max results, and price filters
- Keep Apify RESIDENTIAL proxy enabled
- Click Start — open the Dataset tab when the run finishes
Start with maxResults: 5–10 to verify the market, then scale up (max 200).
Free Apify plan limits (set by this Actor's developer)
| Limit | Free Apify plan | Paid Apify plan |
|---|---|---|
| Runs of this Actor | 10 runs total | Unlimited |
Listings per run (maxResults) | Up to 200 | Up to 200 |
These caps are enforced by the Actor developer (not Apify platform errors). When you hit the 10-run limit, the run finishes gracefully with a clear status message asking you to upgrade.
Pricing — how much does it cost?
Pay per event. No subscription.
| Event | Price | When charged |
|---|---|---|
apify-actor-start | $0.005 | When a normal run starts (scaled by allocated memory GB) |
apify-default-dataset-item (result) | $2.80 / 1,000 ($0.0028 each) | Each listing written to the default Dataset |
User pays platform usage costs: Yes — compute, residential proxy, and other platform usage are billed separately.
Example product charges (events only):
| Scenario | Approx. event charge |
|---|---|
| Canary: 10 listings | $0.005 + 10 × $0.0028 = $0.033 |
| City scan: 100 listings | $0.005 + $0.28 = $0.285 |
| Cap run: 200 listings | $0.005 + $0.56 = $0.565 |
Free Apify plan: up to 10 runs of this Actor and 200 listings per run. Upgrade to a paid Apify plan for unlimited runs. (Limits set by the Actor developer.)
Input
| Field | Description |
|---|---|
location | City and state or ZIP |
listingType | sale, rent, or both |
maxResults | 1–200 (default 20); free users capped at 200/run + 10 runs total |
propertyTypes | Optional multi-select residential types |
propertyType | Legacy single type (merged into propertyTypes) |
minPrice / maxPrice | Optional USD filters |
detailUrls | Optional detail page URLs (skips search) |
enrichDetails | Fetch GraphQL home details (default true) |
includeRaw | Attach full GraphQL object (default false) |
proxyConfiguration | Apify RESIDENTIAL always used; country from location |
Connect from code
Actor ID: lentic_clockss/realtor-com-scraper
from apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("lentic_clockss/realtor-com-scraper").call(run_input={"location": "Austin, TX","listingType": "sale","maxResults": 10,"propertyTypes": ["house", "condo"],"enrichDetails": True,"proxyConfiguration": {"useApifyProxy": True,"apifyProxyGroups": ["RESIDENTIAL"],},})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item.get("name"), item.get("listPrice"), item.get("listingUrl"))
Live View / Standby endpoints
When Standby / Live View is enabled, the Actor exposes a small OpenAPI surface for readiness and discovery:
| Endpoint | Purpose |
|---|---|
GET / | Readiness / service info (Apify probe) |
GET /health | Health check |
GET /input-example | Low-cost example input |
GET /openapi.json | Deployed OpenAPI document |
Scraping still runs through a normal Actor run — Live View does not scrape Realtor.com by itself.
FAQ
Why am I limited to 10 runs / 200 listings on the free plan?
Those limits are set by this Actor's developer for free Apify plan users (not an Apify platform bug). Upgrade to a paid Apify plan for unlimited runs of this Actor. Event pricing (PPE) is separate from these free-tier caps.
Is there a free Realtor.com API?
Realtor.com does not offer a simple public listing API for bulk export. This Actor calls a Cloud Run worker that uses the public frontdoor GraphQL surface.
Can I scrape both for-sale and rental listings?
Yes. Set listingType to both. maxResults is split across sale and rent.
Why is a residential proxy required?
Realtor.com blocks many datacenter and direct IPs. Apify RESIDENTIAL with a country matched to the search location is required for reliable cloud runs.
Does this scrape commercial real estate?
No. Commercial office/retail/industrial is a different product surface. This Actor covers Realtor.com residential categories only (including multi-family, farm, and land filters on the residential site).
Related Actors
All 77 public Actors from [lentic_clockss]. Click a name to open the Store detail page.
Jobs & Freelance
- LinkedIn Jobs Scraper
- Bayt Jobs Scraper
- Fiverr Gigs Scraper
- Freelancer.com Scraper
- Glassdoor Scraper
- Himalayas Jobs Scraper
- Indeed Jobs Scraper
- Jobicy Remote Jobs Scraper
- RemoteOK Jobs Scraper
- SEEK Jobs Scraper
- Upwork Jobs Scraper
Real Estate
- Zillow & Zumper Scraper
- Realtor.com Scraper
- 99.co Scraper
- Realtor.com Agents Scraper
- Apartments.com Rental Scraper
- Bayut Scraper
- Craigslist Housing Scraper
- Daft.ie Scraper
- Dot Property Scraper
- FINN.no Scraper
- Funda Scraper
- Hepsiemlak Scraper
- Idealista Scraper
- Immobiliare.it Scraper
- ImmoScout24 Scraper
- Naver Land Scraper
- OpenSooq Scraper
- Otodom Scraper
- Property Finder Scraper
- PropertyGuru Scraper
- realestate.com.au Scraper
- Realtor.ca Scraper
- Rightmove Scraper
- SeLoger Scraper
- SUUMO Scraper
- Zillow Group Scraper
E-commerce
- Shopee Search Scraper
- E-commerce Scraper
- 1688 Global Product Search Scraper
- Allegro Scraper
- Amazon Search Scraper
- ASOS Product Scraper
- Cdiscount Product Scraper
- Costco Product Scraper
- Coupang Product Scraper
- Etsy Scraper
- Lazada Scraper
- MercadoLibre Scraper
- Mercari Japan Scraper
- Rakuten Japan Scraper
- SHEIN Product Scraper
- Target Product Scraper
- Temu Product Scraper
- Walmart Product Scraper
Travel & Stays
- Booking.com & Airbnb Scraper
- Agoda Scraper
- Airbnb Listings Scraper
- Booking.com Hotels Scraper
- Despegar Scraper
- Expedia Scraper
- Traveloka Scraper
- Travelstart Flights Scraper
- Trip.com Scraper
- TripAdvisor Scraper
Social & Content
Ads Intelligence
Local & Maps
General Tools
→ Browse the full profile: apify.com/lentic_clockss