Realtor Search Scraper (Cheap) avatar

Realtor Search Scraper (Cheap)

Pricing

from $1.99 / 1,000 results

Go to Apify Store
Realtor Search Scraper (Cheap)

Realtor Search Scraper (Cheap)

Property scraper that extracts Realtor.com listings, prices, and agent details so investors and agents can analyze market data and find deals affordably.

Pricing

from $1.99 / 1,000 results

Rating

0.0

(0)

Developer

Data API

Data API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Share

Realtor.com Search Scraper

Realtor.com Search Scraper

Pulling homes off Realtor.com by hand means clicking through pages of search results and copying price, beds, address, and agent into a sheet one card at a time. This scraper does it for you. Set your filters, press start, and every matching home comes back as a clean row with price, location, size, status, photos, and agent already split into fields. It's fast and code-free, and you only pay for the listings you actually pull.

What you get

Each home in the search comes back as one row, grouped into a few kinds of data:

  • Identity and linkpropertyId, mlsListingId, listingPath, listingStatus
  • Price and datesaskingPrice, soldPrice, priceCutAmount, listedDate, soldDate
  • Home detailshomeType, homeSubType, bedroomCount, bathLabel, interiorSqft, lotSqft, yearBuilt, garageSpaces
  • LocationstreetAddress, cityName, stateName, stateCode, zipCode, lat, lng, countyName, countyFips, streetViewLink
  • MediacoverPhoto, photoCount, photoLinks, hasMatterport
  • Market flagscomingSoon, freshListing, priceDropped, foreclosure, newBuild, pending, contingent, auction, fractionalOwnership
  • Agent and sourceprimaryAgentName, primaryAgentEmail, primaryAgentOffice, primaryAgentPhones, secondaryAgentName, brandingName, sourceName, openHouses, collectedAt

Quick start

  1. Decide what you want: a market state (listingStatuses such as for_sale or sold) plus a location (zipCode, cityName, stateCode, or addressLine).
  2. Add any extra filters you need, like price range, bedroom count, home type, or amenity keywords.
  3. Set a Total listings cap so you control how many homes you pull and what you spend.
  4. Press Start, then export the rows as JSON, CSV, Excel, or XML.

How it works

Use cases

  • Comparable sales research — pull recent sold homes in a ZIP to price a listing or an offer
  • Lead lists for agents — gather active homes plus agent names and offices in a target city
  • Investment sourcing — filter for foreclosures, price drops, or new construction across a state
  • Rental hunting — pull for_rent homes that allow cats or dogs in one neighborhood
  • Market dashboards — feed live Realtor.com data into your own sheet, BI tool, or model

Input

FieldTypeRequiredDescription
listingStatusesarray of stringsYesMarket states to pull, such as for_sale, sold, or for_rent. Prefilled with for_sale.
zipCodestringNoOne 5-digit US ZIP to target a single neighborhood.
stateCodestringNoTwo-letter US state, best paired with another filter.
cityNamestringNoExact city name; pair with stateCode for repeated names.
streetNamestringNoHomes along one street.
addressLinestringNoOne exact address line for a single-home lookup.
propertyTypesarray of stringsNoHome categories like single_family or condo.
featureKeywordsarray of stringsNoRequired amenities like pool or waterfront.
bedsMin / bedsMaxintegerNoBedroom floor and ceiling.
bathsMin / bathsMaxintegerNoBathroom floor and ceiling.
listPriceMin / listPriceMaxintegerNoAsking price range in USD.
soldPriceMin / soldPriceMaxintegerNoSold price range in USD; applies when listingStatuses includes sold.
soldDateFrom / soldDateTostringNoSale date window in YYYY-MM-DD.
sqftMin / sqftMaxintegerNoInterior living area range in square feet.
lotSqftMin / lotSqftMaxintegerNoLot size range in square feet.
yearBuiltFrom / yearBuiltTointegerNoConstruction year window.
hoaFeeMaxintegerNoHighest monthly HOA fee to accept. Ignored when noHoaFee is on.
noHoaFeebooleanNoKeep only homes with no HOA fee. Default false.
openHouseFrom / openHouseTostringNoOpen house date window in YYYY-MM-DD.
pendingOnlybooleanNoKeep only pending homes. Default false.
contingentOnlybooleanNoKeep only contingent homes. Default false.
foreclosureOnlybooleanNoKeep only homes in foreclosure. Default false.
newConstructionOnlybooleanNoKeep only newly built homes. Default false.
hasVirtualTourbooleanNoKeep only listings with a virtual tour. Default false.
hasMatterportbooleanNoKeep only listings with a Matterport 3D walkthrough. Default false.
catsAllowedbooleanNoRentals that allow cats. Default false.
dogsAllowedbooleanNoRentals that allow dogs. Default false.
sortFieldstringNoField to order results by. Default list_date.
sortDirectionstringNodesc or asc. Default desc.
agentSourceIdstringNoListings tied to one agent source ID.
sellingAgentNamestringNoMatch by the selling agent's name.
mlsListingIdstringNoPull one listing by its MLS ID.
propertyIdstringNoPull one home by its Realtor.com property ID.
fulfillmentIdstringNoListings tied to an agent fulfillment ID.
pageSizeintegerNoListings per API call, up to 200. Default 200.
startOffsetintegerNoIndex to start from. Default 0.
resultsLimitintegerNoHard cap on total listings collected. Default 1000.
timeoutSecondsintegerNoWhole-run timeout. Default 300.
requestTimeoutSecondsintegerNoPer-request timeout. Default 45.
proxyConfigurationobjectNoProxy settings; US datacenter is the default.

Example input

{
"listingStatuses": ["sold", "for_sale"],
"zipCode": "30301",
"propertyTypes": ["single_family", "multi_family"],
"featureKeywords": ["waterfront", "fireplace"],
"bedsMin": 2,
"listPriceMin": 250000,
"listPriceMax": 750000,
"resultsLimit": 1000,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyCountry": "US" }
}

Output

Every home that matches your filters becomes one row, paginated automatically up to your resultsLimit. Fields Realtor.com does not publish for a given home come back null rather than guessed.

Example output

{
"listingAttribution": "Listing courtesy of Peachtree Realty Group",
"propertyId": "M98765-43210",
"mlsListingId": "7421809",
"listingPath": "123-Magnolia-St_Atlanta_GA_30301_M98765-43210",
"listingStatus": "for_sale",
"askingPrice": 489000,
"soldPrice": null,
"priceCutAmount": 11000,
"listedDate": "2024-05-18T00:00:00Z",
"soldDate": null,
"homeType": "single_family",
"homeSubType": null,
"bedroomCount": "4",
"bathLabel": "3",
"interiorSqft": 2480,
"lotSqft": 8276,
"yearBuilt": 2016,
"garageSpaces": 2,
"streetAddress": "123 Magnolia St",
"cityName": "Atlanta",
"stateName": "Georgia",
"stateCode": "GA",
"zipCode": "30301",
"lat": 33.7490,
"lng": -84.3880,
"countyName": "Fulton",
"countyFips": "13121",
"streetViewLink": "https://maps.googleapis.com/maps/api/streetview?location=33.7490,-84.3880",
"coverPhoto": "https://ap.rdcpix.com/abc123/cover-l.jpg",
"photoCount": 38,
"photoLinks": [
"https://ap.rdcpix.com/abc123/photo1-l.jpg",
"https://ap.rdcpix.com/abc123/photo2-l.jpg"
],
"hasMatterport": true,
"comingSoon": false,
"freshListing": true,
"priceDropped": true,
"foreclosure": false,
"newBuild": false,
"pending": false,
"contingent": false,
"auction": false,
"fractionalOwnership": false,
"sourceId": "FMLS",
"sourceName": "First Multiple Listing Service",
"sourceType": "mls",
"sourceListingId": "7421809",
"showContactAgent": true,
"marketType": "for_sale",
"leadType": "co_broke",
"veteransUnitedEligible": false,
"productTags": ["core.agent", "core.broker"],
"productBrand": "essentials",
"primaryAgentType": "agent",
"primaryAgentName": "Jane Carter",
"primaryAgentEmail": "jane@peachtreerealty.com",
"primaryAgentOffice": "Peachtree Realty Group",
"primaryAgentPhones": ["+14045551234"],
"secondaryAgentType": null,
"secondaryAgentName": null,
"secondaryAgentEmail": null,
"secondaryAgentOffice": null,
"secondaryAgentPhones": [],
"brandingName": "Peachtree Realty Group",
"searchPromotions": [],
"communityPromotions": [],
"openHouses": [
{ "start_date": "2024-05-25T17:00:00Z", "end_date": "2024-05-25T20:00:00Z" }
],
"collectedAt": "2024-05-20T14:32:08.512000+00:00",
"errorMessage": null
}

Output fields

FieldTypeDescription
listingAttributionstringRequired attribution text for the listing.
propertyIdstringRealtor.com internal property ID.
mlsListingIdstringMLS listing number.
listingPathstringURL slug for the listing page.
listingStatusstringMarket state: for_sale, sold, for_rent, and so on.
askingPriceintegerCurrent list price in USD.
soldPriceintegerClosing price in USD, present only on sold homes.
priceCutAmountintegerPrice drop in USD.
listedDatestringWhen the home went on the market.
soldDatestringWhen the home closed.
homeTypestringBroad category such as single_family or condo.
homeSubTypestringFiner category under the home type.
bedroomCountstringBedrooms, or a range when given.
bathLabelstringConsolidated bathroom count.
interiorSqftintegerIndoor living area in square feet.
lotSqftintegerLot size in square feet.
yearBuiltintegerYear construction finished.
garageSpacesintegerGarage parking spots.
streetAddressstringStreet line of the address.
cityNamestringCity.
stateNamestringFull state name.
stateCodestringTwo-letter state code.
zipCodestringZIP or postal code.
latnumberLatitude.
lngnumberLongitude.
countyNamestringCounty.
countyFipsstringCounty FIPS code.
streetViewLinkstringGoogle Street View URL.
coverPhotostringLead listing photo URL.
photoCountintegerNumber of photos.
photoLinksarrayListing photo URLs, up to ten.
hasMatterportbooleanListing has a Matterport 3D walkthrough.
comingSoonbooleanListing is tagged coming soon.
freshListingbooleanListing is under 14 days old.
priceDroppedbooleanPrice fell within the last 30 days.
foreclosurebooleanHome is in foreclosure.
newBuildbooleanHome is newly constructed.
pendingbooleanListing is pending.
contingentbooleanListing is contingent.
auctionbooleanHome is sold at auction.
fractionalOwnershipbooleanHome is fractionally owned.
sourceIdstringListing source identifier.
sourceNamestringSource MLS or feed name.
sourceTypestringType of the listing source.
sourceListingIdstringListing ID from the source feed.
showContactAgentbooleanWhether a contact-an-agent action is shown.
marketTypestringLead market classification.
leadTypestringLead routing type.
veteransUnitedEligiblebooleanQualifies for Veterans United financing.
productTagsarrayPromotional product tags on the listing.
productBrandstringBrand behind the product placement.
primaryAgentTypestringRole of the first advertiser.
primaryAgentNamestringName of the first advertiser.
primaryAgentEmailstringEmail of the first advertiser, when public.
primaryAgentOfficestringOffice of the first advertiser.
primaryAgentPhonesarrayPhone numbers for the first advertiser.
secondaryAgentTypestringRole of the second advertiser.
secondaryAgentNamestringName of the second advertiser.
secondaryAgentEmailstringEmail of the second advertiser, when public.
secondaryAgentOfficestringOffice of the second advertiser.
secondaryAgentPhonesarrayPhone numbers for the second advertiser.
brandingNamestringBranding label on the listing.
searchPromotionsarrayPromotions returned with the search result.
communityPromotionsarrayPromotions tied to the home's community.
openHousesarrayScheduled open house windows.
collectedAtstringISO 8601 timestamp for when the row was captured.
errorMessagestringReason a request failed; null on success.

Tips for best results

  • Always pair listingStatuses with a location filter. A bare status with no zipCode, cityName, stateCode, or addressLine can pull far more homes than you want.
  • Use resultsLimit to keep spend predictable. The run stops the moment it hits that number, so a small cap is a cheap way to test your filters first.
  • soldPriceMin and soldPriceMax only bite when listingStatuses includes sold, so add sold to the status list when you want comps.
  • If Realtor.com starts throttling, switch proxyConfiguration from datacenter to residential and raise requestTimeoutSeconds.
  • Tighten bedsMin, listPriceMin, and propertyTypes before widening your area. Narrow filters keep the dataset focused and the cost down.

How can I use Realtor.com listing data?

How can I use the Realtor.com Search Scraper to pull comparable sales?

Add sold to listingStatuses, set a zipCode or cityName, and give it a soldDateFrom so the comps stay recent. Each row carries soldPrice, soldDate, bedroomCount, interiorSqft, and streetAddress, which is everything you need to price a listing or back up an offer.

How can I build a real estate lead list from Realtor.com search results?

Keep listingStatuses on for_sale for your target city and export the run. The output includes primaryAgentName, primaryAgentEmail, primaryAgentOffice, and primaryAgentPhones for each home, so you get an agent contact sheet alongside the property data.

How can I find investment property data on Realtor.com?

Turn on foreclosureOnly or newConstructionOnly, or filter by priceDropped after export, to surface distressed and motivated listings across a stateCode. Combine askingPrice, lotSqft, yearBuilt, and priceCutAmount to score deals against your criteria.

How can I scrape Realtor.com rentals that allow pets?

Set listingStatuses to for_rent and switch on catsAllowed or dogsAllowed. The scraper returns rental homes with askingPrice, bedroomCount, and full address fields, ready to drop into a search sheet for tenants or property managers.

Our actors are ethical and do not extract any private user data, such as email addresses or private contact information. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the legality of web scraping.

Support

Questions, feature requests, or a field you'd like added? Reach out at data.apify@proton.me and we'll get back to you.