# Real Estate Agent & Agency Lead Scraper - Realtor Emails (`benthepythondev/real-estate-agent-lead-scraper`) Actor

Find real-estate agents, brokers and agencies by city and get their contact emails, phones and websites. Built on Google Maps + website/Impressum email enrichment, with agent/agency classification and lead scoring. Pay per lead; premium only when an email is found.

- **URL**: https://apify.com/benthepythondev/real-estate-agent-lead-scraper.md
- **Developed by:** [ben](https://apify.com/benthepythondev) (community)
- **Categories:** Real estate, Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## 🏡 Real Estate Agent & Agency Lead Scraper

Build a targeted list of **real-estate agents, brokers and agencies** — with their **contact emails**, phone numbers and websites — for any city. Search Google Maps by location (or paste a list of agency websites) and this Actor returns one clean, scored lead per agent/agency, with the email pulled from the agency's website, contact and **Impressum** pages.

Perfect for anyone who sells to the real-estate industry — CRM and SaaS vendors, mortgage and title services, photographers, stagers, marketers and recruiters. Export to JSON/CSV/Excel, run on a schedule, call via API, or connect to Make, Zapier or n8n.

### 🔎 What is the Real Estate Agent & Agency Lead Scraper?

Finding realtors is easy; getting their *email* is the hard part. This Actor does both: it finds agents and agencies on Google Maps for your target city, then visits each one's website to pull a real, scored contact email — and tells you whether each result is an **agency/brokerage** or an **individual agent**. The German Impressum requirement makes hit rates especially high across the DACH market.

#### What data does it extract?

- **Agent / agency name, address and phone**
- **Website and clean domain**
- **Listing type** — agency/brokerage vs individual agent (auto-classified)
- **Primary contact email** with a confidence score (0–100) and its source (website, Impressum, contact page)
- **All emails found**, de-duplicated and ranked
- **Rating and review count** from Google Maps
- **Lead score (0–100)** combining contact completeness, reviews and rating
- **Google Maps URL** and the original search query/location

### ⬇️ Input

| Field | Type | Description |
|-------|------|-------------|
| `mode` | string | `search` (Google Maps by keyword + location) or `websites` (enrich your own list). Required. |
| `query` | string | What to search, e.g. `real estate agents`, `Immobilienmakler`, `realtor`. Default `real estate agents`. |
| `location` | string | City or region, e.g. `Austin, TX`, `Berlin, Germany`. |
| `maxResults` | integer | Max leads to scrape and enrich (1–200). Default `10`. |
| `websites` | array | Agency websites/domains to enrich. Used in `websites` mode. |
| `requireEmail` | boolean | Only return leads where an email was found. Default `false`. |
| `enableSmtpVerification` | boolean | SMTP-verify role-based guesses. Default `true`. |

#### Example input

```json
{
  "mode": "search",
  "query": "real estate agents",
  "location": "Miami, FL",
  "maxResults": 100,
  "requireEmail": true
}
````

### ⬆️ Output

One record per agent/agency:

```json
{
  "name": "Sunshine Realty Group",
  "website": "https://www.sunshinerealty.com",
  "domain": "sunshinerealty.com",
  "phone": "+1 305-555-0142",
  "address": "120 Biscayne Blvd, Miami, FL 33132",
  "rating": 4.9,
  "review_count": 212,
  "categories": ["Real estate agency"],
  "listing_type": "agency",
  "primary_email": "info@sunshinerealty.com",
  "email_confidence": 90,
  "email_source": "website",
  "emails": [
    { "email": "info@sunshinerealty.com", "confidence": 90, "source": "website" }
  ],
  "has_email": true,
  "lead_score": 96,
  "google_maps_url": "https://www.google.com/maps/place/...",
  "search_query": "real estate agents",
  "search_location": "Miami, FL"
}
```

### 💡 Use cases

- 🏢 **Sell to realtors** — CRM/SaaS, mortgage, title, insurance and marketing vendors building targeted agent lists.
- 📸 **Real-estate services** — photographers, stagers, drone/video and copywriting services reaching local agencies.
- 🧑‍💼 **Recruiting** — brokerages and teams sourcing agents to recruit, by city.
- 🌍 **DACH coverage** — high email hit rates on German/Austrian/Swiss Makler via legally-published Impressum addresses.

### ❓ FAQ

**Do I need an API key or login?** No — a query + location is enough.

**Where do the emails come from?** From each agency's own website — homepage, contact/Kontakt and Impressum pages. If none are public, common business inboxes (info@, kontakt@, sales@…) are generated and validated with MX (and SMTP where allowed).

**What does `listing_type` mean?** A best-effort label of whether the result is an agency/brokerage or an individual agent, based on the name and Google Maps categories.

**How accurate are the emails?** Published addresses are real and high-confidence; role-based guesses are MX-validated. Filter by `email_confidence` for only the surest ones.

**Can I get only leads with an email?** Yes — set `requireEmail` to `true`.

**Does it work worldwide?** Yes, anywhere Google Maps covers; DACH hit rates are exceptionally high thanks to the Impressum.

**How does pricing work?** Pay per lead, plus a small premium **only** when a contact email is found. No subscription.

**Can I schedule it?** Yes — recurring runs + API/Make/Zapier/n8n.

**Is it legal?** It collects publicly available business contact data. Use it for legitimate B2B outreach and comply with GDPR/CAN-SPAM and local law.

### 🔗 You might also like

- [Google Maps Email Scraper](https://apify.com/benthepythondev/google-maps-email-scraper) — the same engine for any business niche.
- [Website Contact & Email Extractor](https://apify.com/benthepythondev/website-contact-extractor) — enrich any list of websites with emails, phones and socials.
- [Kleinanzeigen Immobilien Scraper](https://apify.com/benthepythondev/kleinanzeigen-immobilien-scraper) — German property listings.
- [OnTheMarket Scraper](https://apify.com/benthepythondev/onthemarket-scraper) — UK property listings.

***

**Keywords:** real estate agent scraper, realtor email scraper, real estate leads, realtor leads, real estate agency scraper, immobilienmakler scraper, estate agent emails, real estate lead generation, broker email list, realtor contact data, real estate prospecting, agent email finder, google maps real estate, proptech leads, real estate b2b data, makler leads dach

# Actor input Schema

## `mode` (type: `string`):

Search Google Maps for agents/agencies, or enrich a list of agency websites you already have.

## `query` (type: `string`):

What to search for, e.g. 'real estate agents', 'real estate agency', 'Immobilienmakler', 'realtor'. Used in 'search' mode.

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

City or region, e.g. 'Austin, TX', 'Berlin, Germany', 'London, UK'. Used in 'search' mode.

## `maxResults` (type: `integer`):

Maximum number of agent/agency leads to scrape and enrich (1-200).

## `websites` (type: `array`):

List of agency/agent websites or domains to find emails for. Used in 'websites' mode.

## `requireEmail` (type: `boolean`):

If enabled, leads where no contact email could be found are skipped (you are not charged the email fee for them).

## `enableSmtpVerification` (type: `boolean`):

Verify role-based guesses (info@, sales@...) over SMTP when possible. Published emails are always MX-validated. Often blocked in the cloud; disable for speed.

## `smtpTimeout` (type: `integer`):

Per-server SMTP timeout.

## Actor input object example

```json
{
  "mode": "search",
  "query": "real estate agents",
  "location": "Austin, TX",
  "maxResults": 10,
  "requireEmail": false,
  "enableSmtpVerification": true,
  "smtpTimeout": 5
}
```

# 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 = {
    "query": "real estate agents",
    "location": "Austin, TX"
};

// Run the Actor and wait for it to finish
const run = await client.actor("benthepythondev/real-estate-agent-lead-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 = {
    "query": "real estate agents",
    "location": "Austin, TX",
}

# Run the Actor and wait for it to finish
run = client.actor("benthepythondev/real-estate-agent-lead-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 '{
  "query": "real estate agents",
  "location": "Austin, TX"
}' |
apify call benthepythondev/real-estate-agent-lead-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Real Estate Agent & Agency Lead Scraper - Realtor Emails",
        "description": "Find real-estate agents, brokers and agencies by city and get their contact emails, phones and websites. Built on Google Maps + website/Impressum email enrichment, with agent/agency classification and lead scoring. Pay per lead; premium only when an email is found.",
        "version": "1.0",
        "x-build-id": "rT6rB5l5wTLbbqQVa"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/benthepythondev~real-estate-agent-lead-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-benthepythondev-real-estate-agent-lead-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/benthepythondev~real-estate-agent-lead-scraper/runs": {
            "post": {
                "operationId": "runs-sync-benthepythondev-real-estate-agent-lead-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/benthepythondev~real-estate-agent-lead-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-benthepythondev-real-estate-agent-lead-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": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "websites"
                        ],
                        "type": "string",
                        "description": "Search Google Maps for agents/agencies, or enrich a list of agency websites you already have.",
                        "default": "search"
                    },
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "What to search for, e.g. 'real estate agents', 'real estate agency', 'Immobilienmakler', 'realtor'. Used in 'search' mode.",
                        "default": "real estate agents"
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City or region, e.g. 'Austin, TX', 'Berlin, Germany', 'London, UK'. Used in 'search' mode.",
                        "default": "Austin, TX"
                    },
                    "maxResults": {
                        "title": "Maximum results",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Maximum number of agent/agency leads to scrape and enrich (1-200).",
                        "default": 10
                    },
                    "websites": {
                        "title": "Agency websites to enrich",
                        "type": "array",
                        "description": "List of agency/agent websites or domains to find emails for. Used in 'websites' mode.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "requireEmail": {
                        "title": "Only return leads with an email",
                        "type": "boolean",
                        "description": "If enabled, leads where no contact email could be found are skipped (you are not charged the email fee for them).",
                        "default": false
                    },
                    "enableSmtpVerification": {
                        "title": "SMTP verification",
                        "type": "boolean",
                        "description": "Verify role-based guesses (info@, sales@...) over SMTP when possible. Published emails are always MX-validated. Often blocked in the cloud; disable for speed.",
                        "default": true
                    },
                    "smtpTimeout": {
                        "title": "SMTP timeout (seconds)",
                        "minimum": 2,
                        "maximum": 15,
                        "type": "integer",
                        "description": "Per-server SMTP timeout.",
                        "default": 5
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
