Request a tool
All toolsGuidesMCP serverRequest a toolPlatformsCategories
Realtor.com Scraper icon

Realtor.com Scraper

Scrape Realtor.com listings as JSON: address, price, beds, baths, sqft, lot size, year built, days on market, agent, broker, photos, coordinates.

22 runs on Apify $0.00068 per property listing ($0.68 / 1,000)
Run this in the cloudRun on Apify →

Real Estate & Classifieds

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust location, startUrls, listingStatus (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.00068 per property listing = $0.68 per 1,000

You are charged forWhenPrice
Property listingCharged once per property listing returned. $0.68 per 1,000 listings. Diagnostics and empty results are never charged.$0.00068
Actor StartCharged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).$0.001

Pay-per-event pricing: you are billed per result, not per subscription — a run that returns nothing costs nothing beyond the start fee. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2020-01-01, and they are what you are actually charged.

Inputs

FieldWhat it doesType
locationWhere to search on Realtor.com. One per line. Accepts "City, ST" (Austin, TX), a 5-digit ZIP (78704), a county ("Travis County, TX"), a neighborhood ("Zilker, Austin, TX") or a state code (TX). United States only.array
startUrlsOptional. Paste Realtor.com search pages (https://www.realtor.com/realestateandhomes-search/Austin_TX) or single property pages (https://www.realtor.com/realestateandhomes-detail/..._M84963-61588). Filters written into the URL (price-, beds-, type-, show-recently-sold) are honoured. Works alongside "location".array
listingStatusWhich listings to return. "sold" covers recently sold homes; "off_market" covers homes no longer listed.string
propertyTypesOptional. Leave empty for every type. Note that Realtor.com's own value is "condos" (plural) — "condo" matches nothing.array
maxItemsHard cap on rows returned across every location and URL. You are charged once per listing returned. Realtor.com's API cannot page deeper than 10,000 results per search — split by ZIP code to go beyond that.integer
sortByOrder the listings come back in.string
includePropertyDetailsAdds the listing description text, tax history, price history, nearby schools and value estimates to every row. Costs one extra request per listing, so the run is slower. It adds fields, never extra rows, so it does not change what you are charged.boolean
maxPhotosHow many photo URLs to keep per listing (0-50). Realtor.com returns up to 50.integer
priceMinOptional lowest list price.integer
priceMaxOptional highest list price.integer
bedsMinOptional.integer
bedsMaxOptional.integer
bathsMinOptional.integer
sqftMinOptional.integer
sqftMaxOptional.integer
lotSqftMinOptional. 1 acre = 43,560 sqft.integer
yearBuiltMinOptional.integer
yearBuiltMaxOptional.integer
listedWithinDaysOptional. Only listings first posted in this window. Use with status "For sale".integer
soldWithinDaysOptional. Only homes sold in this window. Use with status "Recently sold".integer
hasOpenHouseOptional.boolean
newConstructionOptional.boolean
foreclosureOptional.boolean
keywordsOptional. Words that must appear in the listing, for example "pool", "waterfront", "garage".array

What you get

A structured dataset — each result includes fields like:

addresscitystateCodepostalCodepricebedsbathssqftlotSqftpropertyTypeyearBuiltlistingStatusdaysOnMarketagentNamebrokerNamelatitudelongitudephotoCounturl

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Real Estate & Classifieds

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

Craigslist Scraper iconReal Estate & Classifieds

Craigslist Scraper

Scrape Craigslist listings by city, category and keyword at $0.85 per 1,000: id, title, price, neighborhood, date, images and URL. No account or API key.

Ready to run — no setup

Airbnb Listings Scraper iconTravel, Hotels & Events

Airbnb Listings Scraper

Scrape Airbnb search results by location, dates and guest count: listing ID, name, room type, price, rating, reviews and host. No account or API key.

Ready to run — no setup

Avito Listings Scraper iconReal Estate & Classifieds

Avito Listings Scraper

Scrape Avito.ru listings: id, title, price, category, city, seller name and type, publish date, photos. Filter by region, price and seller.

Ready to run — no setup

Facebook Marketplace Scraper iconReal Estate & Classifieds

Facebook Marketplace Scraper

Scrape Facebook Marketplace listings by keyword and city: title, price, currency, location, link, photo, posted date, sold status. No login or cookies.

Ready to run — no setup

Zillow Scraper iconReal Estate & Classifieds

Zillow Scraper

Zillow scraper at $0.0008 per property plus a $0.001 run start. Search results and full listing details: price, beds, baths, sqft, photos, price history.

Ready to run — no setup

See all Real Estate & Classifieds →

Realtor.com Scraper API

Pulls property listings from Realtor.com as structured JSON: address, price, beds, baths, square footage, lot size, property type, year built, listing status, days on market, agent and broker, photo URLs and coordinates.

Give it a place — Austin, TX, 78704, Travis County, TX, Zilker, Austin, TX — or paste Realtor.com URLs. It reads the same JSON gateway the Realtor.com website uses, so there is no browser and no HTML parsing, and a page of 200 listings comes back in about a second.

What you get

One row per listing, 65 fields. A real row from a live run:

{
  "propertyId": "8496361588",
  "url": "https://www.realtor.com/realestateandhomes-detail/1606-Yoakum-St-254_Austin_TX_78748_M84963-61588",
  "address": "1606 Yoakum St Unit 254",
  "city": "Austin", "stateCode": "TX", "postalCode": "78748", "county": "Travis",
  "latitude": 30.165248, "longitude": -97.825649,
  "price": 365000, "pricePerSqft": 213,
  "beds": 3, "baths": 3, "sqft": 1714, "lotSqft": 2178,
  "propertyType": "single_family", "yearBuilt": 2007,
  "listingStatus": "for_sale", "mlsStatus": "Active",
  "listDate": "2026-08-08T19:44:34Z", "daysOnMarket": 0,
  "agentName": "MIKE MINNS", "brokerName": "Atlas Realty",
  "photoCount": 30, "primaryPhoto": "http://ap.rdcpix.com/...jpg"
}

Full field list: propertyId, listingId, url, address, addressWithheld, city, stateCode, state, postalCode, county, countyFips, latitude, longitude, price, priceMin, priceMax, pricePerSqft, priceReducedAmount, lastPriceChangeAmount, lastPriceChangeDate, lastSoldPrice, lastSoldDate, estimatedValue, hoaFee, beds, baths, bathsFull, bathsHalf, sqft, lotSqft, yearBuilt, propertyType, propertySubType, stories, garage, buildingName, listingStatus, mlsStatus, listDate, daysOnMarket, lastUpdateDate, isNewListing, isPending, isContingent, isForeclosure, isPriceReduced, isNewConstruction, agentName, agentEmail, agentMlsId, brokerName, brokerEmail, brokerPhone, mlsSourceId, mlsSourceType, photoCount, primaryPhoto, photos, virtualTourUrl, hasMatterport, openHouses, features, searchLocation, resolvedLocation, position, scrapedAt.

Turn on Include full property details to also get descriptionText, taxHistory, priceHistory, schools, neighborhoods, propertyDetails and valueEstimates. That costs one extra request per listing, so the run is slower. It adds fields, not rows, so it does not change what you are charged.

Input

FieldWhat it does
locationOne or more places. City, ST, a 5-digit ZIP, a county, a neighborhood, or a state code.
startUrlsRealtor.com search or property URLs. Filters in the URL (price-, beds-, type-, show-recently-sold) are honoured.
listingStatusfor_sale, for_rent, sold, off_market, ready_to_build.
propertyTypessingle_family, condos, townhomes, condo_townhome_rowhome_coop, multi_family, mobile, land, farm.
maxItemsHard cap on rows. You pay per row returned.
sortBynewest, oldest, price_low, price_high, sold_date, most_photos.
Filtersprice, beds, baths, sqft, lot size, year built, listed/sold within N days, open house, new construction, foreclosure, keywords.

Numbers from real runs

  • Austin, TX has 7,297 active for-sale listings and 126,304 recently sold. Both are reachable.
  • 200 listings per request is the API's hard ceiling; 201 is rejected outright.
  • 248 listings in 13.6 seconds (Austin, TX, for sale). A 5-row run finished in 2.3 seconds.
  • Duplicates are removed across pages, so asking for 250 can return 248. You are only charged for

the rows you actually get.

  • No proxy is used. Realtor.com's JSON gateway answers plain datacenter addresses, so proxy cost is

zero. You can still point the actor at your own proxy if you want a specific exit.

What this does not do

  • It cannot page deeper than 10,000 results in a single search. That is the API's limit, not a

choice. A search matching more than that emits an uncharged RESULT_CAP diagnostic telling you so. Split the area by ZIP code, or add filters, to get the rest.

  • lastSoldPrice is empty in non-disclosure states. Sale prices are not public record in Texas,

and a few other states. Measured on 20 sold listings per city: Miami 20/20 populated, Los Angeles 20/20, Phoenix 20/20, Chicago 20/20 — Austin 0/20. lastSoldDate is present everywhere. This is how the data is; no scraper can return a price the MLS does not publish.

  • agentEmail and brokerEmail are usually empty. Realtor.com rarely exposes them on listings.

This is a listings scraper, not an agent-contact scraper.

  • Some listings withhold the street address. Realtor.com sends the literal text

"Address Not Available" for those. The actor returns address: null and addressWithheld: true rather than passing that string off as an address. Everything else on the row is still real.

  • United States only. Realtor.com has no international inventory.
  • No Zillow, no Redfin, no Realtor.ca (that is Canada, a different company).
  • It does not log in, and it does not touch anything behind an account.

Pricing

$0.68 per 1,000 listings ($0.00068 each), plus $0.001 each time a run starts — the lowest per-listing price of any Realtor.com scraper on the Apify Store with an active user base; the next cheapest, solidcode/realtorcom-scraper (20 monthly users), is $0.80 per 1,000 even on its cheapest volume tier.

You are charged only for listings actually returned. Failed runs, blocked runs, empty searches and every diagnostic row carry no per-listing fee, so a run that returns no listings costs the $0.001 start fee and nothing more.

FAQ

How do I scrape Realtor.com listings for a city? Set location to Austin, TX and run it. Use maxItems to decide how many rows you want.

Can I scrape by ZIP code? Yes. Put the 5-digit ZIP in location, for example 78704. County (Travis County, TX) and neighborhood (Zilker, Austin, TX) also work.

Can I get recently sold homes? Yes. Set listingStatus to sold, and optionally soldWithinDays. Sort with sold_date to get the most recent sales first. Note the non-disclosure-state caveat above for the sale price itself.

Can I get rentals? Yes, set listingStatus to for_rent.

Does it return the listing agent and brokerage? Yes — agentName, agentMlsId, brokerName, and brokerPhone when Realtor.com publishes them. Email addresses are rarely published.

How many listings can I get from one search? Up to 10,000 per search. Beyond that, split by ZIP code or add filters — the actor tells you when you have hit the ceiling instead of quietly stopping.

Why did my property-type filter return nothing? Realtor.com's value is condos, plural. condo matches zero listings without raising an error. The actor validates the value and warns you instead of returning an empty result.

Do I need a proxy? No. None is used by default and none is needed.

What happens if the search returns nothing? You get one diagnostic row explaining why, and it carries no per-listing fee. The run still pays the $0.001 start fee, so an empty search costs $0.001.

Is this the official Realtor.com API? No. This is an independent scraper. It is not affiliated with or endorsed by Move, Inc. or the National Association of REALTORS®.

Legal

Realtor.com's robots.txt opens with a notice that scraping is unauthorized without written permission from Move Sales, Inc., and its Terms of Service say the same. robots.txt does not list the JSON gateway this actor uses, and it explicitly disallows deep pagination of the HTML search pages (/realestateandhomes-search/*/*/pg-). Listing data on Realtor.com originates from MLS feeds and is usually subject to IDX attribution and redistribution rules set by the individual MLS.

You are responsible for how you use the output. Check your own obligations — including MLS attribution, and privacy law where agent details are involved — before republishing or redistributing anything this returns.