# Realtor.com Agent Scraper (`scraptivo/realtor-agent-scraper`) Actor

Collects real estate agents from Realtor.com by city or ZIP code. Returns names, ratings, broker info, and optional profile details and reviews.

- **URL**: https://apify.com/scraptivo/realtor-agent-scraper.md
- **Developed by:** [Scraptivo](https://apify.com/scraptivo) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.30 / 1,000 results

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

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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 Agent Scraper** collects real estate agents from [Realtor.com](https://www.realtor.com) and turns them into structured data for lead generation, CRM enrichment, and market research. Provide a city or ZIP code, run the Actor, and export names, ratings, broker, office, and profile URLs to JSON, CSV, Excel, or your preferred integration. Use it to build agent lists, compare ratings, and automate recurring collection. Pricing starts at **$2.00 per 1,000 agents**, with optional full profiles at **$3.00 per 1,000** and reviews at **$2.00 per 1,000**.

### What can you automate with Realtor.com Agent Scraper?

- **Build agent lead lists** — Search a city or ZIP and export names, ratings, broker affiliation, and profile URLs.
- **Filter by agent type** — Target buyer agents, seller agents, or both.
- **Enrich selected profiles** — Turn on agent details for bio, phones, website, office address, licenses, specializations, and social links.
- **Collect reviews** — Turn on agent reviews to attach testimonials (this also collects the full profile).
- **Compare local markets** — Run the same search across cities and keep ratings, review counts, and office names in one dataset.
- **Schedule recurring snapshots** — Re-run a city list weekly and merge on `profileId`.

### Who is this scraper for?

| Team | Workflow |
|---|---|
| Lead-generation teams | Building outbound lists of agents by city or ZIP with ratings and broker names. |
| CRM and enrichment operators | Appending phones, licenses, and social links to existing agent records. |
| Market researchers | Measuring agent density, ratings, and broker share in a market. |
| Partnership teams | Shortlisting highly rated agents before outreach. |

### What data can you collect from Realtor.com?

| Data group | Example fields | How it helps |
|---|---|---|
| Agent identity | `fullName`, `profileUrl`, `avatarUrl`, `profileId`, `fulfillmentId` | Identify and deduplicate agents. |
| Reputation | `averageRating`, `reviewsCount`, `combinedReviewsCount` | Rank agents before outreach. |
| Broker and office | `brokerName`, `officeName`, `locationLabel` | See affiliation and market. |
| Search context | `searchQuery`, `searchType` | Know whether the row came from a city or ZIP search. |
| Profile details | Bio, website, phones, office address, license number/state, specializations, served areas, social links, experience | Appear when **Get agent details** is enabled. |
| Reviews | Review text, ratings, and related feedback | Appear when **Get agent reviews** is enabled. |

Listing-level name, rating, broker, and profile URL are returned for every agent. Bio, contact, license, and social fields appear when details are enabled. Reviews appear when reviews are enabled; that toggle also collects the full profile.

### How to use Realtor.com Agent Scraper

1. Open the [Realtor.com Agent Scraper](https://apify.com/scraptivo/realtor-agent-scraper) on Apify.
2. Enter one or more cities such as `Austin`, or US ZIP codes such as `78717`.
3. Optionally set agent type, a `maxItems` limit, and the details or reviews toggles.
4. Run the Actor and wait for agent records to appear in the dataset.
5. Export JSON, CSV, or Excel, or connect the dataset to your workflow.

```json
{
    "cities": ["Austin"],
    "maxItems": 3,
    "getAgentDetails": false,
    "getAgentReviews": false,
    "agentType": "both",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    }
}
```

### Example workflow

#### Build a weekly Austin buyer-agent list

1. Schedule a Monday run with `cities` = `["Austin"]` and `agentType` = `buyer`.
2. Keep details off for a cheap name-and-rating snapshot, then enable **Get agent details** on a shortlist run when you need phones and licenses.
3. Send new records to a CRM or Google Sheets through a webhook.
4. Deduplicate user-side against the stable `profileId` field.

### Automate and integrate your results

- **Schedules** — Agent rosters change slowly. Run **weekly** for most markets, or **monthly** for a broad city list.
- **Webhooks** — Push completed datasets into Sheets, Slack, or a CRM.
- **Exports and API** — Download from the Apify Console or start a run from the API:

```shell
curl "https://api.apify.com/v2/acts/scraptivo~realtor-agent-scraper/runs?token=YOUR-APIFY-TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "cities": ["Austin"],
    "maxItems": 20,
    "agentType": "both",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    }
  }'
```

- **Deduplication** — The Actor appends results on every run. Use `profileId` as the stable key when merging datasets.

### Input reference

| Field | Type | Required | Default | What it controls |
|---|---|---:|---|---|
| `cities` | Array of strings | No | — | City names. The first autocomplete match is used for each city. |
| `zipCodes` | Array of strings | No | — | US ZIP codes. The first autocomplete match is used for each ZIP. |
| `getAgentDetails` | Boolean | No | `false` | Collect bio, contact, office, licenses, specializations, and social links. Charges `detailed-info`. |
| `getAgentReviews` | Boolean | No | `false` | Collect reviews and testimonials. Implies `getAgentDetails`. Charges `agent-reviews`. |
| `agentType` | String | No | `both` | `buyer`, `seller`, or `both`. |
| `maxItems` | Integer | No | `0` | Maximum agents across all locations (`0` = unlimited). |
| `proxyConfiguration` | Proxy object | No | Apify proxy, RESIDENTIAL | Residential proxies are recommended. |

Provide at least one city or ZIP code for a useful run.

#### Does Get agent reviews also collect the profile?

Yes. Enabling `getAgentReviews` implies `getAgentDetails`, so you get the full profile plus reviews. You are charged for both the detail and review events.

### Output example

Each dataset item is one agent. A listing-level record looks like this:

```json
{
    "fullName": "Andra Cortez Jackson Realtor Austin TX",
    "profileUrl": "https://www.realtor.com/realestateagents/56a649a10fa417010073f11b",
    "brokerName": "Team West Real Estate - Broker",
    "officeName": "Team West Real Estate",
    "averageRating": 5,
    "reviewsCount": 8,
    "combinedReviewsCount": 70,
    "locationLabel": "Austin, TX",
    "searchQuery": "Austin",
    "searchType": "city",
    "profileId": "56a649a10fa417010073f11b"
}
```

When details are enabled, the same row can also include bio, website, phones, license number, specializations, served areas, social links, and office address.

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

The Actor uses pay-per-event pricing plus a small Actor-start event ($0.00005 per start, scaled by memory):

- **$2.00 / 1,000 agents** — a `dataset-item` event for every agent written to the dataset.
- **$3.00 / 1,000 profiles** — a `detailed-info` event when **Get agent details** is enabled.
- **$2.00 / 1,000 reviews** — an `agent-reviews` event when **Get agent reviews** is enabled.

A listing-only run of 1,000 agents costs **$2.00**. Adding full profiles on those agents costs **$5.00** in event charges. Compute units consumed are deducted from your Apify plan.

### Reliability and responsible use

- **Proxy requirement** — Residential proxies are recommended. The default input uses the Apify RESIDENTIAL group.
- **Conditional fields** — Bio, phones, licenses, social links, and reviews appear only when the matching toggle is enabled. Realtor.com also leaves some fields empty.
- **Autocomplete** — Each city or ZIP uses the first autocomplete match. Check `locationLabel` if a search resolved to a different place than you expected.
- **Public listings** — The Actor collects publicly visible agent directory and profile data.
- **Responsible use** — Only use the data in ways that comply with Realtor.com terms and applicable law.

### Frequently asked questions

#### Can I scrape Realtor.com agents by city or ZIP code?

Yes. Add city names in `cities` or US ZIP codes in `zipCodes`. You can use both in the same run. `maxItems` applies across all locations.

#### Can I schedule Realtor.com Agent Scraper to run automatically?

Yes. Use the **Scheduler** tab in Apify Console. Weekly works for most lead-list refreshes.

#### What counts as one result?

Each agent row is one `dataset-item` event at **$2.00 per 1,000**. Enabling details adds a `detailed-info` event per enriched agent. Enabling reviews adds `agent-reviews` events and also collects the profile.

#### Why are some fields empty?

Phones, bio, licenses, and social links are collected only when **Get agent details** is enabled. Reviews appear only when **Get agent reviews** is enabled. Realtor.com also omits contact fields on some directory cards.

#### How do I avoid duplicate records?

The Actor does not deduplicate across runs. Use `profileId` as the stable key. Set `maxItems` to cap a run.

#### Do I need a proxy?

Residential proxies are recommended and are the default. If a run returns unusually few agents, confirm the proxy group is RESIDENTIAL.

### Related Scraptivo automations

- [Realtor Scraper](https://apify.com/scraptivo/realtor-scraper) — property listings from Realtor.com.
- [Zillow Agents](https://apify.com/scraptivo/zillow-agents) — agent records from Zillow.
- [Zillow Agents Vault](https://apify.com/scraptivo/zillow-agents-vault) — extended Zillow agent collection.
- [Apartments.com Scraper](https://apify.com/scraptivo/apartments-scraper) — rental listings from Apartments.com.

### Support and custom workflows

Need a different field, source, or delivery workflow? Contact Scraptivo at scraptivo@gmail.com. Include the Actor name, sample URL, required fields, and expected volume so we can assess the request.

# Actor input Schema

## `cities` (type: `array`):

City names to search (e.g. Austin, Dallas). The first autocomplete match is used for each city.

## `zipCodes` (type: `array`):

US ZIP codes to search for agents (e.g. 78717). The first autocomplete match is used for each ZIP.

## `getAgentDetails` (type: `boolean`):

Fetch the full agent profile (bio, contact, office, licenses, social links, etc.) for each agent.

## `getAgentReviews` (type: `boolean`):

Fetch all reviews and testimonials for each agent. Implies getAgentDetails.

## `agentType` (type: `string`):

Filter agents by whether they help buyers, sellers, or both.

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

Maximum number of agents to scrape across all locations (0 = unlimited).

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

Proxy settings for anti-bot protection. Residential proxies are recommended.

## Actor input object example

```json
{
  "cities": [
    "Austin"
  ],
  "zipCodes": [],
  "getAgentDetails": false,
  "getAgentReviews": false,
  "agentType": "both",
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `runStats` (type: `string`):

No description

## `input` (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 = {
    "cities": [
        "Austin"
    ],
    "zipCodes": [],
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraptivo/realtor-agent-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 = {
    "cities": ["Austin"],
    "zipCodes": [],
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

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

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

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

```

## CLI example

```bash
echo '{
  "cities": [
    "Austin"
  ],
  "zipCodes": [],
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call scraptivo/realtor-agent-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scraptivo/realtor-agent-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/aKmcV3n7lDorXIVcZ/builds/JKyp00kYomfe3HJEo/openapi.json
