# PropertyFinder Scraper (`mina_safwat/propertyfinder-scraper`) Actor

Scrapes PropertyFinder listings — price, size, bedrooms, location, agent and broker contacts — across the UAE, Egypt, Qatar, Bahrain and Saudi Arabia.

- **URL**: https://apify.com/mina\_safwat/propertyfinder-scraper.md
- **Developed by:** [Mina](https://apify.com/mina_safwat) (community)
- **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/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

## PropertyFinder Scraper

Collect property listings from PropertyFinder — the UAE, Egypt, Qatar, Bahrain
and Saudi Arabia — with prices, sizes, locations and the contact details of the
agent and agency behind each one.

### How to use it

1. Go to PropertyFinder and search for what you want. Narrow it down with the
   filters on the page — city, buy or rent, price range, bedrooms, property
   type, furnishing, completion status, whatever matters to you.
2. Copy the address from your browser's address bar.
3. Paste it into **PropertyFinder search links** and run the Actor.

Every filter you set is respected, because the Actor simply follows the link you
give it. You can paste several links at once, one per line, and they can be from
different countries — a Dubai search and a Cairo search will run in the same job
and land in the same results table.

Set **Max results per search** to control how far each link is followed.

### What you get

For every listing:

- Price, currency, and whether it is a sale price or a yearly rent
- Price per square foot or square metre
- Bedrooms, bathrooms, and floor size with its unit
- Property type, furnishing, and whether it is ready or off-plan
- Full location, city, and map coordinates
- Amenities in plain words
- Agent name, phone, email and languages spoken
- Agency name and phone
- Listing date, reference number, photos and the full description
- A direct link back to the listing

Turn on **Include new developments** to also collect the off-plan projects
PropertyFinder advertises alongside ordinary listings. These are priced from a
starting figure and carry a developer name rather than an agent.

### What you can do with it

- Track asking prices in a neighbourhood over time by running it on a schedule
- Build a lead list of active agents and agencies in a given area
- Compare rents against sale prices to estimate yields
- Watch for new listings that match a very specific brief
- Feed a valuation or market-report model with real current asking prices

### Good to know

Results are limited to what PropertyFinder itself shows for your search. If a
search returns tens of thousands of matches, the site will not page through all
of them — narrow the search with filters and run several links instead.

Some listings hide their price on the site; those come through with an empty
price rather than a zero.

# Actor input Schema

## `search_urls` (type: `array`):

Search links, one per line. Search on PropertyFinder with whatever filters you want — city, price, bedrooms, property type, furnishing, completion status — then copy the address bar. Every filter in the link is honoured, and the country is taken from the link too, so you can mix the UAE, Egypt, Qatar, Bahrain and Saudi sites in one run.

## `max_results_per_search` (type: `integer`):

Stops after this many listings for each link. PropertyFinder shows about 25 per page.

## `include_new_projects` (type: `boolean`):

Also collect the off-plan developments PropertyFinder advertises alongside the listings. These are priced "from" a starting figure and have a developer instead of an agent.

## `proxy_country` (type: `string`):

A 2-letter country code. Leave empty and each search runs from an address in its own country.

## Actor input object example

```json
{
  "search_urls": [
    "https://www.propertyfinder.ae/en/search?c=1&t=1",
    "https://www.propertyfinder.eg/en/search?c=2"
  ],
  "max_results_per_search": 200,
  "include_new_projects": false
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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 = {
    "search_urls": [
        "https://www.propertyfinder.ae/en/search?c=1&t=1",
        "https://www.propertyfinder.eg/en/search?c=2"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("mina_safwat/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 = { "search_urls": [
        "https://www.propertyfinder.ae/en/search?c=1&t=1",
        "https://www.propertyfinder.eg/en/search?c=2",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("mina_safwat/propertyfinder-scraper").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 '{
  "search_urls": [
    "https://www.propertyfinder.ae/en/search?c=1&t=1",
    "https://www.propertyfinder.eg/en/search?c=2"
  ]
}' |
apify call mina_safwat/propertyfinder-scraper --silent --output-dataset

```

## MCP server setup

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

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/338y5VF4ZAxIPcV5j/builds/qHY4QaOAffbhc44wM/openapi.json
