# Property Finder Scraper - UAE Real Estate (`benthepythondev/propertyfinder-scraper`) Actor

Scrape Property Finder (propertyfinder.ae), the UAE's #1 property portal, for sale or to rent: price, size, beds, baths, full location with coordinates, agent and brokerage contact details, photos and the listing URL. Search by emirate, community or building.

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

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

## 🏠 Property Finder Scraper — UAE & Dubai Real Estate Data

Scrape **Property Finder** (propertyfinder.ae), the **UAE's #1 property portal**, **for sale or to rent** — and get clean, structured listings: price, size, bedrooms, bathrooms, full location with **coordinates**, the **agent and brokerage contact details**, photos and the listing URL. Search by emirate, community or building name across Dubai, Abu Dhabi, Sharjah and the rest of the UAE.

Built for real-estate research, lead generation, market analysis and price monitoring across the UAE. Export to JSON/CSV/Excel, run on a schedule, call via API, or connect to Make, Zapier or n8n.

### 🔎 What is the Property Finder Scraper?

Give it UAE locations (e.g. "Dubai Marina", "Downtown Dubai", "Abu Dhabi") and choose buy or rent, and it returns matching property listings as structured rows — paginated to your requested limit. You can also paste a full Property Finder search URL (with your own filters applied) and it will scrape exactly those results. Perfect for building a clean UAE property dataset, generating broker/agent leads, or tracking a local market.

#### What data does it extract?

- **Title**, **reference** and **listing URL**
- **Price**, **currency** (AED) and **price period** (sell / yearly)
- **Price per sqft**
- **Bedrooms**, **bathrooms** and **size** (in **sqft** and **sqm**)
- **Property type** (apartment, villa, townhouse, penthouse…) and **offering type**
- **Furnished** status and **completion status** (ready / off-plan)
- **Location name**, full **address**, **community** path
- **Latitude / longitude** for mapping
- **Agent name**, **agent email** and **languages** spoken
- **Brokerage / company name**, **phone**, **email** and **address**
- **WhatsApp** contact and direct **phone**
- **Main image**, **images count** and **listed date**
- **RERA** permit and **verified** flag

### ⬇️ Input

| Field | Type | Description |
|-------|------|-------------|
| `locations` | array | UAE emirate, community or building names, e.g. `Dubai Marina`. Resolved automatically. |
| `purpose` | string | `buy` (for sale) or `rent` (to rent). |
| `searchUrls` | array | Optional — paste full Property Finder search-results URLs. |
| `maxResults` | integer | Max listings per location. Default `50`. |
| `useResidentialProxy` | boolean | Route via Apify residential UAE IPs (only if needed). |

#### Example input

```json
{
  "locations": ["Dubai Marina", "Downtown Dubai"],
  "purpose": "buy",
  "maxResults": 100
}
````

### ⬆️ Output

One record per listing:

```json
{
  "id": "96951153",
  "reference": "DEYKJW9SY5G1BA3RPNHAR0MNRM",
  "url": "https://www.propertyfinder.ae/en/plp/buy/apartment-for-sale-dubai-marina-princess-tower-96951153.html",
  "title": "Upgraded | High Floor | Marina & Sea View",
  "purpose": "buy",
  "offering_type": "Residential for Sale",
  "property_type": "Apartment",
  "price": 3500000,
  "currency": "AED",
  "price_period": "sell",
  "price_per_sqft": 2400,
  "bedrooms": "2",
  "bathrooms": "3",
  "area_sqft": 1458,
  "area_sqm": 135.5,
  "furnished": "NO",
  "completion_status": "completed",
  "is_verified": true,
  "location_name": "Princess Tower",
  "address": "Princess Tower, Dubai Marina, Dubai",
  "community": "Dubai, Dubai Marina",
  "latitude": 25.0886,
  "longitude": 55.1481,
  "agent_name": "Jackson David Williams",
  "agent_email": "agent@example.ae",
  "agent_languages": ["English"],
  "broker_name": "YHU Properties",
  "broker_phone": "+97140000000",
  "broker_email": "info@example.ae",
  "broker_address": "Office 000, Dubai Marina, Dubai",
  "contact_phone": "+97140000000",
  "contact_email": "agent@example.ae",
  "contact_whatsapp": "+97140000000",
  "image": "https://www.propertyfinder.ae/.../668x452.jpg",
  "images_count": 12,
  "listed_date": "2026-06-20T12:22:52Z",
  "rera": "12345",
  "query": "Dubai Marina"
}
```

### 💡 Use cases

- 🏠 **Market research** — analyze UAE prices and supply by community, tower or emirate.
- 🎯 **Lead generation** — build a list of active brokers and agents with phone and email.
- 📈 **Price monitoring** — schedule runs and track asking-price changes over time.
- 🤖 **Automation** — push new listings to Slack/Sheets/CRM via Make, Zapier or n8n.

### ❓ FAQ

**Do I need an API key or login?** No — just provide locations and run.

**Can I search for rentals?** Yes — set `purpose` to `rent`. Rental prices come back with a `yearly` period.

**Which areas can I search?** Any UAE emirate, community or building — names are resolved to the right Property Finder area automatically. You can also paste a full search URL.

**Do I get coordinates?** Yes — latitude and longitude for every listing, ready for mapping.

**Are agent and brokerage contacts included?** Yes — agent name and email, plus the brokerage name, phone, email and address where Property Finder exposes them. Great for lead generation.

**How many listings can I get?** Set `maxResults` — the scraper paginates automatically until it reaches your limit or the results run out.

**Is the data in sqft or sqm?** Both — the original `area_sqft` and a converted `area_sqm` are included.

**How does pricing work?** Pay per listing returned. No subscription.

**Is it legal?** It collects publicly available listing data. Scrape responsibly, respect the site's robots/ToS, and follow applicable data-protection rules (e.g. GDPR / UAE PDPL) when handling any personal data such as agent contacts.

### ⚙️ How it works

Property Finder server-side renders its search pages with Next.js, so each result page already contains the full listing data as JSON. The scraper fetches that page with Chrome TLS impersonation, reads the embedded data directly, and normalizes every listing into consistent flat fields — price, size, beds/baths, location, coordinates, agent and brokerage — so you get a tidy table instead of raw HTML. It resolves your location names to the right area IDs, paginates automatically, and de-duplicates by listing id as it goes. Runs are fast and dependable, which is why the actor keeps passing its daily health check. The same input shape works for a quick check or a deep multi-area pull — only `maxResults` changes. If you ever hit a block, flip on `useResidentialProxy` for UAE residential IPs.

### 👥 Who uses UAE property data?

Property data is valuable to investors, agencies, proptech teams and analysts. An investor compares prices across Dubai communities; a brokerage monitors competitor listings and asking prices; a proptech app enriches its map with fresh inventory; an analyst studies supply and pricing trends in Abu Dhabi. Because every record is plain JSON with consistent fields, it drops straight into a spreadsheet, CRM, BI tool or LLM pipeline with no custom parsing.

### 📤 Export, schedule & integrate

Every run is saved to a dataset you can export to **JSON, CSV, Excel, XML or RSS**, or pull through the **Apify API**. Wire it into **Make, Zapier, n8n, Google Sheets, Slack** or your **own database**, run it on a **schedule** to catch new listings, and call it from AI agents through the **Apify MCP server**.

### 💡 Tips for best results

- Search by a broad area (e.g. "Dubai Marina" or "Dubai") for the widest coverage.
- Run buy and rent separately to keep two clean datasets.
- Schedule a daily run and diff by `id` for a new-listings alert.
- Paste a Property Finder search URL to capture an exact filtered view (price band, beds, property type).
- Increase `maxResults` to capture a full market snapshot.

### ❓ More FAQ

**How fresh is the data?** It is fetched live on each run.

**Can I run it automatically?** Yes — use Apify Schedules (cron).

**Are duplicates removed?** Listings are de-duplicated by id within each run.

**Which export formats?** JSON, CSV, Excel, XML and RSS, plus the Apify API.

**Can AI agents use it?** Yes — via the Apify API and MCP server.

### 🔗 You might also like

- [Immobiliare.it Scraper](https://apify.com/benthepythondev/immobiliare-scraper) — Italy real estate.
- [Idealista Scraper](https://apify.com/benthepythondev/idealista-scraper) — Spain & Italy property.
- [Rightmove Scraper](https://apify.com/benthepythondev/rightmove-scraper) — UK property with agent contacts.

***

**Keywords:** property finder scraper, propertyfinder.ae scraper, dubai real estate, uae property data, dubai property scraper, property finder api, real estate uae, properties for sale dubai, properties for rent dubai, abu dhabi real estate, mena property data, real estate leads uae, broker leads dubai, property listings uae, dubai marina apartments, uae property dataset

# Actor input Schema

## `locations` (type: `array`):

UAE emirate, community or building names to search, e.g. 'Dubai Marina', 'Downtown Dubai', 'Abu Dhabi'. Each name is resolved automatically to the matching Property Finder area.

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

Whether to scrape properties for sale (buy) or to rent.

## `searchUrls` (type: `array`):

Optional: paste full Property Finder search-results URLs (e.g. from your browser after applying filters). Used in addition to any locations above.

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

Maximum number of listings to return per location or search URL.

## `useResidentialProxy` (type: `boolean`):

Route requests through Apify residential UAE IPs. Only enable if direct requests get blocked (uses proxy quota).

## Actor input object example

```json
{
  "locations": [
    "Dubai Marina"
  ],
  "purpose": "buy",
  "searchUrls": [],
  "maxResults": 10,
  "useResidentialProxy": false
}
```

# 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 = {
    "locations": [
        "Dubai Marina"
    ],
    "purpose": "buy",
    "searchUrls": [],
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("benthepythondev/propertyfinder-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 = {
    "locations": ["Dubai Marina"],
    "purpose": "buy",
    "searchUrls": [],
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("benthepythondev/propertyfinder-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 '{
  "locations": [
    "Dubai Marina"
  ],
  "purpose": "buy",
  "searchUrls": [],
  "maxResults": 10
}' |
apify call benthepythondev/propertyfinder-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Property Finder Scraper - UAE Real Estate",
        "description": "Scrape Property Finder (propertyfinder.ae), the UAE's #1 property portal, for sale or to rent: price, size, beds, baths, full location with coordinates, agent and brokerage contact details, photos and the listing URL. Search by emirate, community or building.",
        "version": "1.0",
        "x-build-id": "tJWnwf3XmqQHWVQ14"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/benthepythondev~propertyfinder-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-benthepythondev-propertyfinder-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/benthepythondev~propertyfinder-scraper/runs": {
            "post": {
                "operationId": "runs-sync-benthepythondev-propertyfinder-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/benthepythondev~propertyfinder-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-benthepythondev-propertyfinder-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "locations": {
                        "title": "Locations",
                        "type": "array",
                        "description": "UAE emirate, community or building names to search, e.g. 'Dubai Marina', 'Downtown Dubai', 'Abu Dhabi'. Each name is resolved automatically to the matching Property Finder area.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "purpose": {
                        "title": "Buy or rent",
                        "enum": [
                            "buy",
                            "rent"
                        ],
                        "type": "string",
                        "description": "Whether to scrape properties for sale (buy) or to rent.",
                        "default": "buy"
                    },
                    "searchUrls": {
                        "title": "Search URLs (optional)",
                        "type": "array",
                        "description": "Optional: paste full Property Finder search-results URLs (e.g. from your browser after applying filters). Used in addition to any locations above.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Max results per location",
                        "minimum": 1,
                        "maximum": 2000,
                        "type": "integer",
                        "description": "Maximum number of listings to return per location or search URL.",
                        "default": 50
                    },
                    "useResidentialProxy": {
                        "title": "Use residential proxy (AE)",
                        "type": "boolean",
                        "description": "Route requests through Apify residential UAE IPs. Only enable if direct requests get blocked (uses proxy quota).",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
