# Realtor.com Scraper 🏠 Listings, Agents & Reviews | $1.5/1K (`pro100chok/realtor-com-scraper`) Actor

Scrape Realtor.com listings, property details & agents — no API key. Get prices, beds/baths, photos, tax & price history, schools, AVM value estimates, building permits & neighborhood medians, plus agent contacts, ratings & full reviews. For-sale, rent & sold. Export CSV/JSON. From $1.5/1K.

- **URL**: https://apify.com/pro100chok/realtor-com-scraper.md
- **Developed by:** [Raven](https://apify.com/pro100chok) (community)
- **Categories:** Real estate, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 85.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.30 / 1,000 property listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Realtor.com Scraper — Listings, Property Details, Agents & Reviews (from $1.50 / 1,000)

Scrape **Realtor.com** property listings, full property details, and real-estate agents — with data no other scraper returns: **client reviews & star ratings, building permit history, and neighborhood price medians**. Export to JSON, CSV, or Excel. **No login, no API key, no code** — proxy rotation and anti-bot handling are built in.

**Price anchor:** from **$1.50 per 1,000** property listings · **$4 / 1,000** full property details · **$3 / 1,000** agents. Pay only for the results you get — no monthly fee, no platform surcharge.

---

### What does this Realtor.com Scraper do?

Realtor.com has **no public listings API** for bulk data, so this actor is the practical **Realtor.com API alternative**: point it at a location (or a Realtor.com URL) and get clean, structured data at scale.

Three modes in one actor:

| Mode | Input | Returns |
|------|-------|---------|
| 🏠 **Property search** | City, ZIP, "City, State", address, or any Realtor.com search URL | Every listing for the area — **for sale, for rent, recently sold, pending, coming soon** |
| 📄 **Property details** | Listing URL(s) or property ID(s) | The complete record — tax & price history, schools, value estimates, risk scores, mortgage, permits, all photos |
| 🧑‍💼 **Agents** | City, ZIP, or "City, State" | Real-estate agents with contacts, brokerage, active listings, profile, and **client ratings & reviews** |

Works across **all US markets**. Keyless, no browser, results stream straight into an Apify dataset.

---

### Why use this scraper?

- ✅ **90+ fields per property** — see the field tables below.
- ✅ **Agent ratings & full review text** — real client testimonials with star ratings, satisfaction scores, and dates. Most agent scrapers give you contacts only.
- ✅ **Building permit history** — permit type, work class, status, issue date, valuation, and description, sourced from city open data.
- ✅ **Neighborhood market medians** — each property is tagged with its ZIP's median list price, days on market, and price per sqft.
- ✅ **Multi-provider AVM estimates** — Quantarium, Cotality, and Collateral Analytics value estimates, plus historical and forecast values.
- ✅ **Environmental risk** — Flood Factor score + FEMA zone, wildfire score, noise score.
- ✅ **All-in-one** — properties, deep details, and agents in a single actor (most scrapers do just one).
- ✅ **Every listing status** — for sale, for rent, sold, pending, coming soon.
- ✅ **Powerful filters** — beds, baths, price, sqft, lot size, year built, property type.

#### How it compares

| | Official Realtor.com API | Typical Realtor scrapers | **This actor** |
|---|---|---|---|
| Public bulk access | ❌ Not available | ✅ | ✅ |
| Login / API key | Required (restricted) | Sometimes | ❌ None |
| Property + details + agents | — | Usually one of them | ✅ All three |
| Agent ratings + **review text** | — | ❌ Rare | ✅ Yes |
| Building permits | — | ❌ Rare / paid add-on | ✅ Included (covered metros) |
| Neighborhood medians | — | ❌ | ✅ Included |
| AVM estimates + forecast | — | Sometimes | ✅ Multi-provider |
| Pricing | Enterprise contract | $0.70–$5 / 1k | from **$1.50 / 1k**, all-inclusive |

---

### What data can you extract?

#### Property fields (search returns ~70, full details ~90+)

| Group | Fields |
|-------|--------|
| **Identity & links** | `propertyId`, `listingId`, `mlsId`, `mlsName`, `status`, `mlsStatus`, `url`, `permalink` |
| **Address & location** | `addressLine`, `city`, `state`, `stateCode`, `postalCode`, `county`, `countyFips`, `neighborhoods`, `latitude`, `longitude`, `streetViewUrl` |
| **Price** | `listPrice`, `listPriceMin`, `listPriceMax`, `pricePerSqft`, `lastSoldPrice`, `lastSoldDate` |
| **Specs** | `beds`, `baths`, `bathsFull`, `bathsHalf`, `sqft`, `lotSqft`, `yearBuilt`, `garage`, `stories`, `propertyType`, `description` |
| **Listing meta** | `listDate`, `daysOnMarket`, `lastUpdateDate`, `tags`, `isNewListing`, `isPriceReduced`, `isNewConstruction`, `isForeclosure`, `isPending`, `isComingSoon` |
| **Media** | `primaryPhoto`, `photos`, `photoCount`, `virtualTours`, `videos`, `openHouses` |
| **Agent / office** | `agentName`, `agentEmail`, `agentPhone`, `agentStateLicense`, `officeName`, `officePhone`, `brokerName`, `advertisers` |
| **Value estimates (AVM)** | `estimate`, `estimateHigh`, `estimateLow`, `estimateSource`, `estimates` |
| **Financial & history** | `hoaFee`, `taxHistory`, `latestTaxAmount`, `latestTaxAssessmentTotal`, `priceHistory`, `mortgageMonthlyPayment` |
| **Schools** | `schools` (name, GreatSchools rating, distance, grades, district) |
| **Neighborhood market** | `neighborhoodMedianListPrice`, `neighborhoodMedianDaysOnMarket`, `neighborhoodMedianPricePerSqft` |
| **Building permits** | `permits` (type, work class, status, issue date, valuation, description), `permitsCount` |
| **Environmental risk** | `floodFactorScore`, `floodFemaZone`, `wildfireFactorScore`, `noiseScore` |
| **Rentals** | `petsCats`, `petsDogs`, `units` (per-unit beds/baths/sqft/price/availability) |

#### Agent fields

`agentName`, `agentType`, `agentEmail`, `agentPhone`, `agentPhones`, `nrdsId`, `stateLicense`, `brokerName`, `officeName`, `officeEmail`, `officePhone`, `officeHref`, `bio`, `photoUrl`, `yearsExperienceLabel`, `languages`, `specializations`, `servedAreas`, `activeListingsCount`, `activeListings`, **`agentRating`**, **`reviewsCount`**, **`reviews`** (text, customer type, per-review scores, date), `realSatisfiedUrl`.

---

### How to scrape Realtor.com step by step

1. Click **Try for free** / open the actor in [Apify Console](https://console.apify.com).
2. Choose a **mode** (`scrapeType`): Property search, Property details, or Agents.
3. Enter your **locations** (e.g. `Austin, TX`, `78704`) or paste Realtor.com URLs.
4. Set filters and `maxItems` as needed.
5. Click **Start** and watch results stream into the dataset.
6. **Export** to JSON, CSV, Excel, or XML — or pull from the API.

New Apify accounts include **$5 in free platform credits every month** — enough for roughly **3,000+ listings/month free** on this actor.

---

### How to get agent ratings and reviews

Set `scrapeType` to **`agents`** and keep `includeReviews` on (default). Each agent is matched to their public client reviews and enriched with a **star rating**, **review count**, satisfaction/recommendation/performance scores, and the **full text of individual reviews** (with customer type and date). Coverage is the set of agents who publish client reviews publicly — where an agent has none, you still get their full contact + profile + active listings.

### How to get building permit history

Keep `includePermits` on (default) in Search or Property details mode. For properties in **covered major US metros** (Austin, New York City, Los Angeles, Chicago, San Francisco, Seattle, San Diego, Dallas, Denver, Washington DC, Boston, and more), each record is enriched with its building permit history from free city open-data portals. Properties outside covered cities simply return no permits.

### How to pull recently sold comps

Set `listingType` to `sold` and add `soldWithinDays` (e.g. `90`) plus a ZIP in `location`. You get sold prices, sold dates, and — with `includeDetails` — full price and tax history for CMA/comp analysis.

---

### Input parameters

| Field | Type | Description |
|-------|------|-------------|
| `scrapeType` | enum | `search`, `propertyDetail`, or `agents` |
| `location` | array | Cities, ZIPs, "City, State", addresses, or Realtor.com search URLs (Search & Agents) |
| `listingType` | enum | `for_sale`, `for_rent`, `sold`, `pending`, `coming_soon` |
| `propertyType` | array | single_family, condo, townhome, multi_family, duplex_triplex, farm, land, mobile, apartment |
| `propertyUrls` | array | Listing URLs or property IDs (Property details mode) |
| `bedsMin` / `bedsMax` | integer | Bedroom range |
| `bathsMin` | integer | Minimum bathrooms |
| `priceMin` / `priceMax` | integer | Price range (USD) |
| `sqftMin` / `sqftMax` | integer | Building size range |
| `lotSqftMin` | integer | Minimum lot size |
| `yearBuiltMin` / `yearBuiltMax` | integer | Year-built range |
| `soldWithinDays` | integer | Sold mode: only homes sold in the last N days |
| `listedWithinDays` | integer | For sale/rent: only homes listed in the last N days |
| `includeDetails` | boolean | Search: enrich each listing with the full detail record |
| `includeAgentProfile` | boolean | Agents: add bio, experience, languages, specializations |
| `includeReviews` | boolean | Agents: add star rating and full client reviews |
| `includeMarketStats` | boolean | Add neighborhood median list price / DOM / $-per-sqft |
| `includePermits` | boolean | Add building permit history (covered metros) |
| `maxItems` | integer | Max records per run |
| `proxyConfiguration` | object | Proxy settings (US residential recommended) |

---

### Ready-to-paste input recipes

**Homes for sale in a city, 3+ beds under $750k**
```json
{
  "scrapeType": "search",
  "location": ["Austin, TX"],
  "listingType": "for_sale",
  "propertyType": ["single_family", "condo"],
  "bedsMin": 3,
  "priceMax": 750000,
  "maxItems": 500
}
````

**Recently sold comps in a ZIP (last 90 days), with full history**

```json
{
  "scrapeType": "search",
  "location": ["78704"],
  "listingType": "sold",
  "soldWithinDays": 90,
  "includeDetails": true,
  "maxItems": 300
}
```

**Rentals in a city with pet policy and units**

```json
{
  "scrapeType": "search",
  "location": ["Denver, CO"],
  "listingType": "for_rent",
  "maxItems": 300
}
```

**Full details for specific listings**

```json
{
  "scrapeType": "propertyDetail",
  "propertyUrls": [
    "https://www.realtor.com/realestateandhomes-detail/5611-Meadow-Crst_Austin_TX_78744_M87425-81034",
    "9345901368"
  ]
}
```

**Agents in a city with ratings & reviews**

```json
{
  "scrapeType": "agents",
  "location": ["Austin, TX"],
  "includeReviews": true,
  "maxItems": 200
}
```

**Scrape from a Realtor.com search URL**

```json
{
  "scrapeType": "search",
  "location": ["https://www.realtor.com/realestateandhomes-search/Miami_FL"],
  "maxItems": 500
}
```

***

### Output examples

**Property (search result)**

```json
{
  "propertyId": "8742581034",
  "url": "https://www.realtor.com/realestateandhomes-detail/5611-Meadow-Crst_Austin_TX_78744_M87425-81034",
  "status": "for_sale",
  "addressLine": "5611 Meadow Crst",
  "city": "Austin",
  "stateCode": "TX",
  "postalCode": "78744",
  "latitude": 30.192137,
  "longitude": -97.734261,
  "listPrice": 372000,
  "pricePerSqft": 233,
  "beds": 3,
  "baths": 2,
  "sqft": 1600,
  "lotSqft": 7187,
  "yearBuilt": 1988,
  "propertyType": "single_family",
  "daysOnMarket": 37,
  "photoCount": 29,
  "agentName": "Tarek Boulbol",
  "agentPhone": "5125522198",
  "officeName": "Texas Premier Realty",
  "estimate": 365138,
  "estimateSource": "Quantarium",
  "neighborhoodMedianListPrice": 374950,
  "neighborhoodMedianDaysOnMarket": 69
}
```

**Property details — extra fields on top of the above**

```json
{
  "taxHistory": [{ "year": 2026, "tax": 6429, "assessmentTotal": 329644 }],
  "priceHistory": [{ "date": "2026-06-30", "event": "Price Changed", "price": 372000 }],
  "schools": [{ "name": "Widen Elementary School", "rating": 2, "distanceMiles": 0.4, "district": "Austin Independent School District" }],
  "permits": [{ "type": "Building Permit", "workClass": "New", "status": "Final", "issueDate": "1988-03-28", "valuation": "58940", "description": "One Story Frame Residence" }],
  "mortgageMonthlyPayment": 2486,
  "floodFactorScore": 1,
  "wildfireFactorScore": 5
}
```

**Agent**

```json
{
  "agentName": "Kathryn Scarborough",
  "agentEmail": "agent@example.com",
  "agentPhone": "5125550100",
  "brokerName": "Engel & Voelkers",
  "yearsExperienceLabel": "25 years of experience",
  "languages": ["English"],
  "activeListingsCount": 12,
  "agentRating": 4.9,
  "reviewsCount": 90,
  "reviews": [
    { "text": "Kathryn made selling our home effortless...", "customerType": "Seller", "satisfaction": "100", "date": "Mon, 12 Jan 2026 00:00:00 GMT" }
  ]
}
```

***

### How much does it cost to scrape Realtor.com?

Pay-per-result, all-inclusive (proxy and platform usage are already covered — no extra charges):

| Event | Price | Per 1,000 |
|-------|-------|-----------|
| Property listing (search) | $0.0015 | **$1.50** |
| Property with full details | $0.004 | **$4.00** |
| Agent (profile + reviews) | $0.003 | **$3.00** |

**Worked examples**

| Job | Volume | Cost |
|-----|--------|------|
| Scan a city's for-sale market | 5,000 listings | $7.50 |
| Full details for a shortlist | 500 detailed | $2.00 |
| Agent leads for a metro | 1,000 agents | $3.00 |

New accounts get **$5 free credits/month** ≈ **3,300 listings** free every month. There are no monthly rental fees — you only pay for results.

***

### Integrations

Connect the actor to your stack with built-in Apify features: **Make, Zapier, n8n, Google Sheets, Slack, webhooks**, the **Apify API** (JS/Python clients), and **Schedules** for recurring runs. Export as JSON, CSV, Excel, XML, or RSS.

### Use with AI agents (MCP)

This actor is available through the **Apify MCP server**, so AI assistants like Claude and ChatGPT can run it directly. Example prompt:

> "Use the Realtor.com scraper to get all homes for sale under $500k in Austin, TX, then give me the median price per square foot."

***

### Popular use cases

- 🏦 **Real-estate investors** — find deals, run comps, and screen markets with sold prices + AVM estimates.
- 📈 **Market researchers** — track inventory, price drops, and days-on-market by ZIP.
- 📇 **Lead generation** — build agent lists with contacts, brokerages, and active listings.
- 🧮 **Appraisers & analysts** — pull tax history, price history, and value estimates for CMAs.
- 🏗️ **Proptech & CRM enrichment** — feed clean listing and agent data into your product.

***

### Is it legal to scrape Realtor.com?

This actor collects **publicly available information** only. Scraping public data is broadly lawful, but you are responsible for how you use it and for complying with applicable laws (e.g. **GDPR/CCPA** for personal data) and Realtor.com's terms of service. For personal data such as agent contacts, ensure you have a lawful basis for processing. See Apify's guide: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

***

### FAQ

#### Does Realtor.com have a public API?

No public API for bulk listing/agent data. This actor is the practical Realtor.com API alternative — no key or login required.

#### Do I need a login, API key, or my own proxies?

No. Just enter a location and run it. Proxy rotation and anti-bot handling are built in.

#### Can I export to CSV, Excel, or Google Sheets?

Yes — export the dataset as JSON, CSV, Excel, XML, or RSS, or push to Google Sheets via the integration.

#### Which locations are supported?

The entire United States — search by city, ZIP, "City, State", full address, or a Realtor.com search URL.

#### Can I scrape sold homes and rentals?

Yes. Set `listingType` to `sold`, `for_rent`, `pending`, or `coming_soon`.

#### Do agent records really include reviews?

Yes — star rating, review count, and the full text of individual client reviews, where the agent publishes reviews publicly. Agents without public reviews still return full contact + profile + listings.

#### Which cities have building permit data?

Major US metros with open permit portals (Austin, NYC, LA, Chicago, SF, Seattle, San Diego, Dallas, Denver, Washington DC, Boston, and more). Properties elsewhere return no permits — the rest of the record is unaffected.

#### Why are some fields empty on a listing?

Realtor.com doesn't publish every field for every listing (e.g. no HOA on a lot, no reviews for a new agent). Empty fields are simply omitted for that record.

#### Will I be charged for runs that return nothing?

You're charged per result. A location with zero matches produces zero billable results.

#### How many results can I get?

Set `maxItems` as high as you need; the actor paginates automatically. There's no hard cap.

#### How much does it cost?

From $1.50 per 1,000 listings, $4 per 1,000 full details, $3 per 1,000 agents — all-inclusive. Free accounts get $5 credits/month.

#### Is the data live?

Yes — every run fetches current data from Realtor.com at request time.

***

### Feedback & support

Found a bug or need a field added? Open an issue on the actor's **Issues** tab in the Apify Console — include your run ID and input so we can reproduce it quickly.

***

### More scrapers by this developer

- **Zillow Scraper** — listings, property details, Zestimate & agents
- **Idealista Scraper** — properties, prices & agencies
- **Apartments.com Scraper** — rentals, prices & reviews
- **Google Maps Scraper** — places, emails, reviews & photos
- **Website Contact Scraper** — bulk emails, phones & socials

***

**Tags:** realtor.com scraper, realtor scraper, real estate scraper, realtor.com api, real estate api alternative, property listings scraper, real estate agent leads, agent reviews scraper, mls scraper, sold homes comps, rental listings scraper, zillow alternative, property data, housing market data, building permits, AVM home value, us real estate data.

# Actor input Schema

## `scrapeType` (type: `string`):

Choose the dataset you want. Search returns property listings for a location; Property details returns the full record for specific listings; Agents returns real-estate agents (with their active listings) for a location.

## `location` (type: `array`):

For Search and Agents modes. Enter cities ("Austin, TX"), ZIP codes ("78704"), "City, State", full addresses, or paste any realtor.com search URL. One query per line.

## `listingType` (type: `string`):

Which listing status to return in Search mode.

## `propertyType` (type: `array`):

Optional. Limit Search results to these property types. Leave empty for all.

## `includeDetails` (type: `boolean`):

Search mode only. When on, every listing is enriched with the full detail record (tax & price history, schools, AVM estimate, risk scores, mortgage, all photos). Slower and costs more per result.

## `includeAgentProfile` (type: `boolean`):

Agents mode only. When on, agents are enriched with their directory profile (bio, years of experience, languages, served areas, specializations) where available. Adds extra requests.

## `includeReviews` (type: `boolean`):

Agents mode only. When on, agents are matched to their public client reviews (star rating, review count, and full review text) where available. Adds extra requests.

## `includeMarketStats` (type: `boolean`):

Search & Property details modes. When on, each property is tagged with its ZIP's median list price, days on market, and price per sqft. Adds a small number of extra requests.

## `includePermits` (type: `boolean`):

Search & Property details modes. When on, properties in covered metros (major US cities with open permit data) are enriched with their building permit history — type, work class, status, issue date, valuation, and description. Properties outside covered cities return no permits.

## `maxItems` (type: `integer`):

Maximum number of records to return (per run). For Agents mode this is the number of unique agents.

## `propertyUrls` (type: `array`):

For Property details mode. Paste realtor.com listing URLs or numeric property IDs, one per line.

## `bedsMin` (type: `integer`):

Minimum number of bedrooms.

## `bedsMax` (type: `integer`):

Maximum number of bedrooms.

## `bathsMin` (type: `integer`):

Minimum number of bathrooms.

## `priceMin` (type: `integer`):

Minimum price (USD).

## `priceMax` (type: `integer`):

Maximum price (USD).

## `sqftMin` (type: `integer`):

Minimum building square footage.

## `sqftMax` (type: `integer`):

Maximum building square footage.

## `lotSqftMin` (type: `integer`):

Minimum lot size in square feet.

## `yearBuiltMin` (type: `integer`):

Earliest year built.

## `yearBuiltMax` (type: `integer`):

Latest year built.

## `soldWithinDays` (type: `integer`):

Sold mode only: only include homes sold in the last N days.

## `listedWithinDays` (type: `integer`):

For sale / rent only: only include homes listed in the last N days.

## `maxRetries` (type: `integer`):

How many times to retry a blocked/failed request (rotates IP + fingerprint each time).

## `proxyConfiguration` (type: `object`):

Proxies are required. US residential proxies are strongly recommended.

## Actor input object example

```json
{
  "scrapeType": "search",
  "location": [
    "Austin, TX"
  ],
  "listingType": "for_sale",
  "includeDetails": false,
  "includeAgentProfile": true,
  "includeReviews": true,
  "includeMarketStats": true,
  "includePermits": true,
  "maxItems": 100,
  "propertyUrls": [
    "https://www.realtor.com/realestateandhomes-detail/5611-Meadow-Crst_Austin_TX_78744_M87425-81034"
  ],
  "maxRetries": 6,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `financials` (type: `string`):

No description

## `agents` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "location": [
        "Austin, TX"
    ],
    "propertyUrls": [
        "https://www.realtor.com/realestateandhomes-detail/5611-Meadow-Crst_Austin_TX_78744_M87425-81034"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("pro100chok/realtor-com-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "location": ["Austin, TX"],
    "propertyUrls": ["https://www.realtor.com/realestateandhomes-detail/5611-Meadow-Crst_Austin_TX_78744_M87425-81034"],
}

# Run the Actor and wait for it to finish
run = client.actor("pro100chok/realtor-com-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "location": [
    "Austin, TX"
  ],
  "propertyUrls": [
    "https://www.realtor.com/realestateandhomes-detail/5611-Meadow-Crst_Austin_TX_78744_M87425-81034"
  ]
}' |
apify call pro100chok/realtor-com-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=pro100chok/realtor-com-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Realtor.com Scraper 🏠 Listings, Agents & Reviews | $1.5/1K",
        "description": "Scrape Realtor.com listings, property details & agents — no API key. Get prices, beds/baths, photos, tax & price history, schools, AVM value estimates, building permits & neighborhood medians, plus agent contacts, ratings & full reviews. For-sale, rent & sold. Export CSV/JSON. From $1.5/1K.",
        "version": "1.0",
        "x-build-id": "0MkvUGCzXaYUaMVtd"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/pro100chok~realtor-com-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-pro100chok-realtor-com-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/pro100chok~realtor-com-scraper/runs": {
            "post": {
                "operationId": "runs-sync-pro100chok-realtor-com-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/pro100chok~realtor-com-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-pro100chok-realtor-com-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "scrapeType"
                ],
                "properties": {
                    "scrapeType": {
                        "title": "What to scrape",
                        "enum": [
                            "search",
                            "propertyDetail",
                            "agents"
                        ],
                        "type": "string",
                        "description": "Choose the dataset you want. Search returns property listings for a location; Property details returns the full record for specific listings; Agents returns real-estate agents (with their active listings) for a location.",
                        "default": "search"
                    },
                    "location": {
                        "title": "Locations / search URLs",
                        "type": "array",
                        "description": "For Search and Agents modes. Enter cities (\"Austin, TX\"), ZIP codes (\"78704\"), \"City, State\", full addresses, or paste any realtor.com search URL. One query per line.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "listingType": {
                        "title": "Listing status",
                        "enum": [
                            "for_sale",
                            "for_rent",
                            "sold",
                            "pending",
                            "coming_soon"
                        ],
                        "type": "string",
                        "description": "Which listing status to return in Search mode.",
                        "default": "for_sale"
                    },
                    "propertyType": {
                        "title": "Property types",
                        "type": "array",
                        "description": "Optional. Limit Search results to these property types. Leave empty for all.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "single_family",
                                "condo",
                                "townhome",
                                "multi_family",
                                "duplex_triplex",
                                "farm",
                                "land",
                                "mobile",
                                "apartment"
                            ],
                            "enumTitles": [
                                "Single family",
                                "Condo",
                                "Townhome",
                                "Multi-family",
                                "Duplex / triplex",
                                "Farm",
                                "Land",
                                "Mobile",
                                "Apartment"
                            ]
                        }
                    },
                    "includeDetails": {
                        "title": "Enrich each result with full details",
                        "type": "boolean",
                        "description": "Search mode only. When on, every listing is enriched with the full detail record (tax & price history, schools, AVM estimate, risk scores, mortgage, all photos). Slower and costs more per result.",
                        "default": false
                    },
                    "includeAgentProfile": {
                        "title": "Enrich agents with profile",
                        "type": "boolean",
                        "description": "Agents mode only. When on, agents are enriched with their directory profile (bio, years of experience, languages, served areas, specializations) where available. Adds extra requests.",
                        "default": true
                    },
                    "includeReviews": {
                        "title": "Enrich agents with ratings & reviews",
                        "type": "boolean",
                        "description": "Agents mode only. When on, agents are matched to their public client reviews (star rating, review count, and full review text) where available. Adds extra requests.",
                        "default": true
                    },
                    "includeMarketStats": {
                        "title": "Add neighborhood market stats",
                        "type": "boolean",
                        "description": "Search & Property details modes. When on, each property is tagged with its ZIP's median list price, days on market, and price per sqft. Adds a small number of extra requests.",
                        "default": true
                    },
                    "includePermits": {
                        "title": "Add building permit history",
                        "type": "boolean",
                        "description": "Search & Property details modes. When on, properties in covered metros (major US cities with open permit data) are enriched with their building permit history — type, work class, status, issue date, valuation, and description. Properties outside covered cities return no permits.",
                        "default": true
                    },
                    "maxItems": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Maximum number of records to return (per run). For Agents mode this is the number of unique agents.",
                        "default": 100
                    },
                    "propertyUrls": {
                        "title": "Property URLs or IDs",
                        "type": "array",
                        "description": "For Property details mode. Paste realtor.com listing URLs or numeric property IDs, one per line.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "bedsMin": {
                        "title": "Beds (min)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum number of bedrooms."
                    },
                    "bedsMax": {
                        "title": "Beds (max)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of bedrooms."
                    },
                    "bathsMin": {
                        "title": "Baths (min)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum number of bathrooms."
                    },
                    "priceMin": {
                        "title": "Price (min)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum price (USD)."
                    },
                    "priceMax": {
                        "title": "Price (max)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum price (USD)."
                    },
                    "sqftMin": {
                        "title": "Sqft (min)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum building square footage."
                    },
                    "sqftMax": {
                        "title": "Sqft (max)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum building square footage."
                    },
                    "lotSqftMin": {
                        "title": "Lot sqft (min)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum lot size in square feet."
                    },
                    "yearBuiltMin": {
                        "title": "Year built (min)",
                        "minimum": 1800,
                        "type": "integer",
                        "description": "Earliest year built."
                    },
                    "yearBuiltMax": {
                        "title": "Year built (max)",
                        "minimum": 1800,
                        "type": "integer",
                        "description": "Latest year built."
                    },
                    "soldWithinDays": {
                        "title": "Sold within (days)",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Sold mode only: only include homes sold in the last N days."
                    },
                    "listedWithinDays": {
                        "title": "Listed within (days)",
                        "minimum": 1,
                        "type": "integer",
                        "description": "For sale / rent only: only include homes listed in the last N days."
                    },
                    "maxRetries": {
                        "title": "Max retries",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "How many times to retry a blocked/failed request (rotates IP + fingerprint each time).",
                        "default": 6
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxies are required. US residential proxies are strongly recommended.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "US"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
