Realtor.com Scraper — US Sold Comps, ZIP & Monitor avatar

Realtor.com Scraper — US Sold Comps, ZIP & Monitor

Pricing

from $0.99 / 1,000 listings

Go to Apify Store
Realtor.com Scraper — US Sold Comps, ZIP & Monitor

Realtor.com Scraper — US Sold Comps, ZIP & Monitor

Scrape Realtor.com sold comps, for-sale, and rental listings by ZIP or city. Get sold price, sold date, beds, sqft, GPS, photos, and agent phone. Monitor new sales. Realtor API alternative for Python, Node.js, and MCP.

Pricing

from $0.99 / 1,000 listings

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Disclaimer: This is an unofficial integration developed independently. It is not affiliated with, sponsored by, or endorsed by Realtor.com, Move, Inc., or News Corp.

Realtor.com and related names are trademarks of their respective owners. Data is read from publicly accessible US listing search. No Realtor.com account login is required.

This Actor is provided for informational, research, CMA, lead-generation, and market monitoring purposes. You are solely responsible for complying with applicable laws (including US state privacy rules), Realtor.com's terms of use, and your organization's policies when processing listing and agent data.

Realtor.com scraper for US sold comps, for-sale, and for-rent listings — export sold price, sold date, beds, baths, sqft, $/sqft, ZIP, GPS, photos, and listing-agent phone into JSON/CSV. Use it as a Realtor.com API alternative from Python, Node.js, cURL, or Apify MCP / AI assistants: paste ZIP codes, a city, or any search / /realestateandhomes-detail/ URL.

Best for: ZIP-farm sold comps (the housing equivalent of completed-sales search), CMA worksheets, new-sale monitors, and US coverage next to the EU/UK/IL portal Actors.

ActorRole
Realtor.com Scraper ◄── you are hereUS sold comps, ZIP, for-sale & rent
Rightmove ScraperUK Rightmove listings (sale & rent)
Idealista ScraperSpain Idealista listings + agency leads
ImmobilienScout24 ScraperGermany IS24 rent & buy
Yad2 ScraperIsrael Yad2 listings
Airbnb Occupancy ScraperUS STR calendars vs long-term comps

When to use this Actor

  • Sold comps by ZIP — Drop 78704, 90210, or a farm list. Default status is sold, sorted by sold date, last 30 days.
  • CMA windows past six months — Set Sold within (days) to 90, 180, or 365. Public search commonly returns 12+ months of closed sales.
  • For-sale or rental pull — Switch listing status, or paste a search URL with type / beds / price already in the path.
  • Scheduled monitoring — Re-run the same ZIPs and emit only new or status/price-changed rows (new sold this week).
  • One listing — Paste a /realestateandhomes-detail/ URL to fetch that property.

When not to use this Actor

  • Nationwide agent directories, building permits, or email enrichment — This version is listing comps, not an agent CRM dump.
  • Zillow / Redfin — Separate portals; this Actor reads Realtor.com only.
  • Authenticated MLS feeds — No login, saved searches, or contact-unlock walls.

Key features

  • HTTP GraphQL — Same search backend the site uses. No headless browser, 128–512 MB RAM.
  • ZIP-first builderzipCodes[] is the primary input; cities and Start URLs are optional.
  • Sold recency you control — 1–730 days via sold_date, default 30, sort sold_date desc.
  • Search + detail URLs — Path filters (show-recently-sold, type-single-family-home, beds-3, price-min-max) are kept.
  • Price-band split — Automatic when a query hits the ~10,000-result GraphQL window.
  • Monitor mode — Key-value store remembers property IDs plus status/price across runs.
  • Residential US proxy — Recommended on Apify Cloud so datacenter IPs are not blocked.

Input

FieldWhat it does
ZIP codesPrimary builder. One search per ZIP with the filters below.
Cities / neighborhoodsAustin, TX style fallback when you do not have ZIPs.
Start URLsSearch (/realestateandhomes-search/, /apartments/) or listing (/realestateandhomes-detail/) links.
Listing statussold (default), for_sale, or for_rent. Builder only.
Sold within (days)Recency window for sold searches (1–730). Default 30.
Property types / price / beds / sqftOptional filters. Price is list price, or close price when status is sold.
Max listingsCap per run across all ZIPs and URLs.
Scrape full detailsOff by default. Adds description, tax parcel, extra photos, and price history.
Monitor modeSave only new or changed properties on scheduled re-runs.
{
"zipCodes": ["78704"],
"listingStatus": "sold",
"soldWithinDays": 30,
"maxItems": 50,
"includeDetails": false,
"monitorMode": false
}

Output

One dataset row per property.

FieldMeaning
id / propertyId / listingIdRealtor.com identifiers
urlCanonical listing URL
statussold, for_sale, or for_rent
soldPrice / soldDateClose price and date when sold
listPrice / listDate / originalListPriceList side; original from history when details are on
daysOnMarket / pricePerSqftCalendar DOM and $/sqft
beds / baths / sqft / lotSqft / yearBuiltSize and vintage
address / zip / city / state / latitude / longitudeLocation
mls / mlsIdMLS board and listing id
agentName / agentPhone / officeNameListing agent as shown publicly
photosImage URLs
description / propertyHistoryPresent when details are enabled
scrapedAtUTC timestamp
{
"id": "8208702628",
"url": "https://www.realtor.com/realestateandhomes-detail/1900-Barton-Springs-Rd-Unit-5015_Austin_TX_78704_M82087-02628",
"status": "sold",
"soldPrice": 325000,
"soldDate": "2026-08-21",
"listPrice": 325000,
"listDate": "2026-05-01",
"daysOnMarket": 112,
"pricePerSqft": 467,
"propertyType": "condos",
"beds": 0,
"baths": 1,
"sqft": 696,
"zip": "78704",
"city": "Austin",
"state": "TX",
"agentName": "Gabriel Recio",
"agentPhone": "(210) 563-1557",
"officeName": "Redfin Corporation"
}

Use cases

  • ZIP CMA — Pull 30- or 90-day solds for a farm, then chart $/sqft by beds.
  • New-sale alerts — Schedule daily with monitor mode; only newly closed rows land in the dataset.
  • Investor screens — For-sale list in the same ZIP next to recent solds for spread vs comps.
  • US vs EU pipeline — Same field style as Rightmove / Idealista / ImmobilienScout24 for a multi-country warehouse.

Integration examples

Replace YOUR_TOKEN with your Apify API token. Actor name: crawloop/realtor-com-scraper.

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('crawloop/realtor-com-scraper').call({
zipCodes: ['78704'],
listingStatus: 'sold',
soldWithinDays: 30,
maxItems: 25,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.slice(0, 5));

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("crawloop/realtor-com-scraper").call(
run_input={
"zipCodes": ["78704"],
"listingStatus": "sold",
"soldWithinDays": 30,
"maxItems": 25,
}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items[:5])

cURL

curl -X POST "https://api.apify.com/v2/acts/crawloop~realtor-com-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"zipCodes": ["78704"],
"listingStatus": "sold",
"soldWithinDays": 30,
"maxItems": 25
}'

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call this Actor by its Store ID / name (crawloop/realtor-com-scraper).

Example prompts:

  • "Run Realtor.com Scraper for ZIP 78704 sold last 30 days, max 20, and return address, soldPrice, soldDate, sqft as JSON"
  • "Scrape Realtor.com 90210 for-sale listings and summarize median list price vs beds"
  • "Pull Austin sold comps with Realtor.com Scraper, then compare the field set with Rightmove Scraper for a US vs UK pipeline"

Suite next step

After US sold comps, add short-term rental occupancy with Airbnb Occupancy Scraper, or UK sale/rent coverage with Rightmove Scraper.

FAQ

Is this an official Realtor.com API?
No. It is an unofficial Realtor.com scraper / API alternative that reads the public listing search GraphQL. It is not affiliated with Move, Inc. You can call it from Python, Node.js, cURL, or MCP.

How do I scrape Realtor.com sold listings by ZIP with Python or Node.js?
Pass zipCodes plus listingStatus: "sold" (the default). Use the snippets above. Add soldWithinDays for the CMA window and monitorMode on a schedule for new closed sales.

How far back do sold comps go?
Public search accepted a 365- and 730-day sold_date window in testing. Coverage still depends on what the portal exposes for that ZIP — it is not a full MLS history.

Why is last_sold_price empty on some rows?
Many sold cards only populate listPrice. This Actor sets soldPrice from last_sold_price when present, otherwise from the displayed list/close price on sold status.

Do I need a proxy?
On Apify Cloud, US RESIDENTIAL is the supported setup. HTML search pages often return 429 from datacenter IPs; GraphQL with residential US is the path this Actor uses.

ActorRole
Rightmove ScraperUK sale and rent listings
Idealista ScraperSpain sale/rent listings + agency phones
ImmobilienScout24 ScraperGermany rent and buy
Yad2 ScraperIsrael classifieds
Airbnb Occupancy ScraperUS STR occupancy calendars