# Dubizzle UAE Scraper (`scraptivo/dubizzle-scraper`) Actor

Collect Dubizzle UAE listings across motors, property, jobs, classifieds, and community from URLs, keywords, or category filters.

- **URL**: https://apify.com/scraptivo/dubizzle-scraper.md
- **Developed by:** [Scraptivo](https://apify.com/scraptivo) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.97 / 1,000 listings

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/actors/running/actors-in-store.md#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

**Dubizzle UAE Scraper** collects listings from [Dubizzle](https://uae.dubizzle.com) across motors, property, jobs, classifieds, and community and turns them into structured data for market research, lead generation, and inventory monitoring. Provide a keyword, a category and emirate, or a Dubizzle search / listing URL, then export title, price, city, category, location, and photos to JSON, CSV, or Excel. Use it to watch used-car stock, rentals, and classifieds, and to schedule recurring collection. Pricing starts at **$1.00 per 1,000 listings**, with optional listing details and contact details at the same rate.

### What can you automate with Dubizzle UAE Scraper?

- **Build UAE listing databases** — Search used cars, rentals, jobs, or classifieds and export title, price, city, and category on every row.
- **Monitor a category in one emirate** — Combine `category` and `city` (Dubai, Abu Dhabi, Sharjah, and others) or paste a filtered URL.
- **Attach seller context** — Optionally add longer descriptions, coordinates, and seller or agent phone numbers.
- **Reuse a browser search** — Paste a `dubai.dubizzle.com` or `uae.dubizzle.com` URL; filters already in the URL are kept.
- **Schedule recurring collection** — Run daily or weekly and push new listings into Sheets, a CRM, or an alert workflow.

### Who is this scraper for?

| Team | Workflow |
|---|---|
| Automotive dealers and brokers | Watch used-car asking prices, makes, and seller phones in Dubai or nationwide. |
| Property researchers | Collect residential and commercial rent / sale listings by emirate. |
| Lead-generation agencies | Build classified and community lists with optional contact details. |
| Market researchers | Track listing volume, premium ads, and price bands across Dubizzle verticals. |

### What data can you collect from Dubizzle?

| Data group | Example fields | How it helps |
|---|---|---|
| Listing identity | `listingId`, `url`, `title`, `postedAt`, `section` | Identify each listing and deduplicate across runs with `listingId`. |
| Commercial | `price`, `currency`, `isPriceHidden`, `isPremium`, `isSuperAd` | Compare asking prices and spot paid placements. |
| Location | `city`, `location`, `neighborhoods`, `latitude`, `longitude` | Filter by emirate, neighborhood, and map coordinates. |
| Category attributes | `category`, `attributes`, `photos` | Read vertical-specific fields such as make, year, bedrooms, or size. |
| Seller | `seller`, `phoneNumber`, `whatsappNumber` | Reach the poster when **Scrape contact details** succeeds. |

Search results already include title, price, photos, location, and attributes. Longer descriptions, seller objects, and coordinates appear when **Scrape listing details** is on. Phone, WhatsApp, and email appear only when **Scrape contact details** is on and Dubizzle actually reveals a number.

### How to use Dubizzle UAE Scraper

1. Open the [Dubizzle UAE Scraper](https://apify.com/scraptivo/dubizzle-scraper) on Apify.
2. Enter a keyword such as "toyota", choose a category and city, or paste Dubizzle search / listing URLs.
3. Set **Max items** (Console prefill is 25; `0` means unlimited) and optional price bounds.
4. Run the Actor — it writes one dataset row per listing.
5. Export the dataset or connect it to your workflow.

```json
{
    "searchQueries": ["toyota"],
    "category": "motors/used-cars",
    "city": "dubai",
    "maxItems": 25,
    "maxPages": 1,
    "fetchDetails": false,
    "fetchContactDetails": false,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "AE"
    }
}
```

### Example workflow

#### Build a weekly Dubai used-car list

1. Schedule a Monday run with `searchQueries` = `["toyota land cruiser"]`, `category` = `"motors/used-cars"`, `city` = `"dubai"`, and `maxPages` = `5`.
2. Keep rows inside your price band using `price` (AED) and `attributes.year` / `attributes.kilometers` when present.
3. Enable **Scrape listing details** and **Scrape contact details** on shortlisted inventory when you need coordinates and a phone number.
4. Send new records to Google Sheets or a CRM through a webhook after each run.
5. Deduplicate user-side against the stable `listingId` field.

The Actor does not filter or merge results across runs — those steps happen in your pipeline.

### Automate and integrate your results

- **Schedules** — Run **daily** for fast-moving motors inventory, or **weekly** for property and classified snapshots. Create a separate scheduled task per query, category, and city.
- **Webhooks** — Push completed runs into Google Sheets, Make, Zapier, Slack, or a CRM.
- **Exports and API** — Download JSON, CSV, Excel, or HTML from the Apify Console, or start a run from the API:

```shell
curl -X POST "https://api.apify.com/v2/acts/scraptivo~dubizzle-scraper/runs?token=YOUR-APIFY-TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "searchQueries": ["toyota"],
    "category": "motors/used-cars",
    "city": "dubai",
    "maxItems": 25
  }'
```

Deduplicate user-side with `listingId`.

### Input reference

| Field | Type | Required | Default | What it controls |
|---|---|---:|---|---|
| `startUrls` | array | No | — | Dubizzle search, category, or listing URLs from emirate sites. |
| `searchQueries` | array | No | — | Keywords such as `toyota land cruiser` or `studio marina`. |
| `category` | string | No | `""` | Vertical: motors, used cars, rental cars, jobs, property for rent/sale, classifieds, community. |
| `city` | string | No | `uae` | `uae`, `dubai`, `abu-dhabi`, `sharjah`, `ajman`, `al-ain`, `ras-al-khaimah`, `fujairah`, `umm-al-quwain`. Ignored when a start URL already has a city subdomain. |
| `priceMin` / `priceMax` | integer | No | — | Price bounds in AED. |
| `maxItems` | integer | No | `0` | Cap listings; Console prefill is 25. |
| `maxPages` | integer | No | `0` | Cap result pages per URL or query (25 listings per page). Prefill is 1. |
| `fetchDetails` | boolean | No | `false` | Add longer description, seller, coordinates (`listing-details` event). |
| `fetchContactDetails` | boolean | No | `false` | Reveal phone / WhatsApp / email when present (`contact-details` event only if a number is extracted). |
| `proxyConfiguration` | object | No | Residential AE | Apify proxy settings. UAE residential is recommended. |

Provide `startUrls`, `searchQueries`, or a `category`. Each result page has 25 listings.

### Output example

```json
{
    "listingId": "16927424",
    "url": "https://dubai.dubizzle.com/motors/used-cars/toyota/land-cruiser-70-series/2026/7/31/toyota-land-cruiser-lc-76-lx-2026-gcc-spec-2-297---b1b8f42ceb9148069f95e69e262e24a7/",
    "title": "Toyota Land Cruiser LC 76 LX 2026 GCC Specs DIFF LOCK , WINCH",
    "price": 225000.0,
    "currency": "AED",
    "section": "motors",
    "category": "Used Cars > Toyota > Land Cruiser 70 Series",
    "city": "Dubai",
    "location": "Ras Al Khor Industrial 2, Ras Al Khor Industrial, Ras Al Khor, Dubai, UAE",
    "photosCount": 14,
    "attributes": {
        "make": "Toyota",
        "model": "Land Cruiser 70 Series",
        "year": 2026,
        "kilometers": 0,
        "fuel_type": "Diesel",
        "transmission_type": "Manual Transmission",
        "body_type": "SUV"
    },
    "postedAt": "2026-08-20T09:47:51+00:00",
    "sourceQuery": "toyota",
    "detailFetched": true,
    "contactFetched": true
}
```

### How much does it cost to scrape Dubizzle?

Billing is pay-per-event. A one-time **Actor Start** fee of **$0.00005** applies per run.

| Event | When it is charged | Price |
|---|---|---|
| `dataset-item` (Listing) | Each listing row | **$1.00 per 1,000** |
| `listing-details` | Each listing successfully enriched | **$1.00 per 1,000** |
| `contact-details` | Only when a phone number is actually extracted | **$1.00 per 1,000** |

A listing-only run of 1,000 ads costs about **$1.00** plus Actor Start. The same 1,000 listings with details and a revealed phone on every row costs about **$3.00** plus Actor Start. Apify plan discounts may reduce these prices. Platform compute and proxy usage are billed separately on your Apify plan.

### Reliability and responsible use

- **Proxy** — Apify residential proxies with country `AE` are the default and recommended setting.
- **Conditional fields** — Longer descriptions, coordinates, and phone numbers appear only when their toggles succeed. Price is hidden when `isPriceHidden` is true.
- **Public data** — The Actor collects publicly visible listing information from Dubizzle UAE.
- **Responsible use** — Only use the data in ways that comply with Dubizzle's terms of service and applicable law. Contact details are for lawful outreach only.

### Frequently asked questions

#### Can I scrape Dubizzle used cars, property, and jobs?

Yes. Set `category` to a motors, property, jobs, classifieds, or community value, or paste a vertical URL in `startUrls`. Keyword searches combine with `category` and `city` when those are set.

#### Can I schedule Dubizzle UAE Scraper to run automatically?

Yes. Open the **Scheduler** tab in Apify Console and set a daily or weekly cadence. Create separate schedules per query, category, and emirate.

#### What counts as one result?

A listing row is one `dataset-item` at **$1.00 per 1,000 listings**. **Scrape listing details** adds a `listing-details` event per enriched listing. **Scrape contact details** adds a `contact-details` event only when a number is extracted.

#### Why are some fields empty?

Search-result rows omit long descriptions and coordinates until **Scrape listing details** is on. Phone and WhatsApp stay empty unless **Scrape contact details** is on and Dubizzle reveals a number. Some sellers hide price.

#### How do I avoid duplicate records?

Within one run, listings are unique by `listingId`. Across runs the Actor appends results and does not merge them. When you combine datasets, keep the first row for each `listingId`. Setting `maxItems` or `maxPages` caps any single run.

#### Do I need a proxy?

Yes. Use Apify residential proxies in the UAE. If a run returns unusually few listings, confirm that `proxyConfiguration` uses the RESIDENTIAL group and `apifyProxyCountry` = `AE`.

### Related Scraptivo automations

- [Property Finder Scraper](https://apify.com/scraptivo/propertyfinder-scraper) — collect UAE property listings from Property Finder alongside Dubizzle rentals and sales.
- [Autotrader Scraper](https://apify.com/scraptivo/autotrader-scraper) — add US car inventory when you need coverage beyond the Gulf.
- [Cars Scraper](https://apify.com/scraptivo/cars-scraper) — collect vehicle listings from additional automotive marketplaces.
- [Realtor Scraper](https://apify.com/scraptivo/realtor-scraper) — cover US property listings with the same export workflow.

### Support and custom workflows

Need a different field, source, or delivery workflow? Contact Scraptivo at scraptivo@gmail.com. Include the Actor name, sample URL, required fields, and expected volume so we can assess the request.

# Actor input Schema

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

Dubizzle search, category, or listing URLs from dubai.dubizzle.com, uae.dubizzle.com, or other emirate sites (e.g. https://uae.dubizzle.com/motors/used-cars/ or a single listing URL). Filters already in the URL are kept.

## `searchQueries` (type: `array`):

Keywords to search on Dubizzle (e.g. "toyota land cruiser", "studio marina", "driver dubai"). Combined with Category and City when those are set.

## `category` (type: `string`):

Marketplace vertical when you are not pasting a URL. Used with search queries and as a standalone scrape target.

## `city` (type: `string`):

Geographic scope for category and keyword searches. Ignored when a start URL already includes a city subdomain.

## `priceMin` (type: `integer`):

Optional lower price bound applied to search results.

## `priceMax` (type: `integer`):

Optional upper price bound applied to search results.

## `maxItems` (type: `integer`):

Maximum number of listings to scrape (0 = unlimited).

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

Maximum search result pages per start URL or query (0 = until results run out or maxItems is reached). Each page has 25 listings.

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

Fetch the full listing JSON for longer descriptions, seller, coordinates, and extra attributes. Search results already include title, price, photos, location, and attributes. Charges the listing-details event per listing that is successfully enriched, in addition to dataset-item. Off by default.

## `fetchContactDetails` (type: `boolean`):

Reveal the seller or agent phone number (and WhatsApp / email when present). Charges the contact-details event only when a number is actually extracted. Off by default.

## `proxyConfiguration` (type: `object`):

Apify Residential proxies in the UAE are recommended.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://uae.dubizzle.com/motors/used-cars/"
    }
  ],
  "category": "",
  "city": "uae",
  "maxItems": 25,
  "maxPages": 1,
  "fetchDetails": false,
  "fetchContactDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "AE"
  }
}
```

# Actor output Schema

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

Scraped Dubizzle listings

## `runStats` (type: `string`):

Record count and timestamps for this run

## `input` (type: `string`):

Input configuration stored for this run

# 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://uae.dubizzle.com/motors/used-cars/"
        }
    ],
    "maxItems": 25,
    "maxPages": 1,
    "fetchDetails": false,
    "fetchContactDetails": false,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "AE"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraptivo/dubizzle-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://uae.dubizzle.com/motors/used-cars/" }],
    "maxItems": 25,
    "maxPages": 1,
    "fetchDetails": False,
    "fetchContactDetails": False,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "AE",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("scraptivo/dubizzle-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 '{
  "startUrls": [
    {
      "url": "https://uae.dubizzle.com/motors/used-cars/"
    }
  ],
  "maxItems": 25,
  "maxPages": 1,
  "fetchDetails": false,
  "fetchContactDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "AE"
  }
}' |
apify call scraptivo/dubizzle-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scraptivo/dubizzle-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/4QxSprcWpb2WnBkDY/builds/Rf2OaiVpgLgXVOEeh/openapi.json
