# Property Finder Scraper — UAE, Saudi, Qatar Property Data & API (`sian.agency/propertyfinder-property-scraper`) Actor

Property Finder scraper & real estate data API for the MENA region's leading property portal. Sale & rent listings across UAE, Saudi Arabia, Qatar, Egypt & Bahrain: price, size, beds, baths, GPS, photos, agent, broker, RERA permit — clean JSON/CSV.

- **URL**: https://apify.com/sian.agency/propertyfinder-property-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Real estate, Automation, Lead generation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 overview listings

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

Learn more: https://docs.apify.com/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 — Dubai & MENA Real Estate Data & API 🇦🇪🏠

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Dubai Real Estate Scraper](https://img.shields.io/badge/Store-Bayut%20Property%20Scraper-93D500)](https://apify.com/sian.agency/bayut-property-scraper?fpr=sian) [![Immobiliare Italy Scraper](https://img.shields.io/badge/Store-Immobiliare%20Italy-1AE392)](https://apify.com/sian.agency/immobiliare-property-scraper?fpr=sian) [![Zillow Property Scraper](https://img.shields.io/badge/Store-Zillow%20Property%20Scraper-1F4E79)](https://apify.com/sian.agency/zillow-property-scraper?fpr=sian)

#### 🎉 The fast, no-code Property Finder data API — pan-GCC property data with RERA/BRN compliance fields, no Property Finder API key required
##### Built for property investors, brokers, proptech teams, and market researchers who need clean MENA real-estate data — for sale and for rent — across the UAE, Saudi Arabia, Qatar, Egypt and Bahrain.

### 📋 Overview

**Pull listings from Property Finder — the MENA region's leading real-estate portal — as clean JSON, CSV or Excel.** For sale and for rent, residential and commercial, plus off-plan new projects, across Dubai, Abu Dhabi, Riyadh, Jeddah, Doha, Cairo, Manama and every market Property Finder covers. Pick the depth that fits the job: a fast, low-cost Overview scan to size a market, or the full per-listing Detail record with broker license, RERA permit, photo gallery and amenities.

**Why investors and brokers choose us:**
- ⚡ **Two depths, one actor**: a fast Overview scan for whole-market sweeps, or full Detail records when you need everything
- 🔁 **Detail = Overview + more**: every overview field is on a Detail row too, with deeper data added on top — never less
- 🌍 **Pan-GCC in one place**: UAE, Saudi Arabia, Qatar, Egypt and Bahrain — switch market with a single field
- 📐 **Analysis-ready**: price, size, beds, baths, **price-per-area** and **GPS coordinates** on every row for instant investment math
- 🛡️ **Compliance data built in**: broker license / BRN, RERA / Trakheesi permit and verification flags for due diligence
- 💎 **No API key, no code**: no Property Finder account or API access needed — point, click, export a real-estate data feed
- 🆓 **Free to try**: scrape listings with no credit card

### ✨ Features

- 🧭 **Overview mode**: bulk listings from search pages — price, specs, location, agent, broker, photos — ideal for fast market sweeps
- 🔍 **Detail mode**: full per-listing record — broker license / BRN, RERA permit, complete amenity names, full photo gallery, rental availability date, description
- 🗺️ **Two ways to search**: build a search from filters (market + category + filters), or paste a Property Finder search URL with your filters already applied
- 🎯 **By listing URL**: drop specific Property Finder listing URLs straight into Detail mode
- 🎚️ **Rich filters**: market, category (buy / rent / commercial / off-plan), location, property type, price range, area range, bedrooms, amenities, furnished, sort
- 📐 **Price-per-area + thumbnail** computed on every row for instant comparison
- 📍 **GPS + full location** on every listing for mapping and territory analysis
- 📞 **Agent & broker on every row**: agent name, broker/agency name and license for instant lead lists
- ✅ **Verification & premium flags**: spot verified and premium listings at a glance
- 📤 **Clean exports**: JSON, CSV, Excel, or the full REST API

### 🎬 Quick Start

Pick a scrape depth, choose a market and category, set filters, and run. Results stream to the Apify dataset as clean JSON/CSV.

```bash
curl -X POST "https://api.apify.com/v2/acts/sian.agency~propertyfinder-property-scraper/runs?token=[YOUR_TOKEN]" \
-H 'Content-Type: application/json' \
-d '{"scrapeMode":"overview","country":"ae","category":"1","maxResults":50}'
````

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Pick your scrape depth

**Overview** for a fast price + spec scan from search pages, or **Detail** for the full per-listing record (broker license, RERA permit, amenities, full photos).

#### Step 2: Choose your market & how to search

Set the **market** (`ae`, `sa`, `qa`, `eg`, `bh`) and **category** (Buy / Rent / Commercial / New projects), or paste a Property Finder **search URL** in `searchUrls`. For Detail, you can also drop specific listings into `listingUrls`.

#### Step 3: Set filters & run

Locations, price range, area range, bedrooms, amenities, furnished, sort, Max results — then hit **Start**.

**That's it! In under a minute, you'll have:**

- A clean dataset of MENA property listings (JSON / CSV / Excel)
- Price, size, beds, baths, GPS, agent, broker and price-per-area on every row
- A repeatable, no-code real-estate data feed across the Gulf

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| scrapeMode | string | No | `overview` (fast & cheap) or `detail` (full fields). Default `overview`. |
| country | string | No | Market: `ae` (UAE), `sa` (Saudi), `qa` (Qatar), `eg` (Egypt), `bh` (Bahrain). Default `ae`. |
| category | string | No | `1`=Buy, `2`=Rent, `3`=Commercial buy, `4`=Commercial rent, `5`=New projects. Default `1`. |
| searchUrls | array | No | Property Finder search URLs — on-page filters honored. |
| listingUrls | array | No | Specific listing URLs (Detail mode). |
| locations | array | No | Location IDs to filter the search. |
| bedrooms | array | No | Bedroom filter, e.g. `["1","2","3"]`. |
| minPrice / maxPrice | integer | No | Price range filter. |
| minArea / maxArea | integer | No | Area range filter. |
| furnished | integer | No | Furnished filter. |
| sort | string | No | Sort order (e.g. most recent). |
| maxResults | integer | No | Max listings this run. Default 100. |

**Example — by market & filters:**

```json
{
  "scrapeMode": "overview",
  "country": "ae",
  "category": "1",
  "bedrooms": ["2", "3"],
  "minPrice": 1000000,
  "maxPrice": 5000000,
  "sort": "mr",
  "maxResults": 200
}
```

**Example — by search URL:**

```json
{
  "scrapeMode": "overview",
  "searchUrls": ["https://www.propertyfinder.ae/en/search?c=1&l=50&t=1&ob=mr"],
  "maxResults": 100
}
```

**Example — full Detail by listing URL:**

```json
{
  "scrapeMode": "detail",
  "listingUrls": [
    "https://www.propertyfinder.ae/en/plp/buy/apartment-for-sale-dubai-marina-12345678.html"
  ]
}
```

### 📤 Output

Results are saved to the Apify dataset with **40+ fields** including:

| Field | Type | Description |
|-------|------|-------------|
| id | string | Listing ID |
| propertyTitle | string | Listing title |
| url | string | Listing URL |
| listing\_type | string | `sale` or `rent` |
| property\_type | string | Apartment, Villa, Townhouse, … |
| price | number | Asking / rent price |
| currency | string | AED, SAR, QAR, EGP, BHD |
| price\_per\_area / price\_per\_size | number | Per-area price (upstream + computed) |
| bedrooms / bathrooms | number | Room counts |
| size / size\_unit | number / string | Area + unit (e.g. sqft) |
| furnished / completion\_status | string | Furnishing + completion (ready / off-plan) |
| location / community / city | string | Location rollup |
| latitude / longitude | number | GPS coordinates |
| agent\_name | string | Listing agent |
| broker\_name / broker\_license | string | Agency + broker license / BRN |
| rera | string | RERA / Trakheesi permit number |
| is\_verified / is\_premium | bool | Verification & premium flags |
| listed\_date / rental\_availability\_date | string | Listed + availability dates *(detail)* |
| amenities | array | Amenity names *(full in detail)* |
| images / images\_count / thumbnail | array / number / string | Photo gallery |
| description | string | Listing description *(detail)* |

**Example:**

```json
{
  "id": "97370305",
  "propertyTitle": "Marina Bay | High Floor | Sea View",
  "url": "https://www.propertyfinder.ae/en/plp/buy/apartment-for-sale-dubai-marina-97370305.html",
  "listing_type": "sale",
  "property_type": "Apartment",
  "price": 2450000,
  "currency": "AED",
  "price_per_area": 1850,
  "price_per_size": 1850,
  "bedrooms": 2,
  "bathrooms": 3,
  "size": 1324,
  "size_unit": "sqft",
  "furnished": "NO",
  "completion_status": "completed",
  "location": "Dubai Marina, Dubai",
  "city": "Dubai",
  "latitude": 25.0805,
  "longitude": 55.1403,
  "agent_name": "Sara Khan",
  "broker_name": "Prime Properties LLC",
  "broker_license": "12345",
  "rera": "0987654321",
  "is_verified": true,
  "amenities": ["Balcony", "Built-in Wardrobes", "Covered Parking", "Shared Pool"],
  "images": ["https://www.propertyfinder.ae/property/...-l.jpg"],
  "images_count": 18
}
```

### 💼 Use Cases & Examples

#### 1. Market research & price benchmarking

**Analysts sizing a city or community market.**
**Input:** `overview` UAE, Buy, all residential. **Output:** thousands of listings with price-per-area. **Use:** build a live price index per community.

#### 2. Investment sourcing

**Investors hunting undervalued or high-yield stock.**
**Input:** `overview` + `minPrice`/`maxPrice` + `bedrooms`. **Output:** filtered listings with price-per-area and GPS. **Use:** rank deals by price-per-sqft vs community median.

#### 3. Broker & agent lead generation

**Recruiters and brokerages building contact lists.**
**Input:** Overview scan of a target market. **Output:** `agent_name`, `broker_name` and `broker_license` on every row. **Use:** prospecting and competitive coverage.

#### 4. Compliance & due diligence

**Compliance teams verifying listing legitimacy.**
**Input:** Detail mode on a set of listings. **Output:** RERA / Trakheesi permit, broker BRN and verification flags. **Use:** screen permits and flag unverified stock.

#### 5. Proptech & valuation data feeds

**Proptech teams powering AVMs and dashboards.**
**Input:** scheduled `searchUrls` runs per market. **Output:** a clean, repeatable MENA real-estate data feed. **Use:** feed models without a Property Finder API.

#### 6. Off-plan & new-project tracking

**Investors and analysts monitoring launches.**
**Input:** `category: "5"` (New projects) per market. **Output:** off-plan listings with completion status and pricing. **Use:** track new supply and entry pricing.

#### 7. Relocation & buyer search

**Relocation services shortlisting homes for clients.**
**Input:** `overview` + filters + Detail mode. **Output:** full records with photos, amenities, furnishing. **Use:** curated client shortlists across the Gulf.

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/propertyfinder-property-scraper').call({
  scrapeMode: 'overview', country: 'ae', category: '1', maxResults: 50,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/propertyfinder-property-scraper').call(
    run_input={'scrapeMode': 'overview', 'country': 'ae', 'category': '1', 'maxResults': 50}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~propertyfinder-property-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"scrapeMode":"overview","country":"ae","category":"1","maxResults":50}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: Schedule (e.g. daily) or webhook
2. **HTTP Request**: Call the actor API
3. **Process**: Handle the JSON results
4. **Action**: Save to a sheet/DB, notify, or transform

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- Scrape listings per run — full feature access, same quality
- No credit card required
- Perfect for testing and small projects

#### PAID Tier (Production Ready)

- **Unlimited** listings per run
- Pay-per-result: only charged for listings actually extracted
- Overview and Detail priced separately so you only pay for the depth you use

💰 **Pay only for what you extract** — Overview for cheap whole-market sweeps, Detail for the full per-listing record.

🔗 [View current pricing](https://apify.com/sian.agency/propertyfinder-property-scraper?fpr=sian)

### ❓ Frequently Asked Questions

**Q: Which markets are covered?**
A: UAE (`ae`), Saudi Arabia (`sa`), Qatar (`qa`), Egypt (`eg`) and Bahrain (`bh`) — switch with the `country` field.

**Q: Do I need a Property Finder API key?**
A: No. There's no setup and no Property Finder account or API key required.

**Q: What's the difference between Overview and Detail?**
A: Overview is a fast, low-cost scan that pulls bulk listings from search pages. Detail adds broker license / BRN, RERA / Trakheesi permit, the complete amenity list, full photo gallery, rental availability date and description — and includes everything Overview returns.

**Q: Can I use my own Property Finder search filters?**
A: Yes — paste your search URL in `searchUrls` and the on-page filters (category, price, beds, etc.) are honored. Or set filters directly (`bedrooms`, `minPrice`, `maxPrice`, `minArea`, `maxArea`, `furnished`, `locations`).

**Q: Does it include RERA / broker compliance data?**
A: Yes — Detail rows carry the RERA / Trakheesi permit number, broker license / BRN and verification flags.

**Q: Does it work for both sale and rent?**
A: Yes — set `category` to `1` (Buy) or `2` (Rent), plus `3`/`4` for commercial and `5` for new projects.

**Q: What output formats are available?**
A: JSON, CSV, Excel — export directly from the Apify dataset.

### 🐛 Troubleshooting

**No results returned**

- Check the `country` / `category` combination, or paste a working Property Finder search URL in `searchUrls` instead.
- Loosen filters — an overly tight price/area/bedroom combination can return zero listings.

**Detail mode returns nothing**

- Make sure `listingUrls` contain valid Property Finder listing URLs for the chosen market, or run `overview` first to discover them.

**Fewer results than expected**

- The FREE tier caps listings per run. Upgrade to PAID for unlimited, or raise `maxResults`.

**Missing broker license / RERA fields**

- These richer fields come from **Detail mode** — switch `scrapeMode` to `detail`.

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

*This is an independent tool and is not affiliated with, endorsed by, or sponsored by Property Finder or its parent company. "Property Finder" is a trademark of its respective owner. You are responsible for complying with Property Finder's terms of service and all applicable laws when using this tool.*

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue from the actor page
- Check the [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

## `scrapeMode` (type: `string`):

⚡ **OVERVIEW** — fast, cheap, ungated. Pulls every core field straight from Property Finder's search pages (price, price/ft², beds, baths, size, location, GPS, photos, agent).

🔍 **DETAIL** — full fields per listing (broker license, complete media gallery, amenity names, rental availability date). Slower and priced higher per result.

**TIP:** Start with Overview — upgrade to Detail only when you need the extra fields.

## `searchMode` (type: `string`):

🧭 How to tell the scraper what to fetch. **Usually leave this blank — it is auto-inferred** from which inputs you provide:

- **By search URL** — paste one or more Property Finder search-results URLs (or build a search with the filters below). The default for Overview.
- **By listing URL** — Detail mode only: paste specific listing URLs to fetch those exact properties.

**NOTE:** *By listing URL* is valid only when Scrape mode = Detail.

## `country` (type: `string`):

🌍 Which Property Finder market to search. Each country has its own domain and listings.

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

🏷️ Listing category to search (Property Finder's own `c=` parameter):

- **1 — Buy** (residential for sale)
- **2 — Rent** (residential to rent)
- **3 — Commercial Buy**
- **4 — Commercial Rent**
- **5 — New Projects** (off-plan)

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

🔗 Property Finder search-results URLs to scrape. Used when **Search by = By search URL**.

**TIP:** Build any search on Property Finder (set your filters, sort order, location), then copy the URL from the address bar — every on-page filter is honored.

**BULK EDIT:** Click "Bulk edit" to paste many URLs, one per line.

## `listingUrls` (type: `array`):

🆔 **Detail mode only.** Specific Property Finder listing URLs to fetch as full property pages.

**BULK EDIT:** Click "Bulk edit" to paste many URLs, one per line.

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

🔢 Maximum listings to extract this run.

- **FREE tier:** capped at 25 listings per run.
- **PAID tier:** unlimited — set as high as you need.

## `sort` (type: `string`):

↕️ How Property Finder orders the search results before they are scraped.

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

📍 Property Finder location IDs to restrict the search to. Repeatable — add several to search multiple areas.

**HOW TO FIND THE ID:** Pick a community or city on Property Finder, then read the `l=` value off the URL (e.g. `l=50` is Dubai Marina).

**BULK EDIT:** Click "Bulk edit" to paste many IDs, one per line.

## `propertyTypeId` (type: `integer`):

🏠 Optional. Filter by Property Finder's property-type ID. Common IDs: **1** = Apartment · **35** = Villa · **22** = Townhouse · **20** = Penthouse · **5** = Land.

## `bedrooms` (type: `array`):

🛏️ Optional. Bedroom counts to filter by — add one or more. Use **"0"** for studios. Example: `["3", "4"]` returns 3- and 4-bed listings.

## `amenities` (type: `array`):

✨ Optional. Property Finder amenity codes to require — add one or more. Example: `["AC", "BW"]` (central A/C, built-in wardrobes).

## `minPrice` (type: `integer`):

💸 Optional. Minimum price filter (in the market's local currency).

## `maxPrice` (type: `integer`):

💰 Optional. Maximum price filter (in the market's local currency).

## `minArea` (type: `integer`):

📐 Optional. Minimum built-up area in square feet.

## `maxArea` (type: `integer`):

📐 Optional. Maximum built-up area in square feet.

## `furnished` (type: `string`):

🛋️ Optional. Filter listings by furnishing status.

## Actor input object example

```json
{
  "scrapeMode": "overview",
  "searchMode": "bySearchUrl",
  "country": "ae",
  "category": "1",
  "searchUrls": [
    "https://www.propertyfinder.ae/en/search?c=1&l=50&ob=nd"
  ],
  "listingUrls": [
    "https://www.propertyfinder.ae/en/plp/buy/apartment-for-sale-abu-dhabi-al-reem-island-city-of-lights-marina-bay-97370305.html"
  ],
  "maxResults": 100,
  "sort": "mr",
  "locations": [
    "50"
  ],
  "bedrooms": [
    "3",
    "4"
  ],
  "amenities": [
    "AC",
    "BW"
  ]
}
```

# Actor output Schema

## `results` (type: `string`):

Scraped Property Finder listings (JSON/CSV/Excel).

# 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("sian.agency/propertyfinder-property-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("sian.agency/propertyfinder-property-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 sian.agency/propertyfinder-property-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Property Finder Scraper — UAE, Saudi, Qatar Property Data & API",
        "description": "Property Finder scraper & real estate data API for the MENA region's leading property portal. Sale & rent listings across UAE, Saudi Arabia, Qatar, Egypt & Bahrain: price, size, beds, baths, GPS, photos, agent, broker, RERA permit — clean JSON/CSV.",
        "version": "1.0",
        "x-build-id": "eGIxtiEI43G4fwjzn"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~propertyfinder-property-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-propertyfinder-property-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/sian.agency~propertyfinder-property-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-propertyfinder-property-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/sian.agency~propertyfinder-property-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-propertyfinder-property-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": {
                    "scrapeMode": {
                        "title": "⚡ Scrape mode",
                        "enum": [
                            "overview",
                            "detail"
                        ],
                        "type": "string",
                        "description": "⚡ **OVERVIEW** — fast, cheap, ungated. Pulls every core field straight from Property Finder's search pages (price, price/ft², beds, baths, size, location, GPS, photos, agent).\n\n🔍 **DETAIL** — full fields per listing (broker license, complete media gallery, amenity names, rental availability date). Slower and priced higher per result.\n\n**TIP:** Start with Overview — upgrade to Detail only when you need the extra fields.",
                        "default": "overview"
                    },
                    "searchMode": {
                        "title": "🧭 Search by (auto-detected)",
                        "enum": [
                            "bySearchUrl",
                            "byListingUrl"
                        ],
                        "type": "string",
                        "description": "🧭 How to tell the scraper what to fetch. **Usually leave this blank — it is auto-inferred** from which inputs you provide:\n\n- **By search URL** — paste one or more Property Finder search-results URLs (or build a search with the filters below). The default for Overview.\n- **By listing URL** — Detail mode only: paste specific listing URLs to fetch those exact properties.\n\n**NOTE:** *By listing URL* is valid only when Scrape mode = Detail.",
                        "default": "bySearchUrl"
                    },
                    "country": {
                        "title": "🌍 Country",
                        "enum": [
                            "ae",
                            "qa",
                            "sa",
                            "eg",
                            "bh"
                        ],
                        "type": "string",
                        "description": "🌍 Which Property Finder market to search. Each country has its own domain and listings.",
                        "default": "ae"
                    },
                    "category": {
                        "title": "🏷️ Category",
                        "enum": [
                            "1",
                            "2",
                            "3",
                            "4",
                            "5"
                        ],
                        "type": "string",
                        "description": "🏷️ Listing category to search (Property Finder's own `c=` parameter):\n\n- **1 — Buy** (residential for sale)\n- **2 — Rent** (residential to rent)\n- **3 — Commercial Buy**\n- **4 — Commercial Rent**\n- **5 — New Projects** (off-plan)",
                        "default": "1"
                    },
                    "searchUrls": {
                        "title": "🔗 Search URLs",
                        "type": "array",
                        "description": "🔗 Property Finder search-results URLs to scrape. Used when **Search by = By search URL**.\n\n**TIP:** Build any search on Property Finder (set your filters, sort order, location), then copy the URL from the address bar — every on-page filter is honored.\n\n**BULK EDIT:** Click \"Bulk edit\" to paste many URLs, one per line.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "listingUrls": {
                        "title": "🆔 Listing URLs",
                        "type": "array",
                        "description": "🆔 **Detail mode only.** Specific Property Finder listing URLs to fetch as full property pages.\n\n**BULK EDIT:** Click \"Bulk edit\" to paste many URLs, one per line.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "🔢 Max results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "🔢 Maximum listings to extract this run.\n\n- **FREE tier:** capped at 25 listings per run.\n- **PAID tier:** unlimited — set as high as you need.",
                        "default": 100
                    },
                    "sort": {
                        "title": "↕️ Sort by",
                        "enum": [
                            "mr",
                            "nd",
                            "pa",
                            "pd",
                            "bd",
                            "dd"
                        ],
                        "type": "string",
                        "description": "↕️ How Property Finder orders the search results before they are scraped.",
                        "default": "mr"
                    },
                    "locations": {
                        "title": "📍 Location IDs",
                        "type": "array",
                        "description": "📍 Property Finder location IDs to restrict the search to. Repeatable — add several to search multiple areas.\n\n**HOW TO FIND THE ID:** Pick a community or city on Property Finder, then read the `l=` value off the URL (e.g. `l=50` is Dubai Marina).\n\n**BULK EDIT:** Click \"Bulk edit\" to paste many IDs, one per line.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "propertyTypeId": {
                        "title": "🏠 Property type ID",
                        "minimum": 1,
                        "type": "integer",
                        "description": "🏠 Optional. Filter by Property Finder's property-type ID. Common IDs: **1** = Apartment · **35** = Villa · **22** = Townhouse · **20** = Penthouse · **5** = Land."
                    },
                    "bedrooms": {
                        "title": "🛏️ Bedrooms",
                        "type": "array",
                        "description": "🛏️ Optional. Bedroom counts to filter by — add one or more. Use **\"0\"** for studios. Example: `[\"3\", \"4\"]` returns 3- and 4-bed listings.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "amenities": {
                        "title": "✨ Amenities",
                        "type": "array",
                        "description": "✨ Optional. Property Finder amenity codes to require — add one or more. Example: `[\"AC\", \"BW\"]` (central A/C, built-in wardrobes).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "minPrice": {
                        "title": "💸 Min price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "💸 Optional. Minimum price filter (in the market's local currency)."
                    },
                    "maxPrice": {
                        "title": "💰 Max price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "💰 Optional. Maximum price filter (in the market's local currency)."
                    },
                    "minArea": {
                        "title": "📐 Min area (ft²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "📐 Optional. Minimum built-up area in square feet."
                    },
                    "maxArea": {
                        "title": "📐 Max area (ft²)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "📐 Optional. Maximum built-up area in square feet."
                    },
                    "furnished": {
                        "title": "🛋️ Furnishing",
                        "enum": [
                            "0",
                            "1",
                            "2",
                            "3"
                        ],
                        "type": "string",
                        "description": "🛋️ Optional. Filter listings by furnishing status."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
