# Realtor.com Scraper — 29 Fields, Sold Mode, No Login (`themineworks/realtor-scraper`) Actor

Scrape Realtor.com for-sale and sold listings by city or zip: price, beds, baths, sqft, agent, office, MLS, coordinates and photos. No login, no API key. Use as an MCP server in Claude & AI agents.

- **URL**: https://apify.com/themineworks/realtor-scraper.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Real estate, Lead generation, MCP servers
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 property scrapeds

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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: Property & Agent Data

> **Part of the Real Estate MCP.** This actor's data is also available to AI agents through our [Real Estate MCP server](https://apify.com/themineworks/real-estate-mcp) — eight listing, sales and rental-market tools behind one endpoint. No result, no charge.

> ⚡ Part of a 69-scraper suite trusted by 450+ developers across 8,000+ runs · >99% run success · no login, no cookies, no ban risk.

> 💸 You're only charged for delivered results. Empty searches, failed pages and duplicate listings are never billed.

### Overview

Realtor.com Scraper extracts real estate listings from Realtor.com by city or ZIP code. For every for-sale and recently-sold property you get price, beds, baths, square footage, price per sqft, listing agent, brokerage office, county, coordinates, and the listing URL. No login and no API key.

Built lean and HTTP-only, it runs on Apify residential proxies and bills pay-per-result. Every record carries the listing agent and office, making this ideal for real-estate lead lists.

✅ No login required | ✅ No API key | ✅ Pay only for results | ✅ MCP-ready for AI agents

Reliability: blocked, empty, or failed pages are never charged. You only pay for property records actually delivered to your dataset.

### Features

Full location coverage. Search by city, state or ZIP with no per-metro caps.
Agent and office data. Every listing includes listing agent and brokerage name.
For-sale and sold modes. Flip `soldMode` to pull recently-sold comps with sold price and date.
Rich property fields. Price, beds, baths, sqft, HOA, year built, coordinates, and photo URL.
Residential proxies. No datacenter-IP blocks, no unblocker subscription.

### How it works

Realtor.com has no public listings API for developers. Its data partnerships are gated, expensive, and coverage-limited. This actor talks directly to Realtor.com's own search backend over plain HTTP, so you are not capped by the row limits, rate limits, or licensing restrictions of a third-party feed.

You choose the location, the filters, and the volume. The actor pages through results, extracts each listing into a flat JSON record, and pushes to the dataset. Field availability depends on what Realtor.com publishes for each listing; `lastSoldPrice` and `lastSoldDate` populate in recently-sold mode.

### 🧾 Input configuration

```json
{
  "location": "Austin, TX",
  "maxItems": 100,
  "soldMode": false,
  "minPrice": 400000,
  "minBeds": 3,
  "proxyConfig": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "US"
  }
}
```

To scrape recently-sold homes with sold price and date, set `"soldMode": true`.

### 📤 Output format

Real record captured from a live run against `"Austin, TX"`:

```json
{
  "propertyId": "7211899596",
  "listingId": "2997168140",
  "status": "for_sale",
  "address": "4719 Castleman Dr",
  "city": "Austin",
  "state": "TX",
  "zip": "78725",
  "county": "Travis",
  "price": 185000,
  "lastSoldDate": "2024-01-24",
  "beds": 3,
  "baths": 2,
  "sqft": 1405,
  "lotSqft": 5227,
  "yearBuilt": 1996,
  "propertyType": "single_family",
  "pricePerSqft": 132,
  "hoaFee": 31,
  "listDate": "2026-06-12T00:36:33.000000Z",
  "latitude": 30.246305,
  "longitude": -97.583195,
  "photoCount": 1,
  "photoUrl": "http://ap.rdcpix.com/7ed047f0f69ede3a6499c5571a4a6548l-m1699133238s.jpg",
  "officeName": "Keller Williams Realty",
  "url": "https://www.realtor.com/realestateandhomes-detail/4719-Castleman-Dr_Austin_TX_78725_M72118-99596",
  "scraped_at": "2026-07-15T01:15:23.964Z"
}
```

Field availability depends on what Realtor.com publishes for each listing; null fields (like `lastSoldPrice` or `agentName` when Realtor.com does not expose them for a given record) are omitted rather than sent as null.

Every property record carries these fields:

| Field | Description |
| --- | --- |
| 🏠 `address` / `city` / `state` / `zip` / `county` | Full location fields |
| 💰 `price` | List price |
| 🛏️ `beds` / 🛁 `baths` | Bedroom and bathroom counts |
| 📏 `sqft` / 🌳 `lotSqft` | Interior and lot square footage |
| 📐 `pricePerSqft` | Price per square foot |
| 🏗️ `yearBuilt` | Year built |
| 🏡 `propertyType` | Property type (e.g. single\_family, condo) |
| 🔖 `status` | Listing status |
| 💵 `hoaFee` | Monthly HOA fee |
| 📅 `listDate` | List date |
| 🏷️ `lastSoldPrice` / 🗓️ `lastSoldDate` | Populated in sold mode |
| 📍 `latitude` / `longitude` | Coordinates |
| 📷 `photoUrl` | Primary photo URL |
| 👤 `agentName` | Listing agent name |
| 🏢 `officeName` | Brokerage office name |
| 🔗 `url` | Realtor.com listing URL |
| 🆔 `propertyId` / `listingId` | Property and listing identifiers |

### 💼 Common use cases

**Real-estate lead generation**
Extract agent and brokerage names for outreach and CRM enrichment.
Build geo-targeted lists of listing agents by ZIP or metro.

**Comparable sales and CMA**
Pull sold inventory in a ZIP to value a subject property.
Combine for-sale and sold data for accurate market snapshots.

**Investor deal sourcing**
Filter by price band and beds to surface candidates across a metro.
Re-run on a schedule to catch new inventory the day it lists.

**Price and inventory monitoring**
Track new listings, status changes, and price cuts over time.
Feed dashboards with live listing counts and median prices by ZIP.

### 🚀 Getting started

1. Create a free Apify account and open the actor.
2. Enter a location (e.g. `Austin, TX` or `78704`).
3. Optionally set `maxItems`, `soldMode`, `minPrice`, `maxPrice`, or `minBeds`.
4. Click Start and let the actor page through results.
5. Download your data as JSON, CSV, or Excel, or pull it via API or MCP.

### FAQ

**Do I need a Realtor.com account or API key?**
No. The scraper requires no login, no cookies, and no API key. You only need an Apify account to run it.

**Can I scrape recently-sold homes?**
Yes. Set `soldMode` to `true` and the actor returns recently-sold homes with their last sold price and date instead of active for-sale listings.

**How much does the Realtor.com Scraper cost?**
Pay per result at $2 per 1,000 results ($0.002 per property). There is no free tier. You only pay for properties actually returned.

**How do I target a specific area?**
Pass a ZIP code (`78704`) to narrow to one area, or a city with state (`Austin, TX`) for metro-wide results.

**Is scraping Realtor.com legal?**
Scraping publicly available listing data is generally permissible, but results may include personal data (e.g. agent names) protected under laws like GDPR. Ensure you have a legitimate purpose and comply with applicable regulations.

**Can I use it inside an AI agent?**
Yes. It is exposed as an MCP tool. See below.

### Use in Claude, ChatGPT & any MCP agent

```
https://mcp.apify.com/?tools=themineworks/realtor-scraper
```

Or call it programmatically with the Apify client:

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

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('themineworks/realtor-scraper').call({
  location: 'Austin, TX',
  maxItems: 100,
  minBeds: 3,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### 🛠️ Related real estate actors

Chain Realtor with the rest of the wedge:

- **[Redfin Scraper](https://apify.com/themineworks/redfin-scraper)**: Redfin for-sale and sold listings by location.
- **[Zillow Search Scraper](https://apify.com/themineworks/zillow-search-scraper)**: Zillow for-sale listings by location.
- **[Zillow Property Details](https://apify.com/themineworks/zillow-property-details)**: full Zillow detail pages by URL or ZPID.
- **[Zillow Recently Sold](https://apify.com/themineworks/zillow-recently-sold)**: Zillow sold comps for CMA.
- **[Zillow Rental Listings](https://apify.com/themineworks/zillow-rental-listings)**: Zillow for-rent listings.
- **[99acres Scraper](https://apify.com/themineworks/99acres-scraper)**: India rent, buy, PG, and commercial listings.

Typical flow: realtor-scraper and zillow-search-scraper cover for-sale supply, zillow-recently-sold and Realtor sold mode drive comps, zillow-property-details fills in full detail pages.

Found a bug or have a feature request? Open an issue on the actor's Apify Console page or reach out through the Apify profile.

# Actor input Schema

## `location` (type: `string`):

City with state or ZIP code (e.g. "Austin, TX", "78704").

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

Maximum number of properties to scrape. First 25 lifetime are free.

## `soldMode` (type: `boolean`):

Off = for-sale listings. On = recently-sold homes with sold price and date.

## `minPrice` (type: `integer`):

Only return properties priced at or above this value.

## `maxPrice` (type: `integer`):

Only return properties priced at or below this value.

## `minBeds` (type: `integer`):

Only return properties with at least this many bedrooms.

## `proxyConfig` (type: `object`):

Apify proxy settings. US residential recommended for Realtor.com.

## Actor input object example

```json
{
  "location": "Austin, TX",
  "maxItems": 5,
  "soldMode": false,
  "proxyConfig": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `results` (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",
    "maxItems": 5,
    "proxyConfig": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/realtor-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",
    "maxItems": 5,
    "proxyConfig": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/realtor-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",
  "maxItems": 5,
  "proxyConfig": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call themineworks/realtor-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/ggQDRVqxVz0GG9uoH/builds/JiM0h47yhhDY2xQE4/openapi.json
