# Property Finder Scraper — UAE & Gulf Properties, No Phones (`highbrow_fame/propertyfinder-properties`) Actor

Listings from Property Finder in the UAE, Saudi Arabia, Qatar, Bahrain and Egypt: price, size, bedrooms, location, coordinates, amenities, completion, agency. For sale and to rent. No phones.

- **URL**: https://apify.com/highbrow\_fame/propertyfinder-properties.md
- **Developed by:** [yestrue](https://apify.com/highbrow_fame) (community)
- **Categories:** Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.85 / 1,000 property delivereds

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Property Finder Scraper — UAE & Gulf Properties, No Phones

Get property listings from Property Finder, the largest property portal in the UAE, and its sister sites in Saudi Arabia, Qatar, Bahrain and Egypt: price or rent (yearly, monthly…), bedrooms, bathrooms, size in sq ft and m², property type, ready or off-plan, furnished, the full location path with coordinates, amenities, the listing date, the verified flag and the agency. For sale and to rent, residential and commercial. Paste your Property Finder search links — or just type a place.

**Why this one**

- 🔗 **Your search, as you set it up.** Set every filter you like on propertyfinder.ae (or .sa, .qa, .bh, .eg) and paste the link. Or type a place here — Dubai Marina, JVC, Al Reem Island, Riyadh, The Pearl — and set buy or rent, property type, bedrooms, price, size, ready or off-plan, furnishing, keywords and "added within" below.
- 🌍 **Five countries, one actor.** The UAE, Saudi Arabia, Qatar, Bahrain and Egypt share one platform. A live run read Dubai Marina rentals, properties for sale on The Pearl in Doha, Riyadh rentals, 3-bedroom flats for sale in New Cairo and ready homes on Palm Jumeirah in one go: 9,104 properties in about 10 minutes.
- 📍 **Everything from the results pages.** Coordinates, amenities, the full description, completion status and the agency come with every listing — no listing page has to be opened. In two live runs (15,480 properties) every record had its coordinates, price, size, listing date and agency.
- 🔒 **No phone numbers, no agent names.** Listings are named by their agency or developer only — never the agent, their photo, phone, WhatsApp or e-mail. Phone numbers, e-mail addresses, social media handles and the names agents sign their texts with ("Contact: <name> <number>", "Listing Agent: <name>") are replaced with `[phone removed]` / `[e-mail removed]` / `[handle removed]` / `[name removed]`.
- 💸 **You pay only for properties delivered.** A link that is not a Property Finder search, or a place Property Finder does not know, comes back as a free record with the reason.

### What you get

For every property:

| Field | What it is |
|---|---|
| `price`, `currency`, `rentPeriod`, `pricePerArea` | the asking price or rent (AED, SAR, QAR, BHD, EGP); for rentals `yearly`, `monthly`, `weekly` or `daily`; the price per sq ft or m² when Property Finder shows it |
| `transaction`, `category`, `propertyType`, `title` | sale or rent; residential or commercial; Apartment, Villa, Townhouse, Penthouse, Office Space, … |
| `bedrooms`, `bathrooms`, `size`, `sizeUnit`, `sizeSqm` | 0 bedrooms is a studio; the size as listed (sq ft in the UAE, m² elsewhere) and in m² |
| `completionStatus`, `saleType`, `furnished` | `ready` or `off-plan`; `first sale` or `resale`; furnished, unfurnished or partly furnished |
| `location`, `locationPath`, `region`, `area`, `locationId`, `locationType` | where it is: emirate or city, community, sub-community, building |
| `latitude`, `longitude` | the map point |
| `amenities` | Balcony, Shared Pool, Covered Parking, Central A/C, … |
| `listedAt`, `isVerified`, `listingLevel`, `isFeatured`, `isPremium`, `isExclusive`, `isDirectFromDeveloper`, `badges` | when it was listed, and Property Finder's flags ("great value", "high demand", "price drop") |
| `agency`, `agencyId` | the agency or developer — the company name only |
| `permitNumber` | the advertising permit number where the search results carry it (Abu Dhabi listings do; Dubai's are not in the search data) |
| `utilitiesIncluded` | whether the rent includes utilities, when the listing says |
| `description` | the full listing text, with contact details and people's names taken out |
| `image`, `imageCount`, `floorPlanCount`, `hasVideo`, `has360Tour` | media |
| `url`, `listingId`, `site` | the listing, and which Property Finder site it is on |
| `input`, `place`, `position`, `scrapedAt`, `status`, `error` | which search it came from, and why a search gave nothing |

#### Example

A real record from a live run — villas for sale in Abu Dhabi, newest first, 25 September 2026:

```json
{
  "listingId": "149088976",
  "url": "https://www.propertyfinder.ae/en/plp/buy/villa-for-sale-abu-dhabi-saadiyat-island-saadiyat-lagoons-149088976.html",
  "site": "propertyfinder.ae",
  "title": "Rare 5BR Villa | Huge Plot | Family Format",
  "transaction": "sale",
  "category": "residential",
  "propertyType": "Villa",
  "price": 16000000,
  "currency": "AED",
  "rentPeriod": null,
  "pricePerArea": 1877,
  "bedrooms": 5,
  "bathrooms": 6,
  "size": 8524,
  "sizeUnit": "sqft",
  "sizeSqm": 791.9,
  "completionStatus": "off-plan",
  "saleType": "resale",
  "furnished": "unfurnished",
  "location": "Saadiyat Lagoons, Saadiyat Island, Abu Dhabi",
  "locationPath": ["Abu Dhabi", "Saadiyat Island", "Saadiyat Lagoons"],
  "region": "Abu Dhabi",
  "area": "Saadiyat Island",
  "locationType": "SUBCOMMUNITY",
  "latitude": 24.55137825012207,
  "longitude": 54.441139221191406,
  "amenities": ["Barbecue Area", "Built in Wardrobes", "Central A/C", "Children's Play Area", "Children's Pool", "Kitchen Appliances", "Security", "Shared Gym", "Shared Pool"],
  "listedAt": "2026-09-23T09:13:58Z",
  "isVerified": false,
  "listingLevel": "standard",
  "badges": ["high demand"],
  "agency": "PRIMAL ALLIANCE REAL ESTATE",
  "permitNumber": "20260001028255",
  "description": "Primal Alliance Real Estate is pleased to present this rare 5-bedroom villa in Saadiyat Lagoons, Saadiyat Island. Set on a large plot, this …",
  "imageCount": 13,
  "status": "OK"
}
```

### How to use it

1. Paste **Search links** from Property Finder, one per line — or type **Places**, pick the **Country** and choose the filters.
2. Set **Max listings per search**.
3. Press **Start**, and download the results from the **Output** tab as JSON, CSV or Excel.

To follow new listings in an area, save your input as a task with **Added within (days)** set to 1 and schedule it daily.

You can also call it from the Apify API, from Make, Zapier or n8n, or from an AI agent through the Apify MCP server.

### Pricing

You are charged **per property delivered** — see the price on this page. Links that are not Property Finder searches and places Property Finder does not know are free.

### FAQ

**How many properties per search?** Property Finder serves 50 pages of up to 50 listings for one search — about 2,500 at most. On sale searches in the UAE and Egypt some places on each page are developer project ads, which are left out, so those stop near 2,000 or below. In live runs: Dubai Marina apartments to rent 2,494 of 5,922; properties for sale on The Pearl, Doha, 2,496 of 3,439; 3-bedroom flats for sale in New Cairo 1,999 of 16,927; ready homes for sale on Palm Jumeirah 1,728 of 2,160. For more, split the search — by price band, bedrooms or community.

**Why is my link read "newest first"?** Property Finder's default order, "Featured", is reshuffled between pages, so the same listing can come twice and others never. A Featured link is therefore read newest-first; a link sorted by price or date keeps its order. Each property comes once per search.

**Which places can I type?** Anything Property Finder's own search box knows: an emirate or city, a community, a sub-community or a building. Pick the **Country** for places outside the UAE. A place it does not know comes back as a free `NOT_FOUND` record.

**Why no phone numbers or agent names?** They are personal data. Every listing has its `url`; buyers and tenants contact the agency on Property Finder.

**Is this affiliated with Property Finder?** No. This is an independent tool that reads public Property Finder listings.

**Like it?** A short review on the Store page helps other people find this Actor. Something missing or broken? Tell us on the Issues tab — we read every one.

# Actor input Schema

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

Set up a search on propertyfinder.ae (or .sa, .qa, .bh, .eg) with all the filters you want and paste the address of the results page. One per line.

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

Or search here without a link: an emirate or city, a community, a sub-community or a building (Dubai Marina, JVC, Al Reem Island, Riyadh, The Pearl). The filters below apply.

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

Which Property Finder site the places are on.

## `transaction` (type: `string`):

For the places above.

## `propertyType` (type: `string`):

For the places above. Offices, shops, retail, warehouses and showrooms are searched in the commercial section.

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

Optional: any of these bedroom counts.

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

Optional, in the country's currency (AED, SAR, QAR, BHD, EGP).

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

Optional, in the country's currency.

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

Optional: sq ft on propertyfinder.ae, m² on the other sites.

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

Optional: sq ft on propertyfinder.ae, m² on the other sites.

## `completion` (type: `string`):

Optional, for sale.

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

Optional.

## `rentPeriod` (type: `string`):

For rentals: only rentals priced by that period. On the site's default, Property Finder shows yearly rents in the UAE and monthly rents elsewhere.

## `keywords` (type: `string`):

Optional: words the listing must mention, such as "sea view".

## `addedWithinDays` (type: `integer`):

Optional: only listings added in the last this many days.

## `sortBy` (type: `string`):

For the places above.

## `maxListingsPerSearch` (type: `integer`):

Stops each search after this many listings. Property Finder serves 50 pages for a search: about 2,500 listings at most (about 2,000 for sale in the UAE and Egypt).

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

How many searches to work on at the same time.

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

Used only to try again after a network error: the first try goes out directly.

## Actor input object example

```json
{
  "searchUrls": [
    "https://www.propertyfinder.ae/en/search?c=2&l=50&t=1&bdr%5B%5D=1&pt=120000"
  ],
  "country": "ae",
  "transaction": "buy",
  "propertyType": "any",
  "completion": "any",
  "furnished": "any",
  "rentPeriod": "any",
  "sortBy": "newest",
  "maxListingsPerSearch": 30,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

Every result as a JSON record, with a status for each input.

## `resultsCsv` (type: `string`):

The same records as CSV, for a spreadsheet.

# 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 = {
    "searchUrls": [
        "https://www.propertyfinder.ae/en/search?c=2&l=50&t=1&bdr%5B%5D=1&pt=120000"
    ],
    "maxListingsPerSearch": 30,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("highbrow_fame/propertyfinder-properties").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 = {
    "searchUrls": ["https://www.propertyfinder.ae/en/search?c=2&l=50&t=1&bdr%5B%5D=1&pt=120000"],
    "maxListingsPerSearch": 30,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("highbrow_fame/propertyfinder-properties").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchUrls": [
    "https://www.propertyfinder.ae/en/search?c=2&l=50&t=1&bdr%5B%5D=1&pt=120000"
  ],
  "maxListingsPerSearch": 30,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call highbrow_fame/propertyfinder-properties --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,highbrow_fame/propertyfinder-properties"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/gkBSPYODDWDYsZaJG/builds/xmHyy37MFZsa3ST2W/openapi.json
