Realtor.com Search Cheap (Pay-Per-Result)
Pricing
from $1.00 / 1,000 results
Realtor.com Search Cheap (Pay-Per-Result)
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.00 / 1,000 results
Rating
0.0
(0)
Developer
Kawsar
Actor stats
1
Bookmarked
1
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Realtor.com Scraper — Cheap Property Search API (Pay-Per-Result)
Scrape property listings from Realtor.com at a fraction of the cost of the official API. This Apify actor extracts real estate data including active for-sale listings, recently sold properties, rental listings, foreclosures, new construction, agent contact details, open house schedules, listing photos, GPS coordinates, and more.
No coding knowledge required. Just fill in the input fields and the actor handles everything — query construction, pagination, proxy rotation, and deduplication.
What Data Can You Scrape from Realtor.com?
- Active for-sale listings with asking prices, bedroom/bathroom counts, square footage, lot size, and listing dates
- Sold property comps with final sale prices and close dates for market analysis
- Rental listings with monthly rent, pet policies, and availability
- Foreclosure and distressed properties for investment screening
- New construction listings from builders and developers
- Agent and brokerage details including names, office names, and fulfillment IDs
- Property photos including primary listing photo, up to 3 gallery photos, and street view URLs
- GPS coordinates (latitude/longitude), county name, and FIPS codes
- Open house schedules with start and end dates
- Listing flags like coming soon, price reduced, pending, contingent, and more
Use Cases for Realtor.com Data
- Real estate investors: Pull sold comps by ZIP code, city, or state to run CMA (Comparative Market Analysis) reports
- Real estate agents: Generate leads by scraping for-sale listings with agent and brokerage contact details
- Property managers: Monitor rental listings and track rent price trends across neighborhoods
- Market researchers: Analyze inventory velocity, median prices, and days-on-market across regions
- Wholesalers: Find foreclosures, contingent deals, and distressed properties before the competition
- Developers: Track new construction activity and builder listings in target markets
- Data analysts: Feed structured property data into BI tools, spreadsheets, or data warehouses
Input Parameters — Full Reference
Search Filters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
status | array | Yes | ["for_sale"] | Listing status. Options: for_sale, sold, for_rent, ready_to_build, off_market, other, new_community. Example: ["for_sale"] or ["sold"]. |
postal_code | string | No | — | US ZIP code. Most precise location filter. Example: "90210" for Beverly Hills. |
state_code | string | No | — | 2-letter US state code. Example: "TX" for Texas, "CA" for California. |
city | string | No | — | City name. Combine with state_code to avoid ambiguity. Example: "Houston". |
street_name | string | No | — | Street name filter. Example: "Sunset Blvd". |
address | string | No | — | Specific street address. Example: "123 Main St". |
Property Filters
| Parameter | Type | Default | Description |
|---|---|---|---|
propertyType | array | — | Property types to include. Options: single_family, condo_townhome, condo_townhome_rowhome_coop, condo, condos, apartment, multi_family, mobile, land, farm, other. Example: ["single_family", "condo_townhome"]. |
keywords | array | — | Feature/amenity keywords. Options: pool, basement, central_air, carport, den, hardwood_floors, waterfront, ocean_view, fireplace, garage. Example: ["pool", "central_air"]. |
beds_min / beds_max | integer | — | Bedroom range. Example: beds_min: 3, beds_max: 5. |
baths_min / baths_max | integer | — | Bathroom range (includes half-baths). Example: baths_min: 2. |
sqft_min / sqft_max | integer | — | Interior square footage range. Example: sqft_min: 1500, sqft_max: 4000. |
lot_sqft_min / lot_sqft_max | integer | — | Lot size range in sq ft. Example: lot_sqft_min: 5000. |
year_built_min / year_built_max | integer | — | Year built range. Example: year_built_min: 2010. |
Price Filters
| Parameter | Type | Default | Description |
|---|---|---|---|
list_price_min / list_price_max | integer | — | Active asking price range in USD. Example: list_price_min: 200000, list_price_max: 800000. |
sold_price_min / sold_price_max | integer | — | Sold price range in USD. Only works with status: ["sold"]. Example: sold_price_max: 500000. |
sold_date_min / sold_date_max | string | — | Sold date range (YYYY-MM-DD). Example: sold_date_min: "2023-01-01". |
hoa_fee_max | integer | — | Max monthly HOA fee. Example: hoa_fee_max: 300. |
no_hoa_fee | boolean | false | If true, only show properties with zero HOA fees. |
Listing Status Flags
| Parameter | Type | Default | Description |
|---|---|---|---|
pending | boolean | false | If true, only return properties currently under contract (pending sale). |
contingent | boolean | false | If true, only return contingent listings (under contract but with conditions that must be met). |
foreclosure | boolean | false | If true, only return properties in active foreclosure proceedings. |
new_construction | boolean | false | If true, only return newly built properties from developers/builders. |
Media & Tour Filters
| Parameter | Type | Default | Description |
|---|---|---|---|
has_tour | boolean | false | If true, only return listings that have any type of virtual tour available. |
matterport | boolean | false | If true, only return listings with a Matterport 3D interactive walkthrough. |
Rental Filters
| Parameter | Type | Default | Description |
|---|---|---|---|
cats | boolean | false | If true, only rental properties allowing cats. Use with status: ["for_rent"]. |
dogs | boolean | false | If true, only rental properties allowing dogs. Use with status: ["for_rent"]. |
Open House Filters
| Parameter | Type | Default | Description |
|---|---|---|---|
open_house_min / open_house_max | string | — | Filter by open house date range (YYYY-MM-DD). Example: open_house_min: "2024-06-01". |
Sorting
| Parameter | Type | Default | Description |
|---|---|---|---|
sort_field | string | list_date | Sort by: list_date, list_price, sold_price, sold_date, beds, lot_sqft, photo_count, last_update_date. |
sort_direction | string | desc | Sort order: desc (newest/highest first) or asc (oldest/lowest first). |
Agent & Listing ID Lookups
| Parameter | Type | Description |
|---|---|---|
agent_source_id | string | Filter by a specific agent's source ID. |
selling_agent_name | string | Filter by selling agent's full name. Example: "John Doe". |
source_listing_id | string | Look up a specific MLS listing ID. Example: "12345678". |
property_id | string | Look up by Realtor.com's internal property ID. Example: "M12345-67890". |
fulfillment_id | string | Filter by agent fulfillment ID. |
Pagination & Limits
| Parameter | Type | Default | Max | Description |
|---|---|---|---|---|
limit | integer | 200 | 200 | Properties fetched per API call. Realtor.com's maximum is 200. |
offset | integer | 0 | — | Starting position index. Use to resume a previous scrape. |
maxItems | integer | 5000 | 5000 | Total properties to scrape. The actor stops once this cap is hit. |
timeoutSecs | integer | 300 | 3600 | Overall run timeout in seconds. |
requestTimeoutSecs | integer | 30 | 120 | Per-request API timeout in seconds. |
Proxy
| Parameter | Type | Default | Description |
|---|---|---|---|
proxyConfiguration | object | US Datacenter | Proxy settings. Default uses Apify's US datacenter proxies for reliable US-based requests. |
Example Input — Full Search with All Major Filters
This example searches for active for-sale single-family homes and condos in Houston, TX with a pool, 3-6 bedrooms, priced $200K-$800K, built after 2005:
{"status": ["for_sale"],"state_code": "TX","city": "Houston","propertyType": ["single_family", "condo_townhome"],"keywords": ["pool"],"beds_min": 3,"beds_max": 6,"baths_min": 2,"baths_max": 5,"list_price_min": 200000,"list_price_max": 800000,"sqft_min": 1500,"sqft_max": 5000,"lot_sqft_min": 3000,"lot_sqft_max": 30000,"year_built_min": 2005,"year_built_max": 2025,"hoa_fee_max": 400,"foreclosure": false,"new_construction": false,"pending": false,"contingent": false,"has_tour": false,"matterport": false,"sort_field": "list_date","sort_direction": "desc","limit": 200,"maxItems": 500,"timeoutSecs": 300,"requestTimeoutSecs": 30,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyCountry": "US"}}
Example Input — Sold Comps in a ZIP Code
Pull recently sold properties in Beverly Hills for market analysis:
{"status": ["sold"],"postal_code": "90210","sold_price_min": 500000,"sold_price_max": 3000000,"sold_date_min": "2023-01-01","propertyType": ["single_family"],"sort_field": "sold_date","sort_direction": "desc","maxItems": 200,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyCountry": "US"}}
Example Input — Minimal Quick Search
The simplest possible search — just a status and a location:
{"status": ["for_sale"],"postal_code": "10022","maxItems": 100,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyCountry": "US"}}
Example Input — Foreclosures Only
Find distressed properties across Florida:
{"status": ["for_sale"],"state_code": "FL","foreclosure": true,"sort_field": "list_price","sort_direction": "asc","maxItems": 1000,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyCountry": "US"}}
Example Input — Rentals with Pet Policy
Find pet-friendly rentals in Austin:
{"status": ["for_rent"],"state_code": "TX","city": "Austin","cats": true,"dogs": true,"beds_min": 2,"sort_field": "list_date","sort_direction": "desc","maxItems": 500,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyCountry": "US"}}
Output — Full Field Reference
Each scraped property is pushed as a flat JSON object. Here is the complete output schema with all 40+ fields:
{"propertyId": "1234567890","listingId": "OC22183456","listPrice": 749000,"soldPrice": null,"soldDate": "","listingStatus": "for_sale","propertyName": "","propertyType": "single_family","propertySubType": null,"beds": "3","bathsConsolidated": "2","sqft": 1850,"lotSqft": 6500,"addressLine": "123 Oak Street","addressCity": "Irvine","addressState": "California","addressStateCode": "CA","addressPostalCode": "92612","latitude": 33.684,"longitude": -117.826,"countyName": "Orange","countyFips": "06059","permalink": "123-Oak-St_Irvine_CA_92612/M12345-67890","primaryPhotoUrl": "https://ap.rdcpix.com/...","photoUrls": ["https://ap.rdcpix.com/..."],"streetViewUrl": "https://maps.googleapis.com/...","hasMatterport": false,"virtualTours": [],"listDate": "2024-01-15T00:00:00Z","priceReducedAmount": null,"isComingSoon": false,"isNewListing": true,"isPriceReduced": false,"isForeclosure": false,"isNewConstruction": false,"isPending": false,"isContingent": false,"openHouses": [],"agentName": "Jane Smith","agentFulfillmentId": "12345","officeName": "Berkshire Hathaway","brandingName": "Berkshire Hathaway HomeServices","brandingPhoto": "https://...","communityName": "","communityPermalink": "","sourceId": "SOCALMLS","sourceName": "CRMLS","scrapedAt": "2024-01-20T14:30:00.000000+00:00","error": null}
Output Fields Explained
| Field | Type | Description |
|---|---|---|
propertyId | string | Realtor.com's permanent internal property identifier. Unique per property. |
listingId | string | The MLS (Multiple Listing Service) ID assigned by the local listing board. |
listPrice | integer | Current active asking price in USD. null if not listed for sale. |
soldPrice | integer | Final sale price in USD. Only populated for sold listings. |
soldDate | string | Date the property was sold. Only populated for sold listings. |
listingStatus | string | Current lifecycle stage: for_sale, sold, for_rent, pending, contingent, etc. |
propertyName | string | Optional property or community name (common for condos/apartments). |
propertyType | string | Classification: single_family, condo_townhome, multi_family, apartment, land, farm, mobile. |
propertySubType | string | More granular classification when available. |
beds | string | Bedroom count (or range like "2-3" for multi-unit). |
bathsConsolidated | string | Total bathroom count including half-baths. |
sqft | integer | Interior living space in square feet. |
lotSqft | integer | Total lot/land area in square feet. |
addressLine | string | Street address line. |
addressCity | string | City name. |
addressState | string | Full state name (e.g., "California"). |
addressStateCode | string | 2-letter state code (e.g., "CA"). |
addressPostalCode | string | 5-digit ZIP code. |
latitude | number | GPS latitude coordinate. |
longitude | number | GPS longitude coordinate. |
countyName | string | County name. |
countyFips | string | Federal FIPS county code (useful for government/census data joins). |
permalink | string | Realtor.com URL path to the listing (append to https://www.realtor.com/). |
primaryPhotoUrl | string | Direct URL to the main listing cover photo. |
photoUrls | array | Up to 3 additional listing photo URLs. |
streetViewUrl | string | Google Street View URL for the property location. |
hasMatterport | boolean | Whether the listing has a Matterport 3D tour. |
virtualTours | array | Virtual tour objects with href and type fields. |
listDate | string | ISO date when the property was first listed. |
priceReducedAmount | integer | Dollar amount of the most recent price reduction. null if no reduction. |
isComingSoon | boolean | Listing is in "Coming Soon" pre-market status. |
isNewListing | boolean | Listed within the last 14 days. |
isPriceReduced | boolean | Price was reduced within the last 30 days. |
isForeclosure | boolean | Property is in foreclosure. |
isNewConstruction | boolean | Newly built property. |
isPending | boolean | Under contract, sale pending. |
isContingent | boolean | Under contract with contingencies. |
openHouses | array | Scheduled open houses with start_date and end_date. |
agentName | string | Listing or selling agent's full name. |
agentFulfillmentId | string | Agent's fulfillment ID for follow-up queries. |
officeName | string | Listing brokerage/office name. |
brandingName | string | Agent or team branding name. |
brandingPhoto | string | Branding logo or photo URL. |
communityName | string | Community or development name (for planned communities). |
communityPermalink | string | URL path to the community page. |
sourceId | string | MLS source system ID (e.g., "SOCALMLS"). |
sourceName | string | MLS source name (e.g., "CRMLS"). |
scrapedAt | string | ISO 8601 timestamp of when this record was scraped. |
error | string | Error message if this record failed to parse. null on success. |
How It Works
- Input Normalization: The actor validates and normalizes your inputs. Array fields like
propertyTypeandkeywordsare automatically corrected even if you accidentally pass a comma-separated string instead of an array. - Query Construction: Your flat input parameters are assembled into a properly structured API request — no manual payload construction needed.
- Paginated Extraction: The actor fetches up to 200 listings per API call and automatically paginates through all available results until your
maxItemscap is reached or no more data exists. - Smart Early Exit: If a page returns fewer than 200 results, the actor knows it has reached the end and stops immediately — no wasted requests.
- Deduplication: Every
propertyIdis tracked. If the same property appears across multiple pages (common with Realtor.com's overlapping pagination), duplicates are silently skipped. - Proxy Rotation: Each page request uses a fresh US datacenter proxy IP to avoid rate limiting and blocking.
- Real-time Dataset Push: Results are pushed to your Apify dataset as they arrive. You can start downloading, exporting, or syncing via API/webhooks before the run completes.
Tips & Best Practices
- Always include a location filter (
postal_code,city+state_code, orstate_code) alongsidestatusto avoid scanning the entire national database. - Use
maxItemsto control costs. The default is 5000 but you can lower it to 100 or 500 for quick test runs. - Don't combine conflicting filters. For example,
street_name+address+postal_code+citytogether will likely return zero results. Pick one or two location filters. - Boolean flags only activate when set to
true. Settingforeclosure: falsedoes NOT exclude foreclosures — it simply doesn't apply the filter. Set it totrueto only show foreclosures. - Sold comps require
status: ["sold"]. Thesold_price_min/maxandsold_date_min/maxfilters are ignored unless the status includessold. - Pet filters are for rentals only.
catsanddogsonly apply whenstatusincludesfor_rent.
Frequently Asked Questions
What is the minimum required input?
Only status is technically required (e.g., ["for_sale"]). However, you should always add a location filter to avoid impractically broad searches.
How many properties can I scrape per run?
Up to 5,000 per run. The actor paginates in batches of 200 (Realtor.com's API maximum) and stops when your maxItems cap is reached or when no more data is available.
Can I search for sold properties (comps)?
Yes. Set status to ["sold"] and use sold_price_min, sold_price_max, sold_date_min, and sold_date_max to narrow the results.
Will I get duplicate properties?
No. The actor tracks every propertyId it has pushed and automatically skips any duplicate that reappears during pagination.
What proxy settings should I use?
The default (US Datacenter) works reliably. Only switch to Residential proxies if you encounter persistent blocks.
Can I pass propertyType as a comma-separated string?
Yes. The actor automatically normalizes "single_family, condo" into ["single_family", "condo"]. The same applies to keywords and status.
What happens if the search has fewer results than maxItems?
The actor collects everything available and stops. You only pay for actual results, not the cap.
Integrations
Connect this Realtor.com scraper with other apps and services using Apify integrations:
- Google Sheets — Auto-populate a spreadsheet with new listings
- Slack — Get notified when foreclosures or price drops appear
- Make (Integromat) — Build complex automation workflows
- Zapier — Connect to 5,000+ apps with zero code
- Airbyte — Stream property data into your data warehouse
- GitHub — Trigger scrapes from CI/CD pipelines
- Webhooks — Get instant HTTP callbacks when results are ready
Use the Apify API to trigger runs, fetch datasets, and integrate with any programming language.