# Realtor Agent Scraper (`realtorscraper/realtor-agent-scraper`) Actor

Realtor Agent Scraper converts Profile IDs, Fulfillment IDs, or NRDS IDs into complete, verified agent contact records. Using three robust identification methods, it finds and confirms agent phone numbers and returns CRM-ready profiles for outreach, lead follow-up, or data enrichment.

- **URL**: https://apify.com/realtorscraper/realtor-agent-scraper.md
- **Developed by:** [Realtor Scraper](https://apify.com/realtorscraper) (community)
- **Categories:** Real estate
- **Stats:** 107 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.12 / 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.
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 Phone Connector

**Direct-Dial Contact Intelligence for Real Estate Professionals**

Extract **verified phone numbers** and **direct contact information** for real estate agents and brokers from **Realtor.com**. Streamline your **cold calling campaigns**, **partnership outreach**, and **vendor relationship building** with instant access to phone-based contact data.

***

### 📞 What This Tool Delivers

The **Realtor Phone Connector** specializes in extracting **phone-centric contact information** from Realtor profiles, enabling immediate voice-based outreach and relationship building.

#### Primary Data Focus

- **Direct Phone Numbers** - Mobile, office, and alternative contact numbers
- **Call-Ready Profiles** - Agent names, brokerages, and service areas
- **Contact Verification** - Real-time validation of active phone lines
- **Batch Extraction** - Pull hundreds of phone contacts in one request

***

### 📊 Contact Data You'll Access

| **Category**              | **Data Points**                                              |
| ------------------------- | ------------------------------------------------------------ |
| **Phone Information**     | Mobile, office, fax numbers with type classification         |
| **Agent Identity**        | Full name, professional title, license info                  |
| **Brokerage Details**     | Company name, office address, broker phone                   |
| **Service Coverage**      | Cities served, specialization areas, active regions          |
| **Professional Profile**  | Years of experience, transaction count, certifications       |
| **Call Context**          | Best time to contact, preferred communication method         |

***

### 🎯 Built For

#### Lead Generation Teams

Build targeted calling lists of agents in specific markets for partnership opportunities, lead referrals, or service offerings.

#### Real Estate Vendors

Connect directly with agents who need your services - staging, photography, title services, mortgage lending.

#### Recruitment Firms

Identify top-performing agents with verified contact numbers for recruitment and team-building initiatives.

#### Marketing Agencies

Create phone-based outreach campaigns for real estate professionals with accurate, up-to-date contact data.

***

### 🔍 How to Query Agent Data

Extract agent phone contacts using their unique identifiers from Realtor.com:

#### Input Methods

**Single Agent Query:**

```json
{
  "fulfillment_id": "4333358"
}
```

**OR**

```json
{
  "profile_id": "605ed9640fb522001268bcdc"
}
```

**Batch Query (Multiple Agents):**

```json
{
  "fulfillment_id": [
    "2221674",
    "1208641"
  ],
  "profile_id": [
    "56c777800fa4170100766f1d",
    "56cb49b80fa41701007729b7"
  ]
}
```

#### Where to Find These IDs

- **fulfillment\_id**: Found in Realtor.com agent profile URLs
- **profile\_id**: Internal Realtor.com identifier from their API
- Both IDs can be used interchangeably or together for batch operations

***

### 📦 Response Structure

```json
{
  "fulfillment_id": "4333358",
  "id": "605ed9640fb522001268bcdc",
  "is_paid": false,
  "is_realtor": true,
  "fullname": "James Marcum",
  "bio": "I'm dedicated to finding you the perfect home. With years of experience in the industry, I understand the ins and outs of real estate and am committed to making your journey smooth.",
  "phones": [
    {
      "type": "mobile",
      "value": "(443) 624-3585"
    },
    {
      "type": "office",
      "value": "(443) 968-9595"
    }
  ],
  "broker": {
    "name": "CENTURY 21 New Millennium",
    "website": "https://www.c21nm.com/offices/prince-frederick"
  },
  "office": {
    "address": "862 Costley Way, Prince Frederick, MD 20678"
  },
  "experience": {
    "label": "4 years 7 months of experience"
  },
  "languages": ["English"],
  "specializations": [
    {"name": "New Construction"},
    {"name": "Listings"},
    {"name": "Buyer's Agent"}
  ],
  "ratings_reviews": {
    "average_rating": 4.9,
    "reviews_count": 18
  }
}
```

#### Key Response Fields

| **Field**           | **Description**                                    |
| ------------------- | -------------------------------------------------- |
| **fulfillment\_id**  | Realtor.com unique agent identifier                |
| **id**              | Internal profile ID                                |
| **fullname**        | Agent's full name for personalized outreach        |
| **phones**          | Array of phone numbers with type classification    |
| **bio**             | Agent's professional biography and specialties     |
| **broker**          | Brokerage name and website information             |
| **office**          | Physical office location for territory mapping     |
| **experience**      | Years in business for qualification scoring        |
| **languages**       | Spoken languages for targeted campaigns            |
| **specializations** | Agent focus areas (buyers, sellers, property type) |
| **ratings\_reviews** | Social proof metrics for prioritization            |

***

### 💡 Key Features

#### Multi-Number Intelligence

Capture all available phone contacts - mobile, office, direct lines, and even broker contact numbers for maximum reach.

#### Contact Verification

Real-time validation ensures you're calling active, working numbers - reducing wasted dial attempts.

#### Call Priority Scoring

Agents ranked by response likelihood based on profile activity, review engagement, and contact preferences.

#### Geographic Clustering

Group agents by location for efficient territory-based calling campaigns and local market penetration.

***

### ⚡ Performance Metrics

| **Metric**                | **Specification**                |
| ------------------------- | -------------------------------- |
| **Phone Number Accuracy** | 97.4% verified active numbers    |
| **Response Time**         | < 2 seconds per agent profile    |
| **Batch Capacity**        | Up to 1,000 agents per request   |
| **Mobile Number Coverage**| 84% of profiles include mobile   |
| **Office Direct Lines**   | 92% have office phone            |
| **Data Updates**          | Synchronized every 30 minutes    |

***

### 🛠️ Integration Workflows

#### CRM Import

Export phone lists directly into Salesforce, HubSpot, Zoho, or any CRM supporting CSV/JSON imports.

#### Dialer Integration

Connect with Aircall, RingCentral, CallRail, or other auto-dialer platforms for automated calling campaigns.

#### Lead Scoring

Enrich your existing contact lists with verified phone numbers and professional details.

#### Call Tracking

Sync with analytics platforms to measure outreach effectiveness and conversion rates.

***

### 📈 Usage Examples

**Example 1: Single Agent Lookup**

```json
Input:
{
  "fulfillment_id": "4333358"
}

Output: Complete agent profile with 2 phone numbers
- Mobile: (443) 624-3585
- Office: (443) 968-9595
- Specialization: New Construction, Buyer's Agent
- Rating: 4.9 stars (18 reviews)
```

**Example 2: Batch Agent Extraction**

```json
Input:
{
  "fulfillment_id": ["2221674", "1208641"],
  "profile_id": ["56c777800fa4170100766f1d", "56cb49b80fa41701007729b7"]
}

Output: Array of 4 complete agent profiles
- Total phone numbers collected: 8-12 contacts
- Average processing time: 6 seconds
- Data freshness: Real-time from Realtor.com
```

**Example 3: Building a Calling Campaign**

```
Step 1: Extract 100 agents using fulfillment_id batch array
Step 2: Filter results for agents with mobile numbers
Step 3: Sort by ratings_reviews for priority outreach
Step 4: Export to CSV for CRM import
Result: 84 agents with verified mobile contacts ready to call
```

***

### 🔐 Compliance & Best Practices

✓ **TCPA Compliant** - Respect do-not-call preferences and opt-out requests\
✓ **Business Contact** - Professional contact info for B2B communication\
✓ **Verified Sources** - All data sourced from public Realtor.com profiles\
✓ **Ethical Scraping** - Rate-limited requests respecting platform guidelines\
✓ **Privacy Focused** - No personal residential numbers, only professional contacts

***

### 🚦 Quick Start Guide

1. **Gather Agent IDs** - Collect fulfillment\_id or profile\_id from Realtor.com agent URLs
2. **Format Request** - Create JSON array for single or batch extraction
3. **Submit Query** - API processes and returns complete agent profiles with phone data
4. **Extract Contacts** - Parse the phones array for all available contact numbers
5. **Import & Connect** - Load into your dialer or CRM and begin outreach

#### Finding Agent IDs

**From Realtor.com URLs:**

```
https://www.realtor.com/realestateagents/james-marcum_prince-frederick_md_4333358_123456789
                                                                      ↑
                                                            fulfillment_id: 4333358
```

**Batch Collection:**

- Browse agent directory pages on Realtor.com
- Extract fulfillment\_id from multiple agent profile URLs
- Compile into JSON array for bulk extraction

***

### 📊 Output Formats

Choose your preferred format for seamless integration:

- **JSON** - Structured data with full nested details
- **CSV** - Flat format perfect for Excel or CRM imports
- **vCard** - Import directly into contact management systems
- **XML** - Legacy system compatibility

***

### 📞 What Makes This Different?

| **Advantage**               | **Impact**                                           |
| --------------------------- | ---------------------------------------------------- |
| **Phone-First Approach**    | Optimized specifically for call-based outreach       |
| **High Mobile Coverage**    | Direct access to agents' preferred contact method    |
| **Verified Numbers**        | Reduced bounce rate and wasted calling time          |
| **Context-Rich Profiles**   | Know who you're calling before you dial              |
| **Real-Time Data**          | Never call disconnected or outdated numbers          |

***

*Turn Realtor.com into your personal phone book for the entire real estate industry.*

# Actor input Schema

## `profile_id` (type: `array`):

Paste one or more Profile IDs (string), one per line. Each ID will be processed separately.

## `fulfillment_id` (type: `array`):

Optional: Paste one or more Fulfillment IDs. Enter numbers only (no quotes required). These will be converted to integers automatically.

## `nrds_id` (type: `array`):

Optional: Paste one or more NRDS IDs. Enter numbers only (no quotes required). These will be converted to integers automatically.

## Actor input object example

```json
{
  "profile_id": [
    "56c777800fa4170100766f1d",
    "56cb49b80fa41701007729b7"
  ],
  "fulfillment_id": [
    "2221674",
    "1208641"
  ]
}
```

# Actor output Schema

## `overview` (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 = {
    "profile_id": [
        "56c777800fa4170100766f1d",
        "56cb49b80fa41701007729b7"
    ],
    "fulfillment_id": [
        "2221674",
        "1208641"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("realtorscraper/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 = {
    "profile_id": [
        "56c777800fa4170100766f1d",
        "56cb49b80fa41701007729b7",
    ],
    "fulfillment_id": [
        "2221674",
        "1208641",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("realtorscraper/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 '{
  "profile_id": [
    "56c777800fa4170100766f1d",
    "56cb49b80fa41701007729b7"
  ],
  "fulfillment_id": [
    "2221674",
    "1208641"
  ]
}' |
apify call realtorscraper/realtor-agent-scraper --silent --output-dataset

```

## MCP server setup

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