Realtor.com Scraper - Homes for Sale & Rent Data avatar

Realtor.com Scraper - Homes for Sale & Rent Data

Pricing

from $2.20 / 1,000 results

Go to Apify Store
Realtor.com Scraper - Homes for Sale & Rent Data

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

kane liu

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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. Set WORKER_PROVIDES_PROXY=1 when the worker supplies its own PROXY_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 $50Dedicated $100Hard target $200–999
Site1 simple anti-bot public site1 medium anti-bot public siteCloudflare / aggressive anti-bot / custom parser
ScopeFull listing + detail fieldsListing + detail + pagination, your field listAgreed fields, repeatable runs
DeliveryCSV/JSON · Apify Actor or standalone runnable client (script/CLI)Same, plus a sample run and short instructionsFeasibility first, then build
Time24 hours after we confirm the URL is in scope48 hours after confirmationQuoted after feasibility
Fixes30 days for small public-layout changes30 daysScoped 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:

  1. Resolves your location via search suggestions
  2. Runs home_search for sale and/or rent with optional price and property-type filters
  3. Optionally enriches each result with home(property_id) detail fields (bounded concurrency)
  4. 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 valueRealtor.com category
houseSingle-family
condoCondo
townhouseTownhome
multi_familyMulti-family
mobileMobile / manufactured
farmFarm / ranch
landLand
apartmentApartment (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 pointFor saleFor 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.

FieldTypeMeaning 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.
leadSourceenumWhere the lead was captured: search (list card) or detail (enriched home details). Detail-enriched rows are outreach-ready.
leadRevealenumHow 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.
leadAbsencesobjectPer-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-level sameAs links (Facebook / Twitter / LinkedIn / Instagram) point to Realtor.com's own official accounts, not to individual agents. web is always { website: null, socials: [] } with leadAbsences.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 Zillow as the advertiser. Rentals sourced through the Zillow Rental Network show Zillow as the advertiser name with person.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

Prefer another specialized scraper?

Jobs & Freelance

E-commerce

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)

  1. Click Try for free
  2. Enter a location (Austin, TX)
  3. Choose For sale, For rent, or Both
  4. Optionally set property types, max results, and price filters
  5. Keep Apify RESIDENTIAL proxy enabled
  6. 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)

LimitFree Apify planPaid Apify plan
Runs of this Actor10 runs totalUnlimited
Listings per run (maxResults)Up to 200Up 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.

EventPriceWhen charged
apify-actor-start$0.005When 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):

ScenarioApprox. 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

FieldDescription
locationCity and state or ZIP
listingTypesale, rent, or both
maxResults1–200 (default 20); free users capped at 200/run + 10 runs total
propertyTypesOptional multi-select residential types
propertyTypeLegacy single type (merged into propertyTypes)
minPrice / maxPriceOptional USD filters
detailUrlsOptional detail page URLs (skips search)
enrichDetailsFetch GraphQL home details (default true)
includeRawAttach full GraphQL object (default false)
proxyConfigurationApify RESIDENTIAL always used; country from location

Connect from code

Actor ID: lentic_clockss/realtor-com-scraper

from apify_client import ApifyClient
client = 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:

EndpointPurpose
GET /Readiness / service info (Apify probe)
GET /healthHealth check
GET /input-exampleLow-cost example input
GET /openapi.jsonDeployed 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).


All 77 public Actors from [lentic_clockss]. Click a name to open the Store detail page.

Jobs & Freelance

Real Estate

E-commerce

Travel & Stays

Social & Content

Ads Intelligence

Local & Maps

General Tools

→ Browse the full profile: apify.com/lentic_clockss