# Property Finder Scraper — UAE & MENA Listings (`khadinakbar/propertyfinder-scraper`) Actor

Extract public Property Finder search and property-page listings into structured data for market research, comparables, and property monitoring. Use a Property Finder URL; returns price, size, location, agent, broker, media, and verification fields. $0.004/listing plus usage.

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

## Pricing

from $4.00 / 1,000 property listing returneds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### What this Property Finder Scraper does

This actor extracts **public Property Finder listings** from supplied search-result or individual property URLs. It returns a stable, analysis-ready record for each property: listing ID and URL, price, bedrooms, bathrooms, size, location, coordinates, public agent and broker details, amenities, media URLs, verification status, and timestamps.

Use it for UAE and supported MENA Property Finder domains (`.ae`, `.sa`, `.qa`, `.eg`, and `.bh`) when you need repeatable comparables, inventory tracking, price monitoring, or a structured input to an AI workflow. Do not use it to access account-only content, submit enquiries, or bypass the target site's access controls.

### When to use it

- Build a time-stamped dataset of public listings in a community or city.
- Compare prices, size, and price-per-area across a saved Property Finder search.
- Monitor supplied public property URLs for availability and advertised price changes.
- Feed public listing metadata into a research, valuation, or CRM-enrichment workflow.

The actor is URL-led by design: configure filters and sort order on [Property Finder](https://www.propertyfinder.ae/), then paste that exact URL. It respects your bounded `maxResults` and `maxPages` settings. Results are not a substitute for an appraisal, ownership check, or legal due diligence.

### Input

`startUrls` is required. Add one or more public Property Finder search URLs or individual property URLs. The default is a Dubai apartment search. Set `maxResults` (1–250, default 25) as both a result cap and predictable event-charge cap. Set `maxPages` (1–20, default 1) to paginate each search URL; individual property URLs are fetched once.

```json
{
  "startUrls": [
    { "url": "https://www.propertyfinder.ae/en/buy/dubai/apartments-for-sale.html" }
  ],
  "maxResults": 25,
  "maxPages": 1
}
```

### Output

Each dataset item is one public property listing. Core fields include `id`, `url`, `title`, `price`, `currency`, `bedrooms`, `bathrooms`, `size`, `location`, `city`, `community`, `latitude`, `longitude`, `agentName`, `brokerName`, `amenities`, `imageUrls`, `isVerified`, `sourceUrl`, and `scrapedAt`.

```json
{
  "id": "113717397",
  "title": "Fully Upgraded Unit | On High Floor | Canal View",
  "price": 2200000,
  "currency": "AED",
  "bedrooms": 3,
  "size": 1350,
  "sizeUnit": "sqft",
  "location": "Bayz by Danube, Business Bay, Dubai",
  "isVerified": true
}
```

Download the default dataset as JSON, CSV, Excel, or HTML. The default key-value store also has `OUTPUT` (the compact terminal result) and `RUN_SUMMARY` (diagnostics, processed-page counts, and warnings). A valid no-match run succeeds with `VALID_EMPTY`; a target outage with no useful data fails honestly as `UPSTREAM_FAILED`.

### Pricing

This actor uses **Pay per event + platform usage**. It charges $0.00005 once at start and **$0.004 for each validated property listing saved**. `maxResults` is the maximum number of billable listing events, so a default 25-result run has an event-charge ceiling of $0.10005, plus Apify platform usage. No listing is charged until it has been validated and written to the dataset.

### Tips and limitations

Start with a small, one-page run when using a new URL. Search pages are fetched over HTTP from server-rendered Property Finder data, avoiding browser-selector fragility; Property Finder may still change its response shape or restrict a request. If useful results were saved before a recoverable error, the actor returns `PARTIAL` and records the reason in `RUN_SUMMARY`.

Use only data you are entitled to collect and process. Check applicable law, the target site's terms, and your data-protection obligations before using personal data. For feedback, open an issue on the actor page with a sanitized URL and run ID; never include credentials or private addresses.

# Actor input Schema

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

Use this when you have a public Property Finder search-result page or an individual property page to scrape. Enter full URLs such as 'https://www.propertyfinder.ae/en/buy/dubai/apartments-for-sale.html'. The actor accepts up to 20 URLs and extracts public data only. This is not a generic website URL field; use only propertyfinder.ae, .sa, .qa, .eg, or .bh URLs.

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

Use this to cap the number of validated property records saved to the dataset. Enter a whole number from 1 to 250; the default is 25. Each saved listing is billed as one listing-returned event at $0.004, so this is also your event-cost cap. This does not change Property Finder's own filters or ranking.

## `maxPages` (type: `integer`):

Use this to bound pagination for each supplied search-result URL. Enter a whole number from 1 to 20; the default is 1. The actor stops sooner when maxResults is reached or Property Finder has no more pages. This does not apply to a single property detail URL, which is fetched once.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.propertyfinder.ae/en/buy/dubai/apartments-for-sale.html"
  ],
  "maxResults": 25,
  "maxPages": 2
}
```

# Actor output Schema

## `listings` (type: `string`):

Structured Property Finder listings, one row per property.

## `output` (type: `string`):

Compact terminal outcome and item count for API and agent callers.

## `runSummary` (type: `string`):

Detailed diagnostic record with processed pages, warnings, and billing counters.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.propertyfinder.ae/en/buy/dubai/apartments-for-sale.html"
        }
    ],
    "maxResults": 25,
    "maxPages": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/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 = {
    "startUrls": [{ "url": "https://www.propertyfinder.ae/en/buy/dubai/apartments-for-sale.html" }],
    "maxResults": 25,
    "maxPages": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/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 '{
  "startUrls": [
    {
      "url": "https://www.propertyfinder.ae/en/buy/dubai/apartments-for-sale.html"
    }
  ],
  "maxResults": 25,
  "maxPages": 1
}' |
apify call khadinakbar/propertyfinder-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/n8uVNhyjBUUtqkHIv/builds/uTydCLJpSFMimuQeU/openapi.json
