# UAE Real Estate Agent Scraper (`happyendpoint/uae-real-estate-agent-scraper`) Actor

Scrape real estate agent profiles, contact details & listings from Bayut UAE. Search agents by location, name or specialisation. Get TruBroker status, mobile numbers, WhatsApp, RERA licences & property portfolios. No proxies needed. Unofficial Scraper

- **URL**: https://apify.com/happyendpoint/uae-real-estate-agent-scraper.md
- **Developed by:** [Happy Endpoint](https://apify.com/happyendpoint) (community)
- **Categories:** Lead generation, Real estate, Integrations
- **Stats:** 47 total users, 7 monthly users, 98.8% runs succeeded, 4 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.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 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

## 👤 Bayut Agent Finder — UAE Real Estate Agent Scraper

### 🚫 NO Proxies Needed

### 🚨 **Need the Full Bayut UAE Agent Database?**

Complete active Bayut.com agent directory scraped in **May 2026**.

- 19,892 UAE real estate agents
- 4,247 agencies
- Emails, phone numbers, and WhatsApp numbers
- TruBroker, Quality Lister, and Highly Responsive flags
- Listing activity metrics
- Service areas, languages, and specialisations
- Agency details + RERA numbers
- Clean CSV format (39 columns)

Interested in purchasing the full dataset? Contact us at: `happyendpointhq@gmail.com`

Search and extract **real estate agent profiles, contact details, and property listings** from Bayut — the UAE's leading property portal. Find agents by location or name, check TruBroker status, and pull full listing portfolios. No proxies. No setup. Just data.

***

### What This Actor Does

This actor has **five modes** that work together in a workflow:

| Mode | What it does |
|------|-------------|
| 📍 **Location Search** | Find a location ID by area name |
| 🔍 **Agent Search** | Find agents by location, specialisation, and purpose |
| 👤 **Agent Search by Name** | Find agents by their name |
| 📋 **Agent Details** | Get the full profile of one specific agent |
| 🏠 **Agent Properties** | Get all active listings posted by an agent |

***

### Workflow

#### Step 1 — Find Your Location ID (optional)

If you want to filter agents by area, get the location ID first.

1. Set **Mode** to `📍 Location Search`
2. Enter a **Location Name** — e.g. `Dubai Marina`
3. Run the actor
4. Copy the **`externalID`** from the matching result — e.g. `5003`

**Sample result:**

```json
{
  "externalID": "5003",
  "name": { "en": "Dubai Marina" },
  "path": "UAE > Dubai > Dubai Marina",
  "type": "neighbourhood",
  "adCount": 12450
}
```

***

#### Step 2 — Find Agents

**Option A — Search by location and filters:**

1. Set **Mode** to `🔍 Agent Search`
2. Paste the `externalID` from Step 1 into **Location ID(s)**
3. Set Purpose, Specialisation, and Listing Type as needed
4. Run the actor
5. Copy the **`agent_external_id`** of any agent you want to dig into further

**Option B — Search by name:**

1. Set **Mode** to `👤 Agent Search by Name`
2. Enter the agent's name in **Agent Name**
3. Run the actor
4. Copy the **`agent_external_id`** from the matching result

***

#### Step 3 — Get Agent Details or Listings

Both Agent Details and Agent Properties use the same **`agent_external_id`** from Step 2.

**To get a full profile:**

1. Set **Mode** to `📋 Agent Details`
2. Paste `agent_external_id` into **Agent ID**
3. Run — returns full profile including badges, stats, RERA licence, service areas

**To get all listings by that agent:**

1. Set **Mode** to `🏠 Agent Properties`
2. Paste `agent_external_id` into **Agent ID**
3. Run — returns all active property listings posted by that agent

***

### Input Fields

| Field | Mode | Required | Description |
|-------|------|----------|-------------|
| Location Name | Location Search | ✅ Yes | Area or city name in UAE |
| Location ID(s) | Agent Search | ❌ No | `externalID` from Location Search. Comma-separated for multiple |
| Purpose | Agent Search | ❌ No | For Sale or For Rent |
| Specialisation | Agent Search | ❌ No | Residential or Commercial |
| Listing Type | Agent Search | ❌ No | Any, Ready, or Off-Plan |
| Agent Name | Agent Search by Name | ✅ Yes | Full or partial agent name |
| Agent ID | Agent Details / Agent Properties | ✅ Yes | `agent_external_id` from any Agent Search result |
| Page Number | Agent Search / By Name / Properties | ❌ No | Default: 1 |

***

### Pagination

After every paginated run, check the **Logs tab** for the pagination block:

```
PAGINATION INFO:
  Current page    : 1 of 12
  This page       : 40 agents
  Total matching  : 463 agents
  Per page        : 40
  More pages?     : Yes — run again with page = 2
```

**Results per page by mode:**

| Mode | Results per page |
|------|-----------------|
| Agent Search | 40 agents |
| Agent Search by Name | 20 agents |
| Agent Properties | 25 listings |

**You are done when** the log says `No — this is the last page`, or when `This page` count is less than the per-page maximum for that mode.

***

### Output

#### Agent Search & Agent Search by Name

Each dataset item is one agent:

| Field | Type | Description |
|-------|------|-------------|
| `agent_external_id` | string | Unique agent ID — use in Agent Details and Agent Properties |
| `agent_name_en` | string | Agent full name in English |
| `agent_name_ar` | string | Agent full name in Arabic |
| `agency_name_en` | string | Agency name in English |
| `agency_name_ar` | string | Agency name in Arabic |
| `proxy_mobile` | string | Agent contact mobile number |
| `proxy_phone` | string | Agent landline number |
| `phone_numbers` | string | JSON-encoded array of additional numbers |
| `email` | string | Agent or agency email address |
| `most_active_emirate_prev_month` | string | Most active location last month |
| `is_trubroker_badge_prev_month` | string | TruBroker status last month (`1` = yes) |
| `is_responsive_agent_badge_prev_month` | string | Responsive Agent badge last month |
| `is_quality_lister_badge_prev_month` | string | Quality Lister badge last month |
| `trubroker_first_ranking_frontend` | string | TruBroker ranking position |
| `user_image` | string | Agent profile photo URL |

#### Agent Details

Returns one full agent profile with extended information including service areas, RERA licence, and performance stats.

#### Agent Properties

Each dataset item is one property listing — same structure as the **Bayut Property Search** actor output. Key fields: `externalID`, `title.en`, `price`, `rooms`, `baths`, `area`, `purpose`, `contactName`, `phoneNumber`.

***

### Common Use Cases

**Build a directory of TruBroker agents in Dubai Marina:**

1. Location Search → `Dubai Marina` → copy `externalID` `5003`
2. Agent Search → Location IDs: `5003`, Specialisation: Residential
3. Filter results where `is_trubroker_badge_prev_month = 1`

**Find all listings from a specific agent:**

1. Agent Search by Name → search agent name → copy `agent_external_id`
2. Agent Properties → paste the `agent_external_id` as Agent ID

**Scrape commercial agent contact info in Business Bay:**

1. Location Search → `Business Bay` → copy `externalID`
2. Agent Search → Location IDs: (paste), Specialisation: Commercial
3. Dataset contains names, mobile numbers, and email addresses

**Research off-plan specialist agents across Dubai:**

1. Agent Search → Location IDs: `5002` (all Dubai), Specialisation: Residential, Listing Type: Off-Plan
2. Paginate through all results for a full market list

***

### SEO Keywords

Bayut agent scraper · UAE real estate agents · Dubai property agents data · TruBroker agents list · real estate agent contact details UAE · Bayut agent profiles · Dubai agents directory · property agent lead generation UAE · real estate CRM data Dubai · Bayut agent listings scraper · Dubai real estate agent finder · UAE property agent data extractor

#### Other Products

- [UAE Bayut Data API](https://bayutapi.dev)
- [UAE Propertyfinder Data API](https://propertyfinderapi.dev)

# Actor input Schema

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

Select the operation to perform.

**Typical workflow:**

1. Run **Location Search** to get a location ID
2. Run **Agent Search** (or **Agent Search by Name**) to find agents
3. Copy the `agent_external_id` from results
4. Run **Agent Details** or **Agent Properties** using that ID

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

**\[Location Search only]** Enter any area, district, or city in Dubai / UAE.

Examples: `Dubai Marina`, `Business Bay`, `Jumeirah`, `Abu Dhabi`.

## `location_ids` (type: `string`):

**\[Agent Search only]** The `externalID` from a Location Search result. For multiple locations, separate with commas.

Examples: `5003` (Dubai Marina) · `5002` (All of Dubai) · `5003,5060` (multiple areas).

## `purpose` (type: `string`):

**\[Agent Search only]** Filter agents by the transaction type they handle.

## `category` (type: `string`):

**\[Agent Search only]** Filter agents by the property category they specialise in.

## `completion_status` (type: `string`):

**\[Agent Search only]** Filter agents by the type of listings they carry.

⚠️ Most relevant when Purpose is **For Sale**. Off-plan agents specialise in new developments.

## `agent_name` (type: `string`):

**\[Agent Search by Name only]** Enter the agent's full name or partial name.

Examples: `John`, `Sarah`, `Ahmed`, `Rehab`.

## `agent_id` (type: `string`):

**\[Agent Details / Agent Properties]** The `agent_external_id` value from an Agent Search or Agent Search by Name result.

Example: `2402738`.

## `page` (type: `integer`):

**\[Agent Search / Agent Search by Name / Agent Properties only]** Which page of results to fetch.

Results per page:

- Agent Search: 40 agents per page
- Agent Search by Name: 20 agents per page
- Agent Properties: 25 listings per page

Check the **Logs** after each run for the next page number.

## Actor input object example

```json
{
  "mode": "location_search",
  "query": "Dubai",
  "purpose": "for-sale",
  "category": "residential",
  "page": 1
}
```

# Actor output Schema

## `results` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("happyendpoint/uae-real-estate-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("happyendpoint/uae-real-estate-agent-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 '{}' |
apify call happyendpoint/uae-real-estate-agent-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/4gxsHS0SeunpjfrwR/builds/r2wDiHeAQFLK4Y7nm/openapi.json
