# Propertyfinder Real Estate Scraper (`scrapeai/propertyfinder-real-estate-scraper`) Actor

Scrape Propertyfinder.ae to crawl millions of sale/rent real estate properties from UAE Our real estate scraper also lets you monitor specific listing for new updates/listing. You can provide multiple search result listings to scrape/monitor properties in Dubai, Abu Dhabi, Sharjah, Ajman and more

- **URL**: https://apify.com/scrapeai/propertyfinder-real-estate-scraper.md
- **Developed by:** [ScrapeAI](https://apify.com/scrapeai) (community)
- **Categories:** E-commerce, Developer tools, Real estate
- **Stats:** 14 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $2.49 / 1,000 results

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/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 Real Estate Properties Scraper

This Propertyfinder properties scraper enables you to scrape any sale/rent listing from Propertyfinder.ae. You can simply take your listing URL from the browser and enter it into this actor. This actor will crawl through all pages of the particular listing and generate a dataset for you.

### What can this Propertyfinder Scraper do?

- Scrape property listings from Propertyfinder.ae for both sale and rent categories
- Extract detailed property information including price, location, features, agent details, and more
- Handle multiple listing URLs and individual property URLs
- Support monitoring mode for tracking property changes
- Enable delisting tracker to monitor removed listings
- Retrieve full property details or basic information based on configuration
- Extract agent and broker information with contact details
- Gather property images, descriptions, and similar transaction data
- Support multi-threading for faster scraping

### How do I start scraping with this scraper?

1. Open the actor in Apify Console
2. Click "Try actor" or create a new task
3. Configure the input parameters (see Input Configuration below)
4. Run the actor
5. Download your scraped data in JSON, CSV, or Excel format

### Input Configuration

You can customize the actor using the following input fields:

```json
{
  "listUrls": [
    {
      "url": "https://www.propertyfinder.ae/en/search?c=2&ob=nd&page=1&rp=y"
    }
  ],
  "propertyUrls": [
    {
      "url": "https://www.propertyfinder.ae/en/platinum/properties-for-sale-dubai-marina-vista-tower-2-bedrooms-apartment-123456.html"
    }
  ],
  "threads": 3,
  "fullPropertyDetails": true,
  "retrieveUnitNumber": false,
  "monitoringMode": false,
  "enableDelistingTracker": false,
  "addEmptyTrackerRecord": false
}
```

#### Fields Explained

- **listUrls**: Array of list URLs to scrape (e.g., search result pages)
- **propertyUrls**: Array of individual property URLs to scrape
- **threads**: Number of threads to use for concurrent scraping (default: 3)
- **fullPropertyDetails**: Whether to retrieve complete property details (default: true)
- **retrieveUnitNumber**: Whether to retrieve unit numbers (default: false)
- **monitoringMode**: Enable monitoring mode for tracking changes (default: false)
- **enableDelistingTracker**: Enable tracking of delisted properties (default: false)
- **addEmptyTrackerRecord**: Add empty records for tracking purposes (default: false)

### Output

The actor returns a dataset containing structured property listings. Each record includes comprehensive details about the property, suitable for real estate analysis, lead generation, or market research.

#### Sample Output

```json
[
  {
    "id": "123456",
    "url": "https://www.propertyfinder.ae/en/platinum/properties-for-sale-dubai-marina-vista-tower-2-bedrooms-apartment-123456.html",
    "title": "2 Bedrooms Apartment in Dubai Marina Vista Tower",
    "displayAddress": "Dubai Marina, Dubai",
    "bathrooms": 2,
    "bedrooms": 2,
    "addedOn": "2023-10-15",
    "broker": "Platinum Real Estate",
    "agent": "John Smith",
    "agentPhone": "+971501234567",
    "verified": true,
    "reference": "REF123456",
    "permit_number": "123456789",
    "agentBrn": "BRN123456",
    "freehold": true,
    "completionDate": "2022-06-01",
    "priceDuration": "sale",
    "propertyAge": 1,
    "propertyType": "Apartment",
    "price": 2500000,
    "coordinates": {
      "latitude": 25.0780,
      "longitude": 55.1350
    },
    "type": "sale",
    "sizeMin": "1200 sqft",
    "furnishing": "Furnished",
    "features": ["Balcony", "Parking", "Gym"],
    "agentInfo": {
      "id": "agent123",
      "image": "https://example.com/agent.jpg",
      "is_super_agent": true,
      "name": "John Smith",
      "user_id": 12345,
      "email": "john@example.com",
      "social": "https://linkedin.com/in/johnsmith",
      "languages": ["English", "Arabic"],
      "slug": "john-smith",
      "avg_whatsapp_response_time": 300,
      "total_properties": 150,
      "position": "Senior Agent",
      "years_of_experience": 8
    },
    "brokerInfo": {
      "id": "broker123",
      "logo": "https://example.com/logo.png",
      "name": "Platinum Real Estate",
      "address": "Dubai, UAE",
      "email": "info@platinum.com",
      "phone": "+971501234567",
      "slug": "platinum-real-estate",
      "total_properties": 500,
      "license_number": "LIC123456",
      "is_exclusive": false
    },
    "description": "Beautiful 2-bedroom apartment in Dubai Marina with stunning views...",
    "descriptionHTML": "<p>Beautiful 2-bedroom apartment in Dubai Marina with stunning views...</p>",
    "images": [
      "https://example.com/image1.jpg",
      "https://example.com/image2.jpg"
    ],
    "similarTransactions": {
      "buy": [
        {
          "amount": 2400000,
          "date": "2023-08-15",
          "size": 1150
        }
      ],
      "rent": [
        {
          "price": 120000,
          "date": "2023-09-01",
          "size": 1200
        }
      ]
    }
  }
]
```

### Tech Stack

- **Apify SDK** — for actor and data handling
- **Crawlee** — for robust crawling and scraping
- **Puppeteer** — for browser automation and rendering dynamic content
- **Node.js** — fast, scalable backend environment

### Proxy Configuration

This actor uses Apify Proxy automatically to:

- Avoid IP-based rate limiting or bans
- Access location-specific Propertyfinder data
- Ensure stable scraping at scale

Default proxy settings use:

```json
{
  "useApifyProxy": true,
  "apifyProxyGroups": ["RESIDENTIAL"],
  "apifyProxyCountry": "AE"
}
```

### Advanced Input Example

````json
{
  "listUrls": [
    {
      "url": "https://www.propertyfinder.ae/en/search?c=2&ob=nd&page=1&rp=y"
    }
  ],
  "threads": 5,
  "fullPropertyDetails": true,
  "monitoringMode": true,
  "enableDelistingTracker": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "AE"
  },
  "maxConcurrency": 5,
  "minDelayBetweenRequestsMs": 1000,
  "maxRequestRetries": 3,
  "requestHandlerTimeoutSecs": 60
}



# Actor input Schema

## `listUrls` (type: `array`):

Array of list URLs to scrape
## `propertyUrls` (type: `array`):

Array of property URLs to scrape
## `threads` (type: `number`):

Number of threads to use
## `fullPropertyDetails` (type: `boolean`):

Whether to retrieve full property details
## `retrieveUnitNumber` (type: `boolean`):

Whether to retrieve unit number
## `monitoringMode` (type: `boolean`):

Enable monitoring mode
## `enableDelistingTracker` (type: `boolean`):

Enable delisting tracker
## `addEmptyTrackerRecord` (type: `boolean`):

Add empty tracker record
## `maxItems` (type: `number`):

Maximum number of items to scrape

## Actor input object example

```json
{
  "threads": 3,
  "fullPropertyDetails": true,
  "retrieveUnitNumber": false,
  "monitoringMode": false,
  "enableDelistingTracker": false,
  "addEmptyTrackerRecord": false,
  "maxItems": 0
}
````

# 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("scrapeai/propertyfinder-real-estate-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("scrapeai/propertyfinder-real-estate-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 '{}' |
apify call scrapeai/propertyfinder-real-estate-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapeai/propertyfinder-real-estate-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/L9KenStO5gSvEDnmb/builds/FnwTmiYZcR9lsTxOQ/openapi.json
