# Dubizzle Scraper (`solidcode/dubizzle-scraper`) Actor

\[💰 $0.9 / 1K] Extract property, motors, and classifieds listings from Dubizzle across every UAE emirate. Paste any Dubizzle search URL or run a structured search by emirate, category, price range, and keyword. From $0.90 per 1,000 results.

- **URL**: https://apify.com/solidcode/dubizzle-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Real estate, Automation, Developer tools
- **Stats:** 11 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.90 / 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?

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 Scraper

Pull listings from Dubizzle across the United Arab Emirates at scale — property for sale, property for rent, motors, classifieds, and jobs — with prices, photos, seller details, agency names, coordinates, and posted dates for every result. Built for UAE real estate researchers, car dealers tracking inventory, lead-generation agencies building agent and agency lists, and arbitrage operators monitoring classifieds who need fresh Dubizzle data without stitching together emirate-specific scrapers.

### Why This Scraper?

- **All 8 UAE emirates in one extractor** — Dubai, Abu Dhabi, Sharjah, Ajman, Ras Al Khaimah, Fujairah, Umm Al Quwain, and Al Ain covered through a single dropdown. No more juggling per-emirate subdomains.
- **5 verticals narrowed by 76 listing types** — property for sale, property for rent, motors, classifieds, and jobs, each drillable to a single listing type: Used Cars without the rental fleets and number plates, Apartment without the villas, Mobile Phones & Tablets without the rest of classifieds. All 76 return the same flat schema, so downstream pipelines never branch on category.
- **Up to 10,000 results per query, multi-query for higher volumes** — combine multiple URLs in `startUrls` to merge inventory across emirates, verticals, or price bands in a single run.
- **True newest-first ordering on every vertical** — `newest` sorts on the actual posting timestamp that ships as `postedAt` on each row, not on Dubizzle's featured-listing ranking, so an hourly scheduled run really does surface only what appeared since the last one. Relevance, oldest, price ascending, and price descending round out the five sort modes.
- **English and Arabic results** — flip a single dropdown to receive native Arabic titles, area names, and category labels (e.g. `دبي` for Dubai).
- **Up to 10 photos per listing** — primary photo URLs ship inline on every row, ready for image pipelines, computer-vision tagging, or property-listing portals.
- **6 normalized seller types on every row** — `owner`, `landlord`, `agent`, `agency`, `dealer`, and `rental`, so you can separate private sellers from dealerships and rental fleets in one pass, plus seller name and agency name for property listings. Property rows also carry Dubizzle's verified-listing flag (`isVerified`) and, where the listing has had one, the date of its TruCheck inspection (`verifiedAt`); motors, classifieds, and jobs do not carry either signal.
- **Paste any Dubizzle URL or build a query from scratch** — copy a filtered search URL straight from your browser and every filter is preserved, or skip URLs entirely and let emirate, category, keyword, and price range build the search for you.
- **Pay only per result — no compute charges** — from $0.90 per 1,000 results, charged on real output rows, with lower per-result rates on Bronze, Silver, and Gold plans.

### Use Cases

**Real Estate Market Intelligence**

- Track asking-price trends across Dubai Marina, Business Bay, and Downtown over time
- Map active inventory by emirate and bedroom count to spot oversupply
- Capture off-plan launches by filtering on `isPremium` flags
- Build neighborhood comp sets from `area` and `locationPath` fields

**Auto Dealer Lead Sourcing**

- Monitor used-car inventory by make and model (Toyota, Nissan, Mercedes, Land Cruiser)
- Hunt the sub-AED 50K segment for resale arbitrage with `priceMax` filters
- Track lease-return resale prices by sorting `price-asc` on dealer listings
- Surface motorbike and boat inventory directly from the motors vertical

**Marketing Agency Lead Generation**

- Extract listing-agent contacts with `sellerName`, `sellerType`, and `agencyName`
- Build prospect lists of agencies handling premium properties in target emirates
- Identify high-volume sellers running multiple listings for outreach campaigns
- Capture verified-listing accounts to seed quality scores

**Recruitment & HR**

- Scan the jobs vertical by emirate to map hiring demand
- Build employer lists by sampling who's posting active vacancies
- Track posted dates to spot freshly opened roles before agency placement
- Group jobs by area to gauge sector concentration (DIFC, Dubai Internet City, Yas Island)

**E-commerce Arbitrage & Resale**

- Monitor iPhone, MacBook, and PlayStation resale prices across the classifieds vertical
- Hunt furniture-flipping opportunities by sorting `price-asc` in Dubai classifieds
- Track posting velocity for high-turnover SKUs by combining `sort=newest` with a schedule
- Compare cross-emirate price spreads on identical product categories

### Getting Started

#### Simple — Paste a Dubizzle URL

```json
{
    "startUrls": ["https://dubai.dubizzle.com/property-for-sale/residential/apartment/"],
    "maxResults": 200
}
```

#### Used Cars Only, Filtered by Emirate and Price

```json
{
    "searchKeyword": "Toyota Corolla",
    "emirate": "abu-dhabi",
    "listingType": "motors/used-cars",
    "priceMin": 20000,
    "priceMax": 80000,
    "sortBy": "price-asc",
    "maxResults": 500
}
```

`listingType` keeps rental cars, number plates and spare parts out of the results, so every row you pay for is a car for sale. It also sets the category for you, which is why `category` is absent above.

#### Arabic Locale, Multi-Emirate via Multiple URLs

```json
{
    "startUrls": [
        "https://dubai.dubizzle.com/property-for-rent/residential/apartmentflat/",
        "https://abudhabi.dubizzle.com/property-for-rent/residential/apartmentflat/",
        "https://sharjah.dubizzle.com/property-for-rent/residential/apartmentflat/"
    ],
    "language": "ar",
    "sortBy": "newest",
    "maxResults": 2000
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | string\[] | `[]` | Paste one or more Dubizzle URLs — search results, listing pages, or short links like `dubizzle.com/s/AbcXyz`. The page type is auto-detected. When provided, this overrides the structured search below. |

#### Structured Search

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchKeyword` | string | `null` | Free-text search term, e.g. "Toyota Corolla", "studio apartment", "iPhone 15". Used only when `startUrls` is empty. |
| `emirate` | select | `Dubai` | UAE emirate to search: Dubai, Abu Dhabi, Sharjah, Ajman, Ras Al Khaimah, Fujairah, Umm Al Quwain, Al Ain. |
| `category` | select | `Property for Sale` | Dubizzle vertical: Property for Sale, Property for Rent, Motors, Classifieds, or Jobs. |
| `listingType` | select | `null` | Narrow to one of 76 listing types, e.g. Motors — Used Cars, Property for Sale — Apartment, Jobs — Engineering. Sets `category` for you. Leave empty to search the whole vertical. |
| `sortBy` | select | `Relevance` | Result ordering: Relevance, Newest first, Oldest first, Price low-to-high, Price high-to-low. Jobs listings support Relevance and Newest first only; the other three fall back to Dubizzle's default order. |
| `language` | select | `English` | Language for titles, area names, and category labels: English or Arabic. |

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `priceMin` | integer | `null` | Minimum price in AED. Leave empty for no minimum. |
| `priceMax` | integer | `null` | Maximum price in AED. Leave empty for no maximum. |

#### Options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Maximum listings to collect across all input URLs and searches. Set to `0` for unlimited (safety-capped at 50,000). A single search returns at most 10,000 results — to collect more, narrow with `priceMin` / `priceMax` / `category` and re-run. |

### Output

Here is a representative listing row:

```json
{
    "listingId": "ad-105739821",
    "url": "https://dubai.dubizzle.com/property-for-sale/residential/apartment/2026/5/12/marina-view-2br-corner-unit-1234567/",
    "title": "Marina View | 2BR Corner Unit | Vacant On Transfer",
    "description": "Spacious two-bedroom apartment with full marina views, corner layout, two parking bays.",
    "category": "property-for-sale",
    "subcategory": "apartment",
    "price": 2450000,
    "priceCurrency": "AED",
    "priceLabel": "AED 2,450,000",
    "emirate": "Dubai",
    "area": "Dubai Marina",
    "locationPath": ["UAE", "Dubai", "Dubai Marina", "Marina Crown Tower"],
    "latitude": 25.0805,
    "longitude": 55.1403,
    "postedAt": "2026-05-08T10:14:22Z",
    "updatedAt": "2026-05-11T08:00:01Z",
    "verifiedAt": "2026-05-11T08:00:01Z",
    "photos": [
        "https://dbzlpvfeeds-a.akamaihd.net/dbzlpvfeeds/main_photo_1.jpg",
        "https://dbzlpvfeeds-a.akamaihd.net/dbzlpvfeeds/photo_2.jpg"
    ],
    "photoCount": 18,
    "sellerName": "Aisha Karim",
    "sellerType": "agent",
    "agencyName": "Skyline Premier Properties",
    "attributes": {
        "bedrooms": 2,
        "bathrooms": 3,
        "sizeSqft": 1340,
        "propertyType": "Apartment",
        "furnished": "Unfurnished",
        "completionStatus": "Ready"
    },
    "isPremium": true,
    "isVerified": true,
    "scrapedAt": "2026-05-15T09:32:11Z"
}
```

#### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `listingId` | string | Dubizzle's internal listing identifier |
| `url` | string | Canonical listing URL |
| `title` | string | Listing title |
| `description` | string|null | Short listing summary (long body lives on detail pages) |
| `category` | string | Top-level vertical (e.g. `property-for-sale`) |
| `subcategory` | string | Sub-vertical (e.g. `apartment`, `used-cars`, `iphone`) |
| `isPremium` | boolean | Featured / premium listing flag |
| `isVerified` | boolean | Dubizzle's verified-listing flag: `true` when the listing currently holds either level of verification, the standard check or the stricter TruCheck (property listings only; always `false` on motors / classifieds / jobs) |
| `scrapedAt` | string | ISO 8601 timestamp of data extraction |

#### Location

| Field | Type | Description |
|-------|------|-------------|
| `emirate` | string | UAE emirate (localized in Arabic when `language=ar`) |
| `area` | string | Neighborhood or community name |
| `locationPath` | string\[] | Hierarchical location breadcrumb from country to community |
| `latitude` | number|null | Latitude in decimal degrees (UAE range ~22–27); `null` when Dubizzle did not publish coordinates |
| `longitude` | number|null | Longitude in decimal degrees (UAE range ~51–57); `null` when Dubizzle did not publish coordinates |

#### Pricing & Dates

| Field | Type | Description |
|-------|------|-------------|
| `price` | number|null | Numeric price; `null` when seller marked "On Application" or "Negotiable" |
| `priceCurrency` | string | ISO 4217 currency code (typically `AED`) |
| `priceLabel` | string | Display string ("AED 250,000", "On Application", "Negotiable") |
| `postedAt` | string | ISO 8601 publish timestamp |
| `updatedAt` | string|null | ISO 8601 last-update timestamp. Published on property, classifieds and jobs listings; motors listings do not carry one |
| `verifiedAt` | string|null | ISO 8601 date of the listing's most recent TruCheck inspection (property only). Independent of `isVerified`: a listing verified by the standard check alone has no TruCheck date, and a listing whose verification has since lapsed can still carry an older one |

#### Seller

| Field | Type | Description |
|-------|------|-------------|
| `sellerName` | string|null | Display name of seller or agent |
| `sellerType` | string|null | One of `owner`, `landlord`, `agent`, `agency`, `dealer`, `rental` (`agency` is emitted when an agent is listed under a populated agency name; `rental` marks rental-fleet listings) |
| `agencyName` | string|null | Agency or dealership name when applicable |

#### Media & Attributes

| Field | Type | Description |
|-------|------|-------------|
| `photos` | string\[] | Primary photo URLs (up to 10 per listing) |
| `photoCount` | integer | Number of photos in the `photos` array |
| `attributes` | object | Vertical-specific structured attributes in camelCase, in the language you selected — for example `bedrooms`, `bathrooms`, `sizeSqft`, `propertyType`, `furnished`, `completionStatus` on real estate; `make`, `model`, `year`, `kilometers`, `transmissionType`, `bodyType`, `fuelType` on motors; `brand`, `condition`, `age`, `usage` on classifieds; `salary`, `requiredWorkExperience`, `companyName` on jobs |

### Tips for Best Results

- **Save filtered URLs from your browser** — apply your bedroom, neighborhood, and price filters on Dubizzle, copy the resulting URL, and paste it directly into `startUrls`. Every filter is preserved.
- **Use `sortBy=newest` for daily monitoring** — schedule a run every hour with `maxResults=200` to capture brand-new listings as they appear.
- **Set `listingType` before you set `maxResults`** — a plain Motors search in Sharjah is roughly 8% rental cars, number plates and spare parts, and you pay per row for all of them. Picking Motors — Used Cars removes them at the source rather than after you have been billed.
- **Narrow with `priceMin` / `priceMax` before going past 5,000 results per query** — a single search caps at 10,000 results, so tight price bands plus targeted categories unlock the full UAE inventory across multiple runs.
- **Combine multiple URLs in `startUrls` to merge emirates** — one run can cover Dubai, Abu Dhabi, and Sharjah in parallel; the unified schema means no post-processing.
- **Set `language=ar` for Arabic-language analyses** — emirate and area names return in native Arabic; English-only ads still surface English titles because Dubizzle does not auto-translate seller copy.
- **Off-plan launches show under `property-for-sale` with `isPremium=true`** — use this combination to track new developer releases.
- **The classifieds vertical is a long tail** — be specific with `searchKeyword` ("iPhone 15 Pro", "IKEA Malm bed") to cut through noise, then loop with `sortBy=newest` to monitor fresh postings.

### Pricing

**From $0.90 per 1,000 results** — pay-per-result pricing that drops as your Apify plan tier rises. Gold plans pay the headline rate.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.11 | $0.10 | $0.096 | $0.090 |
| 1,000 | $1.08 | $1.02 | $0.96 | $0.90 |
| 10,000 | $10.80 | $10.20 | $9.60 | $9.00 |
| 100,000 | $108.00 | $102.00 | $96.00 | $90.00 |

The tiered rates above take effect on **10 September 2026**. Until then every plan pays the flat $0.90 per 1,000 results.

**No compute charges — you only pay per result returned.** A "result" is any listing row in the output dataset. Platform fees (storage, data transfer) depend on your Apify plan.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is designed for legitimate market research, lead generation, recruitment, and resale operations. Users are responsible for complying with applicable UAE laws, GDPR where relevant, and Dubizzle's Terms of Service. Do not use extracted data for spam, harassment, or any illegal purpose. Respect personal-data regulations when handling seller names, phone numbers, and agency contacts.

# Actor input Schema

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

Paste one or more Dubizzle URLs — search results, individual listings, or short links (e.g., dubizzle.com/s/AbcXyz). The scraper auto-detects each page type and walks pagination. When provided, these override the structured search below.

## `searchKeyword` (type: `string`):

Free-text search term, e.g. "Toyota Corolla", "studio apartment", "iPhone 15". Used only when Dubizzle URLs above is empty.

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

Which UAE emirate to search. Multi-word emirates use hyphens: abu-dhabi, ras-al-khaimah, umm-al-quwain, al-ain.

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

Which Dubizzle vertical to search.

## `listingType` (type: `string`):

Narrow the search to a single listing type so you only pay for the listings you actually want. Choosing "Motors — Used Cars", for example, leaves out the rental cars, number plates and spare parts that a plain Motors search also returns. Leave this empty to search the whole category. Your choice sets the category for you, so there is no need to match the two by hand.

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

Only include listings at or above this price in AED. Leave empty for no minimum.

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

Only include listings at or below this price in AED. Leave empty for no maximum.

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

How to order results. "Oldest first" and the price sorts are not available for Jobs — those searches come back in Dubizzle's default order instead.

## `language` (type: `string`):

Language for results. Dubizzle ships an English and an Arabic UI.

## `maxResults` (type: `integer`):

Maximum number of listings to collect across all URLs and searches. Set to 0 for unlimited (safety-capped at 50,000). Note: a single search is limited to 10,000 results — to collect more, narrow your filters with priceMin / priceMax / category and re-run.

## Actor input object example

```json
{
  "startUrls": [
    "https://dubai.dubizzle.com/property-for-sale/residential/apartment/"
  ],
  "emirate": "dubai",
  "category": "property-for-sale",
  "sortBy": "relevance",
  "language": "en",
  "maxResults": 100
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of scraped Dubizzle listings with the most useful columns.

# 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": [
        "https://dubai.dubizzle.com/property-for-sale/residential/apartment/"
    ],
    "emirate": "dubai",
    "category": "property-for-sale",
    "sortBy": "relevance",
    "language": "en",
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/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": ["https://dubai.dubizzle.com/property-for-sale/residential/apartment/"],
    "emirate": "dubai",
    "category": "property-for-sale",
    "sortBy": "relevance",
    "language": "en",
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/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": [
    "https://dubai.dubizzle.com/property-for-sale/residential/apartment/"
  ],
  "emirate": "dubai",
  "category": "property-for-sale",
  "sortBy": "relevance",
  "language": "en",
  "maxResults": 100
}' |
apify call solidcode/dubizzle-scraper --silent --output-dataset

```

## MCP server setup

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