# Realtor Agents Scraper (`dhrumil/realtor-agents-scraper`) Actor

Get valuable insight from realtor agents data. This scraper provides you complete database of all agents from realtor.com including agent contact details and statistics. You can scrape specific area of choice to analyze as well.

- **URL**: https://apify.com/dhrumil/realtor-agents-scraper.md
- **Developed by:** [Dhrumil Bhankhar](https://apify.com/dhrumil) (community)
- **Categories:** Real estate, Automation, Lead generation
- **Stats:** 266 total users, 2 monthly users, 100.0% runs succeeded, 7 bookmarks
- **User rating**: 1.00 out of 5 stars

## Pricing

$30.00/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period. You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#rental-actors

## 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

### 🏡 What is Realtor Agents Scraper?

This Realtor Agents Scraper will enable you scrape any agent listing from [realtor.com](https://www.realtor.com/realestateagents).

You can simply take your listing url from browser and enter it into this actor. This actor will crawl through all pages of particular listing and generate dataset for you.

Listing url is something you get when you perform the search on realtor site. Example listing urls :

- https://www.realtor.com/realestateagents/new-york\_ny
- https://www.realtor.com/realestateagents/75047
- https://www.realtor.com/realestateagents/new-york\_ny/rep-buyer

### 🚪 What can this Realtor Agents Scraper do?

📈 Extract Realtor Agents data listings on Realtor

👀 This actor is not just scraper but also has monitoring capability. You can turn on monitoring mode and it will give you only newly added agenets compared to your previous scrapes.

⬇️ Download Realtor Agents data in Excel, CSV, JSON, and other formats

### 📚 How do I start scraping with this scraper?

1. Register for your free Apify account [here](https://apify.com/pricing?fpr=z2di7)
2. You don't need to provide your credit card details for free acount. Just click on "Get Started" button on above link and complete the registration only.
3. Free account comes with reasonable credits to try out this actor. This actor also comes with free trial of 3 days without any commitment/upfront charge.
4. Run this actor and verify the scraped data. Apify has huge integration possibilities. You can download the data or push the data into any 3rd party platform directly.

### 🌳 What Realtor Agent data can I extract using this tool?

| 📝                  | 📝                               |
| ------------------ | ------------------------------- |
| Address               | Rating                |
| Agent Photo           | Broker Name           |
| Broker Photo          | Description           |
| Designations          | Experience            |
| Last Listed Date      | Last Sold Date        |
| Recently Sold Stats   | Agent Type            |
| Agent Name            | Zip Codes Served      |
| Agent Title           | Office Name           |
| Office Address        | Website               |
| Description           | Agent Phone Numbers   |
| Broker Phone Numbers  | Reviews               |
| Reommendations        | Languages Spoken      |
| For Sale Listings     | Sold Listings         |
| License Number        | MS Details            |
| Served Areas          | MLS History           |
| Marketing Area Cities | Profile URL           |

### ⬇️ Input

For simple usecase, you just need to provide browser url of realtor agent search result page & that's all. You can leave other fields as they are to be sensible defaults.

#### Input example

```json
{
    "listUrls": [
        {
            "url": "https://www.realtor.com/realestateagents/27872"
        }
    ],
    "agentUrls": [
        {
            "url": "https://www.realtor.com/realestateagents/566f400b0fa41701007145a7"
        }
    ],
	"maxProfiles": 50,
  	"fullAgentDetails": false,
  	"includeAgentExtras": false,
    "monitoringMode": false,
    "addEmptyTrackerRecord" : false
}
```

You can either provide `listUrls` to search properties from or provide `agentUrls` directly to crawl.

Understading monitoring mode :

- `maxProfiles` : In case you want to limit maximum number of agent profiles to fetch from given listing url

- `monitoringMode` : This option when turned on will only scrape newly added agent listings compared to previously scraped agenets by this actor.

- `fullAgentDetails` : This option when turned on will also scrape listing information of given agent when available with realtor. This will add recommendations, reviews, for sale listing and for rent listing information. This may affect the speed of scraping considerably. Please turn it on only if you need this data.

- `includeAgentExtras` : If this option is turned on, serving areas, questions\_and\_answers and reviews of agent will be included in output.

- `addEmptyTrackerRecord` : This option when turned on will add empty record having only id of agent to Apify dataset. This helps you identify whether agent is still listed compared to your own database in incremental mode.

### ⬆️ Output

The scraped data is stored in the dataset of each run. The data can be viewed or downloaded in many popular formats, such as *JSON, CSV, Excel, XML, RSS, and HTML*.

#### Output example

The result for scraping a single agent like this:

```json
{
	"id": "5b33c9361cfa3c0013bd6ce2",
	"is_paid": false,
	"is_realtor": true,
	"fulfillment_id": "3458787",
	"display_ratings": false,
	"broker": {
		"name": " Berkshire Hathaway HomeServices PenFed Realty",
		"fulfillment_id": "954182"
	},
	"office": {
		"name": "Berkshire Hathaway HomeServices PenFed Realty Bel Air office"
	},
	"fullname": "John Fink",
	"ratings_reviews": {
		"average_rating": 5,
		"recommendations_count": 0,
		"reviews_count": 29
	},
	"listing_stats": {
		"combined_annual": {
			"min": 259900,
			"max": 570000
		},
		"for_sale": {
			"count": 3,
			"last_listing_date": "2026-03-12T17:13:03Z",
			"max": 510000,
			"min": 259900
		},
		"recently_sold_annual": {
			"count": 6
		},
		"recently_sold_listing_details": {
			"listings": [
				{
					"baths": 3,
					"beds": 4,
					"city": "Bel Air",
					"photo": "https://ap.rdcpix.com/963b032d74f3108fb49e7bb8d99d4fbdl-m4231231874rd-w100_h67.jpg",
					"state_code": "MD"
				},
				{
					"baths": 3,
					"beds": 5,
					"city": "Pequea",
					"photo": "https://ap.rdcpix.com/72ace8c99493e127d170566759ec9492l-m3596501357rd-w100_h67.jpg",
					"state_code": "PA"
				},
				{
					"baths": 4,
					"beds": 4,
					"city": "Westminster",
					"photo": "https://ap.rdcpix.com/627033667c9357f1a35dcd82e0a923d8l-m1148740430rd-w100_h67.jpg",
					"state_code": "MD"
				}
			],
			"show_additional": true
		}
	},
	"services": null,
	"url": "https://www.realtor.com/realestateagents/5b33c9361cfa3c0013bd6ce2",
	"new_url": "https://www.realtor.com/realestateagents/5b33c9361cfa3c0013bd6ce2",
	"photo": "https://ap.rdcpix.com/7d54ff7a9cfeae4d4bd97cb8d1fa3f18a-e2176932816rd-w144_h144.jpg"
}
```

Above is just high level information. For detailed information please refer to the section at bottom [Detailed Output example](#detailed-output-example)

### 🙋‍♀️ For custom solutions

In case you need some custom solution, you can contact me : <dhrumil@techvasu.com>

Or learn more about me on github : <https://github.com/dhrumil4u360>

#### Detailed Output example

The result for scraping a single agent like this:

```json
{
	"id": "6218295237682081b20518af",
	"is_paid": true,
	"is_realtor": true,
	"fulfillment_id": "4762429",
	"display_ratings": true,
	"broker": {
		"name": "Realty Plus Associates",
		"website": null,
		"fulfillment_id": "0"
	},
	"office": {
		"name": "Realty Plus Associates",
		"phones": [
			{
				"type": "office",
				"value": "(410) 914-4100"
			}
		],
		"website": "",
		"address": {
			"address_formatted_line_1": "350 Granary Rd Ste 2",
			"address_formatted_line_2": "Forest Hill , MD 21050",
			"city": "Forest Hill ",
			"postal_code": "21050",
			"state_code": "MD"
		}
	},
	"fullname": "Janelle Brubach",
	"ratings_reviews": {
		"average_rating": 5,
		"reviews_count": 7,
		"recommendations_count": 0
	},
	"listing_stats": {
		"combined_annual": {
			"max": 669900,
			"min": 149499
		},
		"for_sale": {
			"count": 6,
			"last_listing_date": "2026-02-07T15:43:43Z",
			"min": 149499,
			"max": 669900
		},
		"recently_sold": {
			"count": 27,
			"last_sold_date": "2026-03-10",
			"min": 88500,
			"max": 624000
		},
		"recently_sold_annual": {
			"count": 18
		},
		"recently_sold_listing_details": {
			"listings": [
				{
					"baths": 1,
					"beds": 2,
					"city": "Dundalk",
					"photo": "https://ap.rdcpix.com/7b3078e0a443915e4b309596777373b4l-m701230356rd-w100_h67.jpg",
					"state_code": "MD"
				},
				{
					"baths": 2,
					"beds": 3,
					"city": "Baltimore",
					"photo": "https://ap.rdcpix.com/088324cd14e41ebeedbdcc6fd2cd10f2l-m100483803rd-w100_h67.jpg",
					"state_code": "MD"
				},
				{
					"baths": 2,
					"beds": 3,
					"city": "Essex",
					"photo": "https://ap.rdcpix.com/48f3b458eb88eb379eb8257bb9d95404l-m1934671361rd-w100_h67.jpg",
					"state_code": "MD"
				}
			],
			"show_additional": true
		}
	},
	"services": {
		"buyer": [
			"Personalized neighborhood guidance",
			"Access to market insights",
			"Early access to new listings",
			"Persuasive offer proposals",
			"Home inspection support",
			"Pre-approval assistance",
			"Lender referrals",
			"Other professional network referrals"
		],
		"seller": [
			"Open houses",
			"Professional photography",
			"Home staging",
			"Postcards and flyers",
			"Virtual tour",
			"Comparative market analysis"
		]
	},
	"url": "https://www.realtor.com/realestateagents/6218295237682081b20518af",
	"new_url": "https://www.realtor.com/realestateagents/6218295237682081b20518af",
	"photo": "https://ap.rdcpix.com/a4095da06a732ab2de3f1c4e7d2bd06cr-c1582475803rd-w144_h144.jpg",
	"specializations": [
		"Buyer's agent",
		"Seller's agent"
	],
	"experience_start_date": "June 2006",
	"designations": [],
	"avatar": {
		"initials": "JB",
		"url": "https://ap.rdcpix.com/a4095da06a732ab2de3f1c4e7d2bd06cr-c1582475803rd-w144_h144.jpg"
	},
	"bio": "Janelle has a strong integrity-filled work ethic and determination to approach each real estate transaction with unwavering commitment. As a previous teacher turned Realtor®, she brings a unique skill set to the table. ",
	"website": "https://transformationteamhomes.com/",
	"intent_type": [
		"BUYER",
		"SELLER"
	],
	"languages": [],
	"experience": "4 years 1 month of experience",
	"mls": [
		{
			"mls_set": "A-PHPA-3335058",
			"agent_id": "3335058",
			"id": "PHPA",
			"primary": true,
			"license_number": "5010170",
			"inactivation_date": null,
			"status": "A"
		}
	],
	"phones": [
		{
			"type": "mobile",
			"value": "(410) 499-3175"
		},
		{
			"type": "office",
			"value": "(410) 914-4100"
		}
	],
	"license_number": "5010170",
	"license_state": "PA",
	"is_empty_profile": false,
	"social_media": {
		"facebook": {
			"href": "https://www.facebook.com/JanelleBrubachRealtor"
		},
		"instagram": null,
		"linkedin": null,
		"tiktok": null,
		"x": {
			"href": "https://twitter.com/JanelleBrubach"
		},
		"youtube": null
	},
	"about_video": null,
	"questions_and_answers": [
		{
			"question_text": "What’s the top reason to hire you?",
			"answer_text": "I have 15 years of teaching experience that has led me to approach this business with a different mindset. "
		},
		{
			"question_text": "What makes you stand apart from other agents?",
			"answer_text": "I pride myself on honesty and integrity!  "
		}
	],
	"__typename": "AgentBranding",
	"recentlySold": {
		"count": 27,
		"last_sold_date": "2026-03-10",
		"min": 88500,
		"max": 624000
	},
	"date_last_sold_property": "2026-03-10",
	"reviews": [
		{
			"source_id": "RMA",
			"responsiveness": null,
			"market_expertise": null,
			"comment": "My experience with this young lady was nothing but excellent. She has demonstrated to me that she care about her clients. And she's there when you need her and she goes on and above the Call of Duty to get things right for you",
			"display_name": "Mark Solomon",
			"location": "Baltimore, MD",
			"year": null,
			"negotiation_skills": null,
			"rating": 5,
			"professionalism_communication": null,
			"describe_yourself": "BUYER",
			"started_timestamp": "2023-12-18T14:44:50.259+00:00",
			"review_date_display": "December 18, 2023",
			"reply": null
		},
		{
			"source_id": "RMA",
			"responsiveness": null,
			"market_expertise": null,
			"comment": "Awesome experience with Janelle. She is very professional, knowledgeable and she's a very hard worker. Thanks for getting us our forever home.",
			"display_name": "Ernest Brawner",
			"location": "Bel Air South, MD",
			"year": null,
			"negotiation_skills": null,
			"rating": 5,
			"professionalism_communication": null,
			"describe_yourself": "SELLER",
			"started_timestamp": "2023-02-13T05:07:44.916+00:00",
			"review_date_display": "February 13, 2023",
			"reply": null
		}
	]
}
```

# Actor input Schema

## `maxProfiles` (type: `integer`):

Limit the number of properties to scrape

## `monitoringMode` (type: `boolean`):

Enable if this run is part of a recurring monitoring setup

## `fullAgentDetails` (type: `boolean`):

If true, each agent page will be opened and detailed data will be collected

## `addEmptyTrackerRecord` (type: `boolean`):

Add an empty record even if no properties were found, useful for monitoring

## `proxy` (type: `object`):

Select proxies to be used by your crawler.

## `agentUrls` (type: `array`):

List of individual agent detail page URLs to scrape

## `listUrls` (type: `array`):

List of URLs for scraping agent directory page

## `includeAgentExtras` (type: `boolean`):

If false, review, served\_areas, and zips will be removed from the output data.

## Actor input object example

```json
{
  "maxProfiles": 99999,
  "monitoringMode": false,
  "fullAgentDetails": false,
  "addEmptyTrackerRecord": false,
  "proxy": {
    "useApifyProxy": true
  },
  "agentUrls": [],
  "listUrls": [
    {
      "url": "https://www.realtor.com/realestateagents/27872"
    }
  ],
  "includeAgentExtras": false
}
```

# 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 = {
    "proxy": {
        "useApifyProxy": true
    },
    "agentUrls": [],
    "listUrls": [
        {
            "url": "https://www.realtor.com/realestateagents/27872"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("dhrumil/realtor-agents-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 = {
    "proxy": { "useApifyProxy": True },
    "agentUrls": [],
    "listUrls": [{ "url": "https://www.realtor.com/realestateagents/27872" }],
}

# Run the Actor and wait for it to finish
run = client.actor("dhrumil/realtor-agents-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 '{
  "proxy": {
    "useApifyProxy": true
  },
  "agentUrls": [],
  "listUrls": [
    {
      "url": "https://www.realtor.com/realestateagents/27872"
    }
  ]
}' |
apify call dhrumil/realtor-agents-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dhrumil/realtor-agents-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/r34qrcP4yhT026j0E/builds/kscDd2CMwAzANtmtq/openapi.json
