# UAE Real Estate Scraper (`jimmy-o/uae-real-estate-listings`) Actor

Property listings for sale and rent across all UAE emirates from PropertyFinder (residential + commercial). Structured prices, areas, price-per-sqft, agencies. Sitemap-based, robots-compliant, no proxies. Free while in launch promo.

- **URL**: https://apify.com/jimmy-o/uae-real-estate-listings.md
- **Developed by:** [Omar Gamal](https://apify.com/jimmy-o) (community)
- **Categories:** Real estate
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

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

## UAE Real Estate Scraper

The UAE Real Estate Scraper collects and structures property listings from
**PropertyFinder UAE** - for sale and rent, all emirates (Dubai, Abu Dhabi,
Sharjah, Ajman, Ras Al Khaimah, Fujairah, Umm Al Quwain, Al Ain), residential
and commercial.

The actor discovers listings via the portal's published XML sitemaps and
retrieves listing pages with polite, sequential requests using a
self-identifying agent. It never touches disallowed search paths and never
uses proxies. **Free while in launch promo.**

### Output per listing

Title, price with currency and billing period, computed price per sqft,
bedrooms, bathrooms, area (original units + converted sqft),
building/community/city, property type, agency (business) name where the
portal publishes it, posting date, and the listing URL.

An **agencies** output mode produces one record per real-estate agency instead:
business name, office address/city, business phone/email, listing counts, top
areas and property types. Business info only.

### Example

Emirate `dubai`, purpose `rent`, max listings 30: thirty current Dubai rental
listings with prices in AED/year, price per sqft, beds/baths, building and
community - e.g. a 2BR in Dubai Marina at 130,000 AED/year.

### Use cases

- Market research on UAE property (sale and rent)
- Price monitoring and trend analysis
- Agency landscape and lead lists at the business level

### FAQ

**Which sites?** PropertyFinder.ae only, via its public sitemaps. Saudi Arabia
is covered by the sibling actor below.
**Proxies?** None needed and none used - the actor respects the portal's
robots.txt and rate-limits itself.
**Agent contact details?** Individual agent names, phones and emails are never
stored - only agency (business) data exactly as the portal publishes it.

### Cost

The actor is free. A 500-listing run uses a few cents of Apify compute; a
30-listing test costs about $0.003.

### More free scrapers from jimmy-o

- [Saudi Real Estate Scraper](https://apify.com/jimmy-o/saudi-real-estate-listings)
- [Facebook Ads Library Scraper](https://apify.com/jimmy-o/facebook-ads-library)
- [Reddit Scraper](https://apify.com/jimmy-o/reddit-scraper)
- [YouTube Scraper](https://apify.com/jimmy-o/youtube-scraper)

# Actor input Schema

## `outputMode` (type: `string`):

'listings' = one record per property listing; 'agencies' = one record per real-estate agency (business info only; propertyfinder source only).

## `emirate` (type: `string`):

Which emirate's listings to collect.

## `purpose` (type: `string`):

Rent or buy listings.

## `includeCommercial` (type: `boolean`):

PropertyFinder only: use commercial-property sitemaps instead of residential.

## `maxCollections` (type: `integer`):

PropertyFinder only: how many sitemap collection pages to fetch (each holds several listings).

## `maxListings` (type: `integer`):

Stop after collecting this many listings.

## Actor input object example

```json
{
  "outputMode": "listings",
  "emirate": "dubai",
  "purpose": "rent",
  "includeCommercial": false,
  "maxCollections": 20,
  "maxListings": 500
}
```

# Actor output Schema

## `results` (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 = {
    "outputMode": "listings",
    "emirate": "dubai",
    "purpose": "rent"
};

// Run the Actor and wait for it to finish
const run = await client.actor("jimmy-o/uae-real-estate-listings").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 = {
    "outputMode": "listings",
    "emirate": "dubai",
    "purpose": "rent",
}

# Run the Actor and wait for it to finish
run = client.actor("jimmy-o/uae-real-estate-listings").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 '{
  "outputMode": "listings",
  "emirate": "dubai",
  "purpose": "rent"
}' |
apify call jimmy-o/uae-real-estate-listings --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jimmy-o/uae-real-estate-listings"
        }
    }
}
```

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/hIrQJ3DMrNpwsn1Sj/builds/mDzMbdyXR5UMSHqL8/openapi.json
