# Bayut Agent & Lead Extractor (`axlymxp/bayut-agent-lead-extractor`) Actor

Extract Bayut UAE real-estate agent & agency leads — direct phone, WhatsApp, email, RERA licence, service areas, specialities and listing counts as structured JSON. Filter by location or TruBroker status. Built for lead-gen, recruiting and CRM. Pay only for the leads you get.

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

## Pricing

from $5.00 / 1,000 dataset items

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

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## Bayut Agent & Lead Extractor

Build **real-estate lead lists** from Bayut — the UAE's largest property portal —
as clean, structured JSON. Extract **agents (brokers)** with their **direct phone,
WhatsApp and email**, or **agencies (brokerages)** with phone and **RERA
licences**, plus service areas, specialities, languages, ratings and live listing
counts.

Every lead comes straight from Bayut's mobile search index, so one request per
page already carries the full contact record — fast, reliable, and no login or
CAPTCHA.

---

### Who uses this

- **Lead-generation & sales teams** — pull targeted broker contact lists (phone,
  WhatsApp, email) by area or specialisation for outreach.
- **Recruiters & brokerages** — find and rank top-performing agents by sale/rent
  volume, TruBroker status and service area.
- **PropTech & data teams** — maintain an up-to-date directory of UAE agents and
  agencies with a stable JSON schema.
- **Market analysts** — measure agency size (agent counts, listing volumes) and
  competitive footprint across communities.

---

### Output fields

#### Agents (`entityType = agents`)

| Field | Type | Description |
| ----- | ---- | ----------- |
| `entity_type` | string | `agent` |
| `id` | string | Bayut agent external ID |
| `name` | string | Agent name |
| `profile_url` | string | Bayut broker profile URL |
| `phone` | string | Direct phone |
| `whatsapp` | string | WhatsApp number |
| `email` | string | Email address |
| `phone_numbers` / `cell_numbers` | array | All listed numbers |
| `agency` | object | `{ id, name, slug }` |
| `is_trubroker` | boolean | Verified TruBroker |
| `is_highly_responsive` / `is_quality_lister` | boolean | Quality signals |
| `sale_count` / `rent_count` / `daily_rent_count` | number | Live listing counts |
| `total_ads` | number | Total active ads |
| `trucheck_count` / `check_count` | number | Verified-listing counts |
| `total_xp` | number | Bayut experience points |
| `specialities` | array | e.g. Off-Plan Sales, Commercial Leasing |
| `service_areas` / `service_area_ids` | array | Communities served |
| `languages` | array | Languages spoken |
| `about` | string | Agent bio |
| `image` | string | Profile photo URL |
| `scraped_at` | string | Extraction timestamp (ISO-8601) |

#### Agencies (`entityType = agencies`)

| Field | Type | Description |
| ----- | ---- | ----------- |
| `entity_type` | string | `agency` |
| `id` | string | Agency external ID |
| `name` | string | Agency name |
| `profile_url` | string | Bayut company profile URL |
| `phone` / `mobile` / `phone_numbers` | string/array | Agency contact |
| `location` / `locations` | string/array | Head office & coverage |
| `agents_count` | number | Number of agents |
| `trubroker_agent_count` | number | Verified agents |
| `ads_sale_count` / `ads_rent_count` | number | Live listing counts |
| `elite_status` / `is_featured` | boolean | Bayut status flags |
| `purpose` | array | for-sale / for-rent |
| `licenses` | array | `{ number, authority }` |
| `rera_licenses` | array | RERA licence numbers |
| `logo` | string | Agency logo URL |
| `scraped_at` | string | Extraction timestamp (ISO-8601) |

---

### High-value use cases

1. **Targeted outreach** — extract all TruBroker agents serving *Dubai Marina*
   with phone + WhatsApp + email, ready for your CRM or dialer.
2. **Agency prospecting** — pull agencies with their RERA licences and agent
   counts to prioritise partnerships or B2B sales.
3. **Recruiting** — rank agents by `sale_count` / `rent_count` and specialities to
   headhunt top performers in a specific community.
4. **Market mapping** — quantify how many agents cover each area and which
   specialities dominate.

---

### Input parameters

| Field | Type | Default | Description |
| ----- | ---- | ------- | ----------- |
| `entityType` | string | `agents` | `agents` or `agencies` |
| `query` | string | — | Name/keyword to match |
| `location` | string | `Dubai Marina` | Service-area filter (agents), auto-resolved |
| `locationExternalIds` | array | — | Exact Bayut location IDs (advanced) |
| `agentIds` | array | — | Specific agent IDs (direct mode) |
| `trubrokerOnly` | boolean | `false` | Only TruBroker agents |
| `maxItems` | integer | `100` | Stop after this many leads |
| `perPage` | integer | `25` | Page size (advanced) |
| `language` | string | `en` | `en` or `ar` |

#### Example input

```json
{
    "entityType": "agents",
    "location": "Dubai Marina",
    "trubrokerOnly": true,
    "maxItems": 200
}
````

#### Example output (one agent, trimmed)

```json
{
    "entity_type": "agent",
    "id": "2805597",
    "name": "OSA REAL ESTATE",
    "profile_url": "https://www.bayut.com/brokers/osa-real-estate-2805597.html",
    "phone": "+97155569372",
    "whatsapp": "+971555693722",
    "email": "osamaalawaad@yahoo.com",
    "agency": { "id": "109860", "name": "OSA Real Estate", "slug": "osa-real-estate-109860" },
    "is_trubroker": true,
    "sale_count": 23,
    "rent_count": 0,
    "specialities": ["Off-Plan Sales", "Commercial Leasing", "Residential Sales"],
    "service_areas": ["Downtown Dubai", "Al Barsha", "Jumeirah Village Circle (JVC)"],
    "languages": ["English", "Arabic"],
    "scraped_at": "2026-07-27T10:00:00+00:00"
}
```

***

### Scheduling & integrations

- **Schedule** recurring runs to keep your lead lists fresh.
- **Webhooks** on finish; export to **Google Sheets, Make, Zapier, Amazon S3**, or
  download as JSON/CSV/Excel.
- Pull results directly through the Apify API into your CRM pipeline.

### Use with AI assistants (MCP)

Available through the **Apify MCP server**, so AI assistants (Claude, ChatGPT and
other MCP clients) can call it as a tool to build lead lists inside an agent
workflow.

***

### FAQ

**Do agents include real contact details?** Yes — `phone`, `whatsapp` and `email`
come directly from Bayut's agent index for the vast majority of agents.

**Can I target a specific area?** Yes — set `location` (e.g. "Business Bay") to
filter agents by service area, or `trubrokerOnly` for verified brokers only.

**How many leads per run?** Up to `maxItems`. Bayut caps deep pagination near
50,000 results per query — narrow by location or query to exhaust larger sets.

**Agencies too?** Set `entityType = agencies` to extract brokerages with phone,
RERA licences, agent counts and listing volumes instead.

**Is it reliable?** It uses Bayut's mobile API (structured JSON), so it does not
break on website changes and needs no CAPTCHA solving.

**Is this legal?** The actor collects publicly available professional listing
data. You are responsible for using contact data in line with Bayut's terms and
applicable laws (including UAE privacy and anti-spam rules such as consent for
marketing outreach).

***

*Not affiliated with or endorsed by Bayut. "Bayut" is a trademark of its owner and
used here for descriptive purposes only.*

# Actor input Schema

## `entityType` (type: `string`):

Extract individual agents (brokers) with phone/WhatsApp/email, or agencies (brokerages) with phone and RERA licences.

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

Optional name/keyword to match (e.g. an agent name, agency name, or a term). Leave empty to list all, ranked by Bayut.

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

Optional place name to auto-resolve (e.g. 'Dubai Marina', 'Business Bay'). Filters agents by service area. Applies to agents only.

## `locationExternalIds` (type: `array`):

Optional. Exact Bayut location external IDs (e.g. 5003 = Dubai Marina) to filter agents by service area. Overrides 'Location name'.

## `agentIds` (type: `array`):

Optional. Specific Bayut agent external IDs to fetch directly instead of searching.

## `trubrokerOnly` (type: `boolean`):

Only include verified TruBroker agents (agents only).

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

Stop after collecting this many leads. Bayut caps deep pagination near 50,000 results per query.

## `perPage` (type: `integer`):

Leads fetched per request (1–50).

## `language` (type: `string`):

Language for localized text (e.g. en, ar).

## Actor input object example

```json
{
  "entityType": "agents",
  "location": "Dubai Marina",
  "locationExternalIds": [],
  "agentIds": [],
  "trubrokerOnly": false,
  "maxItems": 100,
  "perPage": 25,
  "language": "en"
}
```

# 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": "",
    "location": "Dubai Marina",
    "locationExternalIds": [],
    "agentIds": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("axlymxp/bayut-agent-lead-extractor").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": "",
    "location": "Dubai Marina",
    "locationExternalIds": [],
    "agentIds": [],
}

# Run the Actor and wait for it to finish
run = client.actor("axlymxp/bayut-agent-lead-extractor").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": "",
  "location": "Dubai Marina",
  "locationExternalIds": [],
  "agentIds": []
}' |
apify call axlymxp/bayut-agent-lead-extractor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Bayut Agent & Lead Extractor",
        "description": "Extract Bayut UAE real-estate agent & agency leads — direct phone, WhatsApp, email, RERA licence, service areas, specialities and listing counts as structured JSON. Filter by location or TruBroker status. Built for lead-gen, recruiting and CRM. Pay only for the leads you get.",
        "version": "1.0",
        "x-build-id": "ZBMnJOiEBWNleaIS4"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/axlymxp~bayut-agent-lead-extractor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-axlymxp-bayut-agent-lead-extractor",
                "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/axlymxp~bayut-agent-lead-extractor/runs": {
            "post": {
                "operationId": "runs-sync-axlymxp-bayut-agent-lead-extractor",
                "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/axlymxp~bayut-agent-lead-extractor/run-sync": {
            "post": {
                "operationId": "run-sync-axlymxp-bayut-agent-lead-extractor",
                "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",
                "properties": {
                    "entityType": {
                        "title": "Extract",
                        "enum": [
                            "agents",
                            "agencies"
                        ],
                        "type": "string",
                        "description": "Extract individual agents (brokers) with phone/WhatsApp/email, or agencies (brokerages) with phone and RERA licences.",
                        "default": "agents"
                    },
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Optional name/keyword to match (e.g. an agent name, agency name, or a term). Leave empty to list all, ranked by Bayut."
                    },
                    "location": {
                        "title": "Location name (agents)",
                        "type": "string",
                        "description": "Optional place name to auto-resolve (e.g. 'Dubai Marina', 'Business Bay'). Filters agents by service area. Applies to agents only."
                    },
                    "locationExternalIds": {
                        "title": "Location external IDs (advanced)",
                        "type": "array",
                        "description": "Optional. Exact Bayut location external IDs (e.g. 5003 = Dubai Marina) to filter agents by service area. Overrides 'Location name'.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "agentIds": {
                        "title": "Agent IDs (direct mode)",
                        "type": "array",
                        "description": "Optional. Specific Bayut agent external IDs to fetch directly instead of searching.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "trubrokerOnly": {
                        "title": "TruBroker agents only",
                        "type": "boolean",
                        "description": "Only include verified TruBroker agents (agents only).",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max leads",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Stop after collecting this many leads. Bayut caps deep pagination near 50,000 results per query.",
                        "default": 100
                    },
                    "perPage": {
                        "title": "Page size (advanced)",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Leads fetched per request (1–50).",
                        "default": 25
                    },
                    "language": {
                        "title": "Language",
                        "type": "string",
                        "description": "Language for localized text (e.g. en, ar).",
                        "default": "en"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
