# Dubizzle UAE $1💰 Property, Motors & Agent Listings (`abotapi/dubizzle-com-scraper`) Actor

From $1/1K. Scrape dubizzle.com across the UAE for property, motors, and agent listings. Search by filters or URLs with auto pagination. Returns price, beds, baths, area, agent/agency contacts, WhatsApp, email, GPS, photos, amenities, verification, and Dubai Land Department history.

- **URL**: https://apify.com/abotapi/dubizzle-com-scraper.md
- **Developed by:** [AbotAPI](https://apify.com/abotapi) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 listing results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Dubizzle.com Scraper - UAE Property, Cars and Agents

Extract listings from dubizzle.com across the UAE (Dubai, Abu Dhabi, Sharjah, Ras Al Khaimah, Ajman, Fujairah, Umm Al Quwain, Al Ain). Pull property for sale and rent, used cars (motors), and the property agents directory, with full agent contact details, GPS coordinates, photo galleries, amenities, verification status, and (for Dubai property) Dubai Land Department transaction history. Two ways to drive it: pick a city and filters, or paste any Dubizzle URL you already refined in a browser.

### Why this scraper

- Covers four sections from one actor: property for sale, property for rent, motors (used cars), and the agents directory.
- Search mode builds the URL for you (city, section, property type, price, bedrooms, area, furnishing, completion status, sort), so you do not need to craft links by hand.
- Sort control built in: popular, newest, oldest, price low to high, price high to low, verified first.
- Returns every field on each listing card, including the full nested agent, agency and contact objects, so nothing is dropped.
- Optional detail mode adds the full description, categorized amenities, agent email, permit numbers, the full photo gallery, and the Dubai Land Department transaction history for Dubai property.
- Auto forward pagination with a single, predictable result cap.
- Lat/lng, agent phone and WhatsApp are already on the card, so a fast run without detail mode still gives you geocoded, contactable listings.

### Data you get

> Sample shape: values are illustrative placeholders, not from a live listing.

| Field | Example |
|---|---|
| id | 00000001 |
| url | https://dubai.dubizzle.com/property-for-sale/residential/apartment/2026/1/1/sample-0/ |
| title | Sample Listing Title |
| price | 1500000 |
| currency | AED |
| section | property-for-sale |
| categorySlug | apartment |
| bedrooms | 2 |
| bathrooms | 2 |
| area | 1200 |
| areaUnit | sqft |
| city | Dubai |
| neighborhood | Sample Community |
| latitude | 25.0000 |
| longitude | 55.0000 |
| isVerified | true |
| agentName | Agent Name |
| agencyName | Sample Agency |
| phoneNumber | +971500000000 |
| whatsapp | +971500000000 |
| addedOn | 1700000000 |
| propertyReference | REF-0001 |
| hasDldHistory | true |
| photosCount | 12 |
| raw | { complete source listing object } |
| description | Full description text appears here when detail mode is on. |
| amenities | [ categorized amenities, detail mode only ] |
| email | agent@example.com |
| dldHistory | [ Dubai Land Department transactions, detail mode only ] |

### How to use

Search mode, basic:

```json
{
  "mode": "search",
  "locations": ["dubai"],
  "section": "property-for-sale",
  "propertyType": "residential",
  "maxListings": 20
}
````

Search mode with filters and sort:

```json
{
  "mode": "search",
  "locations": ["dubai", "abu-dhabi"],
  "section": "property-for-rent",
  "propertyType": "apartment",
  "minPrice": 50000,
  "maxPrice": 150000,
  "minBedrooms": 1,
  "maxBedrooms": 2,
  "furnishing": "furnished",
  "sortBy": "newest",
  "maxListings": 50
}
```

Motors (used cars):

```json
{
  "mode": "search",
  "locations": ["dubai"],
  "section": "motors",
  "maxListings": 30
}
```

URL mode, multiple links:

```json
{
  "mode": "url",
  "urls": [
    "https://dubai.dubizzle.com/en/property-for-sale/residential/",
    "https://uae.dubizzle.com/en/property-agents/"
  ],
  "maxPages": 3,
  "maxListings": 100
}
```

Detail mode with Dubai Land Department history:

```json
{
  "mode": "search",
  "locations": ["dubai"],
  "section": "property-for-sale",
  "fetchDetails": true,
  "includeDldHistory": true,
  "maxListings": 10
}
```

### Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| mode | string | search | "search" builds the URL from filters; "url" scrapes pasted URLs. |
| locations | array | \["dubai"] | City slugs (dubai, abu-dhabi, sharjah, ras-al-khaimah, ajman, fujairah, umm-al-quwain, al-ain). Search mode. |
| section | string | property-for-sale | property-for-sale, property-for-rent, motors, or property-agents. Search mode. |
| propertyType | string | residential | Property sub-type for the property sections. Search mode. |
| minPrice / maxPrice | integer | empty | Price bounds in AED. Search mode. |
| minBedrooms / maxBedrooms | integer | empty | Bedroom bounds. Property sections. |
| minArea / maxArea | integer | empty | Built-up area bounds in sqft. Property sections. |
| furnishing | string | any | any, furnished, unfurnished. Property sections. |
| completionStatus | string | any | any, completed, off-plan. Property sections. |
| sortBy | string | popular | popular, newest, oldest, price-asc, price-desc, verified. Search mode. |
| urls | array | example URL | Full Dubizzle URLs. URL mode. Filter fields are ignored here. |
| maxPages | integer | 500 | Upper bound on pages per search. The run stops at Max listings, not here. |
| maxListings | integer | 20 | The single result cap. 0 = unlimited (bounded by Max pages). |
| fetchDetails | boolean | false | Visit each listing's detail page for the full record. |
| includeDldHistory | boolean | true | In detail mode, also pull Dubai Land Department history for Dubai property. |
| proxy | object | Residential AE | Proxy configuration. Residential, country AE recommended. |

### Output example

> Sample shape: values are illustrative placeholders, not from a live listing.

```json
{
  "id": "00000001",
  "url": "https://dubai.dubizzle.com/property-for-sale/residential/apartment/2026/1/1/sample-0/",
  "title": "Sample Listing Title",
  "price": 1500000,
  "currency": "AED",
  "section": "property-for-sale",
  "categorySlug": "apartment",
  "bedrooms": 2,
  "bathrooms": 2,
  "area": 1200,
  "areaUnit": "sqft",
  "city": "Dubai",
  "neighborhood": "Sample Community",
  "latitude": 25.0000,
  "longitude": 55.0000,
  "isVerified": true,
  "agentName": "Agent Name",
  "agencyName": "Sample Agency",
  "phoneNumber": "+971500000000",
  "whatsapp": "+971500000000",
  "addedOn": 1700000000,
  "propertyReference": "REF-0001",
  "hasDldHistory": true,
  "photosCount": 12,
  "raw": { "external_id": 1, "name": { "en": "Sample Listing Title" } }
}
```

### Send results into your apps (MCP connectors)

Optionally pipe results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify, Settings, Integrations, then select it in the input. Notion gets a page per item; other connectors get a best-effort write. The connector receives a condensed, human-readable summary per item (title plus key fields), not the full JSON. The complete record always stays in the Apify dataset. Set notionParentPageUrl when using Notion. Leave the field empty to skip; it never changes the dataset output. Supported: Notion, Linear, Airtable, Apify.

### Plan requirement

Dubizzle serves data most reliably to UAE residential connections. Use Apify Residential proxy with country AE (Starter plan or higher includes Residential proxy access). Datacenter proxies and free-tier accounts often return few or no items; the actor prints a clear warning at run start when it is not on residential. You can also supply your own residential gateway through the BACKUP\_PROXY\_URL secret.

# Actor input Schema

## `mode` (type: `string`):

Search mode = pick city + section + filters below and the scraper builds the URL for you. URL mode = paste any dubizzle.com listing URL(s) you already refined in a browser. URL mode supports multiple URLs and walks pagination forward from each.

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

One or more UAE city slugs as Dubizzle writes them in the URL: 'dubai', 'abu-dhabi', 'sharjah', 'ras-al-khaimah', 'ajman', 'fujairah', 'umm-al-quwain', 'al-ain'. For sub-areas use the city slug; refine further with neighborhood in URL mode.

## `section` (type: `string`):

Which Dubizzle vertical to search. Property for sale / rent, used motors (cars), or property agents directory.

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

Property sub-type. 'residential' includes everything residential. Applies only to the property sections.

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

Minimum price filter in AED. Leave empty for no minimum. Search mode only.

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

Maximum price filter in AED. Leave empty for no maximum. Search mode only.

## `minBedrooms` (type: `integer`):

Minimum bedrooms (0 = studio). Property sections only.

## `maxBedrooms` (type: `integer`):

Maximum bedrooms. Property sections only.

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

Minimum built-up area in square feet. Property sections only.

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

Maximum built-up area in square feet. Property sections only.

## `furnishing` (type: `string`):

Furnishing filter. Property sections only.

## `completionStatus` (type: `string`):

Completed = ready to move in. Off-plan = under construction / pre-launch. Property sections only.

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

How to order results. Search mode only - in URL mode the sort is taken from your pasted URL.

## `urls` (type: `array`):

One or more full dubizzle.com URLs (property, motors, or agents). Multi-URL supported - each URL is scraped independently with forward pagination. Filter-mode fields (city, section, price, beds, etc.) are IGNORED in URL mode - paste the URL exactly as Dubizzle produced it, including any filters. If your URL ends with `?page=N` scraping starts at page N and walks forward.

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

Upper bound on result pages walked per location / URL. Dubizzle returns ~35 listings per page. Left wide-open by default - the run stops at Max listings, not here. Raise Max listings for bigger sweeps.

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

The single cap on this run. Default 20 keeps first runs cheap and fast. Set 0 for unlimited (then the run stops at Max pages).

## `fetchDetails` (type: `boolean`):

Adds the full description, categorized amenities, agent email + agency license, the full photo gallery (vs SERP cover photo only), RERA/Trakheesi permit, off-plan payment plans, and (for Dubai property) the Dubai Land Department transaction history. Turn off for a faster, cheaper run with just the SERP fields (which already include lat/lng, agent phone, WhatsApp, and basic agency info). Each detail page is an extra fetch, so this run costs a per-item surcharge when enabled.

## `includeDldHistory` (type: `boolean`):

When detail mode is on, also pull the Dubai Land Department transaction history for Dubai property listings (past sale prices and dates for the building). Ignored when detail mode is off or for non-Dubai listings.

## `proxy` (type: `object`):

Apify residential proxy with country=AE is strongly recommended. Datacenter proxies and free-tier accounts often return empty pages; residential UAE IPs give the most reliable results. The scraper rotates the exit IP and refreshes its session automatically on rejection.

## `mcpConnectors` (type: `array`):

Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON - the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).

## `notionParentPageUrl` (type: `string`):

URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.

## `maxNotifyListings` (type: `integer`):

Cap on items written to each connector per run. Does not affect the dataset.

## Actor input object example

```json
{
  "mode": "search",
  "locations": [
    "dubai"
  ],
  "section": "property-for-sale",
  "propertyType": "residential",
  "furnishing": "any",
  "completionStatus": "any",
  "sortBy": "popular",
  "urls": [
    "https://dubai.dubizzle.com/en/property-for-sale/residential/"
  ],
  "maxPages": 500,
  "maxListings": 20,
  "fetchDetails": false,
  "includeDldHistory": true,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "AE"
  },
  "maxNotifyListings": 50
}
```

# Actor output Schema

## `overview` (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 = {
    "locations": [
        "dubai"
    ],
    "urls": [
        "https://dubai.dubizzle.com/en/property-for-sale/residential/"
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "AE"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/dubizzle-com-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 = {
    "locations": ["dubai"],
    "urls": ["https://dubai.dubizzle.com/en/property-for-sale/residential/"],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "AE",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("abotapi/dubizzle-com-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 '{
  "locations": [
    "dubai"
  ],
  "urls": [
    "https://dubai.dubizzle.com/en/property-for-sale/residential/"
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "AE"
  }
}' |
apify call abotapi/dubizzle-com-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Dubizzle UAE $1💰 Property, Motors & Agent Listings",
        "description": "From $1/1K. Scrape dubizzle.com across the UAE for property, motors, and agent listings. Search by filters or URLs with auto pagination. Returns price, beds, baths, area, agent/agency contacts, WhatsApp, email, GPS, photos, amenities, verification, and Dubai Land Department history.",
        "version": "1.0",
        "x-build-id": "20uyz47JRPIBVigNz"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/abotapi~dubizzle-com-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-abotapi-dubizzle-com-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/abotapi~dubizzle-com-scraper/runs": {
            "post": {
                "operationId": "runs-sync-abotapi-dubizzle-com-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/abotapi~dubizzle-com-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-abotapi-dubizzle-com-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "url"
                        ],
                        "type": "string",
                        "description": "Search mode = pick city + section + filters below and the scraper builds the URL for you. URL mode = paste any dubizzle.com listing URL(s) you already refined in a browser. URL mode supports multiple URLs and walks pagination forward from each.",
                        "default": "search"
                    },
                    "locations": {
                        "title": "Cities / areas to search",
                        "type": "array",
                        "description": "One or more UAE city slugs as Dubizzle writes them in the URL: 'dubai', 'abu-dhabi', 'sharjah', 'ras-al-khaimah', 'ajman', 'fujairah', 'umm-al-quwain', 'al-ain'. For sub-areas use the city slug; refine further with neighborhood in URL mode.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "section": {
                        "title": "Section to scrape (Search mode)",
                        "enum": [
                            "property-for-sale",
                            "property-for-rent",
                            "motors",
                            "property-agents"
                        ],
                        "type": "string",
                        "description": "Which Dubizzle vertical to search. Property for sale / rent, used motors (cars), or property agents directory.",
                        "default": "property-for-sale"
                    },
                    "propertyType": {
                        "title": "Property type (Search mode, property sections)",
                        "enum": [
                            "residential",
                            "apartment",
                            "villa",
                            "townhouse",
                            "penthouse",
                            "compound",
                            "duplex",
                            "land",
                            "floor",
                            "building",
                            "commercial"
                        ],
                        "type": "string",
                        "description": "Property sub-type. 'residential' includes everything residential. Applies only to the property sections.",
                        "default": "residential"
                    },
                    "minPrice": {
                        "title": "Min price (AED)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum price filter in AED. Leave empty for no minimum. Search mode only."
                    },
                    "maxPrice": {
                        "title": "Max price (AED)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum price filter in AED. Leave empty for no maximum. Search mode only."
                    },
                    "minBedrooms": {
                        "title": "Min bedrooms",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Minimum bedrooms (0 = studio). Property sections only."
                    },
                    "maxBedrooms": {
                        "title": "Max bedrooms",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum bedrooms. Property sections only."
                    },
                    "minArea": {
                        "title": "Min area (sqft)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum built-up area in square feet. Property sections only."
                    },
                    "maxArea": {
                        "title": "Max area (sqft)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum built-up area in square feet. Property sections only."
                    },
                    "furnishing": {
                        "title": "Furnishing (Search mode)",
                        "enum": [
                            "any",
                            "furnished",
                            "unfurnished"
                        ],
                        "type": "string",
                        "description": "Furnishing filter. Property sections only.",
                        "default": "any"
                    },
                    "completionStatus": {
                        "title": "Completion status (Search mode)",
                        "enum": [
                            "any",
                            "completed",
                            "off-plan"
                        ],
                        "type": "string",
                        "description": "Completed = ready to move in. Off-plan = under construction / pre-launch. Property sections only.",
                        "default": "any"
                    },
                    "sortBy": {
                        "title": "Sort order (Search mode)",
                        "enum": [
                            "popular",
                            "newest",
                            "oldest",
                            "price-asc",
                            "price-desc",
                            "verified"
                        ],
                        "type": "string",
                        "description": "How to order results. Search mode only - in URL mode the sort is taken from your pasted URL.",
                        "default": "popular"
                    },
                    "urls": {
                        "title": "Dubizzle URLs (URL mode)",
                        "type": "array",
                        "description": "One or more full dubizzle.com URLs (property, motors, or agents). Multi-URL supported - each URL is scraped independently with forward pagination. Filter-mode fields (city, section, price, beds, etc.) are IGNORED in URL mode - paste the URL exactly as Dubizzle produced it, including any filters. If your URL ends with `?page=N` scraping starts at page N and walks forward.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxPages": {
                        "title": "Max pages per search",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Upper bound on result pages walked per location / URL. Dubizzle returns ~35 listings per page. Left wide-open by default - the run stops at Max listings, not here. Raise Max listings for bigger sweeps.",
                        "default": 500
                    },
                    "maxListings": {
                        "title": "Max total listings",
                        "minimum": 0,
                        "type": "integer",
                        "description": "The single cap on this run. Default 20 keeps first runs cheap and fast. Set 0 for unlimited (then the run stops at Max pages).",
                        "default": 20
                    },
                    "fetchDetails": {
                        "title": "Visit each listing's detail page",
                        "type": "boolean",
                        "description": "Adds the full description, categorized amenities, agent email + agency license, the full photo gallery (vs SERP cover photo only), RERA/Trakheesi permit, off-plan payment plans, and (for Dubai property) the Dubai Land Department transaction history. Turn off for a faster, cheaper run with just the SERP fields (which already include lat/lng, agent phone, WhatsApp, and basic agency info). Each detail page is an extra fetch, so this run costs a per-item surcharge when enabled.",
                        "default": false
                    },
                    "includeDldHistory": {
                        "title": "Include Dubai Land Department history (detail mode)",
                        "type": "boolean",
                        "description": "When detail mode is on, also pull the Dubai Land Department transaction history for Dubai property listings (past sale prices and dates for the building). Ignored when detail mode is off or for non-Dubai listings.",
                        "default": true
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify residential proxy with country=AE is strongly recommended. Datacenter proxies and free-tier accounts often return empty pages; residential UAE IPs give the most reliable results. The scraper rotates the exit IP and refreshes its session automatically on rejection."
                    },
                    "mcpConnectors": {
                        "title": "Pipe results into your apps (optional)",
                        "type": "array",
                        "description": "Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON - the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
                    },
                    "notionParentPageUrl": {
                        "title": "Notion parent page (Notion connector only)",
                        "type": "string",
                        "description": "URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
                    },
                    "maxNotifyListings": {
                        "title": "Max items to export per connector",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Cap on items written to each connector per run. Does not affect the dataset.",
                        "default": 50
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
