Realtor.com Scraper avatar

Realtor.com Scraper

Pricing

from $1.30 / 1,000 results

Go to Apify Store
Realtor.com Scraper

Realtor.com Scraper

Scrape Realtor.com property listings by location or ZIP code with full search filters. Extract list price, beds and baths, square footage, lot size, photos, property type, HOA fees, and listing status, including active, sold, pending, and contingent listings.

Pricing

from $1.30 / 1,000 results

Rating

0.0

(0)

Developer

Farhan Ali

Farhan Ali

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Realtor.com Scraper creates a structured dataset of property listings collected from Realtor.com, the US real estate portal. Each dataset item represents one property and can include list price, beds and baths, square footage, lot size, photos, property type, coordinates, and listing status. Query the source by location or ZIP code with 30+ search filters, control the result limit with maxItems, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, or other supported formats.

Dataset at a glance

PropertyValue
Sourcerealtor.com (United States)
Record unitOne property listing
Input methodsLocation (searchLocation) or ZIP codes (zipCodes) with search filters
Main identifierspropertyId, listingId
DeliveryApify Dataset and API
Export formatsJSON, CSV, Excel, XML, HTML (Apify dataset exports)
Update modelFresh records per Actor run
Pricing$2 per 1,000 listings

Coverage and available records

The Actor collects properties from public Realtor.com search results using a location or ZIP-code entry point:

  • Location-based: Pass a city, neighborhood, or address (for example "Austin, TX") in searchLocation.
  • ZIP-code-based: Pass one or more US ZIP codes (for example ["78702", "78704"]) in zipCodes, alone or combined with a location.

Supported record types and limits:

  • Listing-level records are always collected: property ID, listing ID, URL, status, list price, list date, property type, beds, baths, square feet, lot size, address, coordinates, primary photo, and photo count.
  • Status filters: listingStatus supports active, pending, contingent, and sold listings (default active).
  • Result cap: maxItems limits the number of listings collected (0 means unlimited; the default is 50).
  • Filters: 30+ filters for price, beds, baths, property type, features, keywords, commute time, HOA fees, open houses, square footage, lot size, home age, and more.

Known exclusions: each run captures page state at run time (no historical snapshots); fields the listing does not expose (for example isNewConstruction) are returned as null.

Data dictionary

Field names below match dataset record JSON properties exactly.

FieldTypeNullableDescriptionExample
propertyIdstringNoRealtor.com property identifier; best stable deduplication key9607103106
listingIdstringNoRealtor.com listing identifier2997598864
urlstringNoListing detail URLhttps://www.realtor.com/realestateandhomes-detail/...
statusstringNoListing statusfor_sale
listPricenumberYesCurrent list price in USD1100000
listDatestringYesDate listed (ISO 8601)2026-06-24T04:15:09.000000Z
propertyTypestringYesProperty typesingle_family
bedsnumberYesNumber of bedrooms4
bathsstringYesNumber of bathrooms (may include +)2.5+
squareFeetnumberYesInterior square footage2538
lotSquareFeetnumberYesLot size in square feet2309
addressstringYesFull address3101.5 Neal St, Austin, TX, 78702
citystringYesCityAustin
statestringYesStateTX
zipCodestringYesZIP code78702
latitudenumberYesMap latitude30.265224
longitudenumberYesMap longitude-97.703499
primaryPhotoUrlstringYesPrimary photo URLhttps://ap.rdcpix.com/...
photoCountnumberYesNumber of photos15
isNewListingbooleanYesWhether the listing is newtrue
isNewConstructionbooleanYesWhether it is new constructiontrue

Example dataset record

Real record produced with a location search (searchLocation: "Austin, TX"), active listings, minimum price $150,000.

{
"propertyId": "9607103106",
"listingId": "2997598864",
"url": "https://www.realtor.com/realestateandhomes-detail/31015-Neal-St_Austin_TX_78702_M96071-03106",
"status": "for_sale",
"listPrice": 1100000,
"listDate": "2026-06-24T04:15:09.000000Z",
"propertyType": "single_family",
"beds": 4,
"baths": "2.5+",
"squareFeet": 2538,
"lotSquareFeet": 2309,
"address": "3101.5 Neal St, Austin, TX, 78702",
"city": "Austin",
"state": "TX",
"zipCode": "78702",
"latitude": 30.265224,
"longitude": -97.703499,
"primaryPhotoUrl": "https://ap.rdcpix.com/6e0c453a2d46d2fce84428317a99692dl-m2570498838s.jpg",
"photoCount": 15,
"isNewListing": true,
"isNewConstruction": true
}

The record above was produced with this input:

{
"searchLocation": "Austin, TX",
"maxItems": 10,
"listingStatus": ["active"],
"minPrice": 150000,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Query and input reference

InputTypeRequiredDefaultAccepted valuesDescription
searchLocationstringNo*Austin, TXCity, neighborhood, or addressLocation search
zipCodesarray (stringList)No*["78702"]US ZIP codesZIP-code search, alone or with location
maxItemsintegerNo500 (unlimited) or positive integerMaximum listings to collect
sortBystringNorelevantrelevant, newest, lowest_price, highest_price, open_house_date, recently_reduced, lot_size, photo_countSort order
minPrice / maxPriceintegerNoUSDPrice range
priceReducedbooleanNofalsetrue / falsePrice reduced in last 30 days
builderPromotionsbooleanNofalsetrue / falseBuilder promotions only
bedroomsarrayNostudio, 1, 2, 3, 4, 5_plusBedroom filter
bathroomsarrayNo1, 2, 3, 4, 5_plusBathroom filter
propertyTypesarrayNohouse, condo, townhouse, multi_family, mobile, land, farmHome type
listingStatusarrayNo["active"]active, pending, contingent, soldListing activity status
listingTypesarrayNoexisting_homes, foreclosures, new_construction, 55_plus_community, auctionSpecial listing categories
soldWithinMonthsintegerNo61, 3, 6, 12, 24, 36Limit sold search
toursarrayNoopen_house, three_d_tour, virtual_tourOpen house and tour filters
daysOnRealtorintegerNo2, 7, 14, 21, 30Listed within N days
minSquareFeet / maxSquareFeetintegerNosqftInterior square footage range
minLotSizeSqft / maxLotSizeSqftintegerNosqftLot size range
minHomeAgeYears / maxHomeAgeYearsintegerNoyearsHome age range
maxHoaFeePerMonthintegerNoUSD (50–3000)Max monthly HOA fee
garageSpacesintegerNo1, 2, 3Minimum garage spaces
storiesstringNosingle, multipleNumber of stories
keywordsarrayNoFree text (e.g. pool, waterfront)Keyword filters
featuresarrayNobasement, pool, waterfront, and 40+ moreHome feature tags
commuteAddressstringNoAddressCommute destination
commuteModestringNowalking, cycling, transit, drivingCommute transport mode
maxCommuteMinutesintegerNo1060Max commute minutes
searchRadiusMilesintegerNomilesExpand search radius
proxyConfigurationobjectNoApify proxy, RESIDENTIAL groupApify proxy groups or custom proxiesResidential proxies are recommended

* Provide either searchLocation or zipCodes — at least one source is required.

Minimal request:

{ "searchLocation": "Austin, TX" }

Advanced request (location search with filters):

{
"searchLocation": "Austin, TX",
"listingStatus": ["active"],
"minPrice": 250000,
"maxPrice": 900000,
"bedrooms": ["3", "4"],
"bathrooms": ["2"],
"propertyTypes": ["house"],
"features": ["pool", "hardwood_floors"],
"maxItems": 500,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Retrieve the data through the API

The Actor runs on the Apify platform, so there is no server to host and no crawling infrastructure to maintain.

  1. Start the Actor with a JSON input (console or API).
  2. Wait for the run to finish, or use a synchronous endpoint if you want the response inline.
  3. Retrieve items from the run's default dataset.
  4. Paginate or export the dataset.

Python example:

from apify_client import ApifyClient
client = ApifyClient("YOUR-APIFY-TOKEN")
run_input = {
"searchLocation": "Austin, TX",
"maxItems": 10,
"listingStatus": ["active"],
}
run = client.actor("datascrapers/realtor-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["propertyId"], item["listPrice"], item["address"])

Apify generates ready-to-run Python, JavaScript, and cURL examples on the Actor's API tab. Do not put a real API token in shared code or URLs.

Data quality and record handling

  • Nullability: fields the listing does not expose (for example isNewConstruction or listPrice) are returned as null rather than fabricated.
  • Source changes: Realtor.com page structure and values can change; unreadable fields are returned as null.
  • Deduplication: each run appends fresh records; the Actor does not deduplicate listings across runs. Use propertyId as the stable key and filter repeated runs against previously stored IDs.
  • Rate limits: Realtor.com can rate-limit automated traffic; residential proxies are recommended for consistent coverage.
  • Normalization: listPrice is a numeric USD value; baths may include a + suffix (for example 2.5+); listDate is an ISO 8601 timestamp.

Export and pipeline examples

DestinationRecommended methodTypical use
PostgreSQL / SupabaseDataset API poll or webhook consumerStore US property inventory with price history
Google SheetsApify Google Sheets integrationShare market shortlists with agents
BI tools (Looker, Tableau)Scheduled export via Apify schedulerPrice-per-square-foot benchmarking
S3 / cloud storageScheduled export + integrationArchival of market snapshots

Pricing and cost examples

The Actor uses pay-per-event pricing with a single chargeable result event:

EventTriggerRate
ResultEvery listing record pushed to the dataset$2 per 1,000 listings

Example costs:

RecordsConfigurationEstimated base cost
1,000Active listings$2.00
10,000Active listings$20.00
50,000Active listings$100.00

Apify paid plans reduce the per-1,000 rate. Compute units consumed by the run are billed by your Apify plan. Estimates depend on the verified pricing model and the options selected for the run.

Limitations and responsible data use

  • The Actor collects publicly accessible data from Realtor.com pages only.
  • Field availability depends on what Realtor.com renders at run time; some values can be null or missing, and site changes can alter fields.
  • The Actor does not provide historical snapshots unless you store them yourself.
  • Large runs require residential proxies; without them, coverage may degrade due to rate limiting.
  • You are responsible for compliance with Realtor.com's terms of service, applicable privacy law, and any contractual obligations before using the data.

Dataset questions

What does one dataset item represent?

One property listing from Realtor.com, with its price, size, location, photos, and listing status in a single record.

Which field should I use as a unique identifier?

propertyId is the stable Realtor.com property identifier and is the recommended deduplication key. listingId is a reasonable secondary key tied to a specific listing.

Are fields nullable or conditional?

Yes. Fields the listing does not expose are returned as null (for example isNewConstruction). baths is a string and may include a + suffix, so treat it as text rather than a number.

Can I retrieve the records as CSV or JSON?

Yes. The dataset can be exported as JSON, CSV, Excel, XML, or HTML from the Apify Console, and queried through the Dataset API.

Does the Actor return historical data?

No. Each run captures the state of the pages at run time. To track price changes over time, schedule repeated runs and store the outputs yourself.

What counts as a billable result?

A single pay-per-event charge applies: $2 per 1,000 listing records pushed to the dataset. There are no separate detail or contact charges for this Actor.

Which listing statuses can I filter?

listingStatus supports active, pending, contingent, and sold. Use soldWithinMonths to limit sold listings to recent sales, and listingTypes for foreclosures, new construction, and other categories.

  • Zoopla Scraper — UK property listings for cross-market real estate research.
  • Redfin Scraper — US property listings and market signals that can be joined by address or ZIP code.
  • Apartments Scraper — US rental listings for comparative housing market analysis.

Data Scrapers support

Need an additional field, record type, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample source URL, required fields, expected record volume, and preferred delivery format.