# PropertyFinder Dubai Listings & Agent Contacts (`xtracto/propertyfinder-dubai-leads`) Actor

Collect UAE/Dubai property listings from PropertyFinder with the listing agent & brokerage contact (name, agency, email, phone), plus price, location, beds/baths/size, and RERA permit. Public listing data, no login.

- **URL**: https://apify.com/xtracto/propertyfinder-dubai-leads.md
- **Developed by:** [Farhan Febrian Nauval](https://apify.com/xtracto) (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 $20.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## PropertyFinder Dubai — Listings & Agent Contacts

Collect UAE / Dubai property listings from **PropertyFinder** with the listing **agent and brokerage contact** (name, agency, email, phone, WhatsApp) — plus price, location, bedrooms, size, and RERA permit. Public listing data, no login required.

> This collects **listing/agent business contact data** that PropertyFinder publishes publicly. It does **not** provide private property-owner personal details (those are confidential and not published).

### Why use this actor

- **No login or account needed** — works on public listing pages.
- **Agent & brokerage contacts** — agent name, agency, email, phone, and WhatsApp per listing (real-estate lead data).
- **Full listing details** — price, location (with coordinates), bedrooms, bathrooms, size, furnishing, completion status, and RERA permit number.
- **Any search you can do on the site** — paste a PropertyFinder search URL with your filters (location, price, type) and the actor collects every result.
- **Huge coverage** — 190k+ sale and rent listings across the UAE.
- **Stable JSON output** — ready for CRMs, spreadsheets, or lead pipelines.

### How it works

1. Choose a **purpose** (for sale / for rent) for a quick start, **or** paste one or more **search URLs** from PropertyFinder with your own filters applied.
2. The actor reads every listing across the result pages and turns the pages automatically until your limit.
3. Each listing becomes one row — downloadable as JSON, CSV, or Excel.

You don't manage browsers, sessions, or page-turning — just press Run.

### Use cases

- **Real-estate lead generation** — build lists of active agents/brokerages with contact details by area or price band.
- **Market analysis** — track inventory, pricing, and which agencies dominate a community.
- **CRM enrichment** — match listings and agents to your pipeline.
- **Competitor monitoring** — watch a brokerage's live listings over time.

### Input

```json
{
  "purpose": "for-sale",
  "startUrls": [],
  "maxItemsPerSearch": 0,
  "maxItems": 200,
  "proxyConfiguration": { "useApifyProxy": true }
}
````

| Field | Type | Description |
|---|---|---|
| `purpose` | string | `for-sale` or `for-rent`. Quick start used when no Search URLs are given. |
| `startUrls` | array | PropertyFinder search URLs with filters applied (location, price, bedrooms, type). Copy from the site's address bar. Overrides `purpose`. |
| `maxItemsPerSearch` | integer | Cap listings per search URL. `0` = all. |
| `maxItems` | integer | Overall cap for the run. `0` = no limit. Default `200`. |
| `maxConcurrency` | integer | Search URLs processed in parallel. Default `3`. |
| `proxyConfiguration` | object | Residential proxy required (the default). |

### Output

One record per listing:

```json
{
  "_input": "https://www.propertyfinder.ae/en/search?c=1",
  "_scrapedAt": "2026-06-16T13:10:00Z",
  "recordType": "LISTING",
  "id": "99959555",
  "reference": "...",
  "listingUrl": "https://www.propertyfinder.ae/en/plp/buy/apartment-for-sale-...html",
  "title": "Spacious Family Home | Vacant | Great Community",
  "propertyType": "Apartment",
  "purpose": "sale",
  "priceValue": 2725000, "priceCurrency": "AED", "pricePeriod": "sell",
  "bedrooms": "3", "bathrooms": "4",
  "sizeValue": 1813, "sizeUnit": "sqft",
  "furnished": "NO", "completionStatus": "completed",
  "isVerified": true, "listingLevel": "premium", "rera": "71536378280",
  "listedDate": "2026-06-10", "lastRefreshedAt": "2026-06-15",
  "locationName": "Maya 5, District 1, Jumeirah Village Triangle, Dubai",
  "locationSlug": "...", "latitude": 25.20, "longitude": 55.23,
  "images": ["https://static.shared.propertyfinder.ae/.../800x600.jpg"],
  "agentName": "Mohammd Rajai Fawall", "agentId": "114574", "agentEmail": "fawall@xestate.global", "agentIsSuper": true,
  "brokerName": "XESTATE PROPERTIES L.L.C", "brokerAddress": "Office 101, ...",
  "contactEmail": "fawall@xestate.global", "contactPhone": "+971565490977", "contactWhatsapp": "+97145560345"
}
```

| Field | Type | Description |
|---|---|---|
| `id` / `reference` / `listingUrl` | string | Listing ID, agency reference, and link. |
| `title` / `propertyType` / `purpose` | string | Headline, type (Apartment/Villa/…), sale or rent. |
| `priceValue` / `priceCurrency` / `pricePeriod` | number/string | Price and currency. |
| `bedrooms` / `bathrooms` / `sizeValue` / `sizeUnit` | mixed | Size details. |
| `furnished` / `completionStatus` / `isVerified` / `listingLevel` / `rera` | mixed | Listing attributes + RERA permit. |
| `locationName` / `locationSlug` / `latitude` / `longitude` | mixed | Location and coordinates. |
| `images` | array | Listing image URLs. |
| `agentName` / `agentId` / `agentEmail` / `agentIsSuper` | mixed | Listing agent. |
| `brokerName` / `brokerAddress` | string | Brokerage (agency) name and office address. |
| `contactEmail` / `contactPhone` / `contactWhatsapp` | string | Public contact options shown on the listing. |

Searches that fail are returned with an `_error` field, so nothing fails silently.

# Actor input Schema

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

Quick start: collect properties for sale or for rent across the UAE. (Ignored if you provide Search URLs below.)

## `startUrls` (type: `array`):

Paste one or more PropertyFinder search URLs with your filters already applied (location, price, bedrooms, property type). Open propertyfinder.ae, set your filters, copy the address bar, and paste it here. Overrides Purpose.

## `maxItemsPerSearch` (type: `integer`):

Cap the number of listings collected per search URL. 0 = all available.

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

Overall cap across all searches in this run. 0 = no limit.

## `maxConcurrency` (type: `integer`):

How many search URLs to process in parallel.

## `proxyConfiguration` (type: `object`):

Residential proxy is required (the site blocks datacenter addresses).

## Actor input object example

```json
{
  "purpose": "for-sale",
  "startUrls": [],
  "maxItemsPerSearch": 0,
  "maxItems": 200,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "startUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("xtracto/propertyfinder-dubai-leads").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 = { "startUrls": [] }

# Run the Actor and wait for it to finish
run = client.actor("xtracto/propertyfinder-dubai-leads").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 '{
  "startUrls": []
}' |
apify call xtracto/propertyfinder-dubai-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=xtracto/propertyfinder-dubai-leads",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "PropertyFinder Dubai Listings & Agent Contacts",
        "description": "Collect UAE/Dubai property listings from PropertyFinder with the listing agent & brokerage contact (name, agency, email, phone), plus price, location, beds/baths/size, and RERA permit. Public listing data, no login.",
        "version": "0.1",
        "x-build-id": "vI4RYLMx1skyMekV4"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/xtracto~propertyfinder-dubai-leads/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-xtracto-propertyfinder-dubai-leads",
                "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/xtracto~propertyfinder-dubai-leads/runs": {
            "post": {
                "operationId": "runs-sync-xtracto-propertyfinder-dubai-leads",
                "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/xtracto~propertyfinder-dubai-leads/run-sync": {
            "post": {
                "operationId": "run-sync-xtracto-propertyfinder-dubai-leads",
                "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": {
                    "purpose": {
                        "title": "Purpose",
                        "enum": [
                            "for-sale",
                            "for-rent"
                        ],
                        "type": "string",
                        "description": "Quick start: collect properties for sale or for rent across the UAE. (Ignored if you provide Search URLs below.)",
                        "default": "for-sale"
                    },
                    "startUrls": {
                        "title": "Search URLs (optional)",
                        "type": "array",
                        "description": "Paste one or more PropertyFinder search URLs with your filters already applied (location, price, bedrooms, property type). Open propertyfinder.ae, set your filters, copy the address bar, and paste it here. Overrides Purpose.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItemsPerSearch": {
                        "title": "Max listings per search (0 = all)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Cap the number of listings collected per search URL. 0 = all available.",
                        "default": 0
                    },
                    "maxItems": {
                        "title": "Max listings total (0 = all)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Overall cap across all searches in this run. 0 = no limit.",
                        "default": 200
                    },
                    "maxConcurrency": {
                        "title": "Max concurrent searches",
                        "minimum": 1,
                        "maximum": 8,
                        "type": "integer",
                        "description": "How many search URLs to process in parallel.",
                        "default": 3
                    },
                    "proxyConfiguration": {
                        "title": "Proxy",
                        "type": "object",
                        "description": "Residential proxy is required (the site blocks datacenter addresses).",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
