# dubizzle API — UAE classifieds: used and rental cars, property for sale and rent, and general classifieds from dubizzle.com, in AED, across all emirates. No account, no browser.

> Search dubizzle's general classifieds (furniture, electronics, phones, fashion …) and the non-car Motors sections (number plates, motorcycles, boats, heavy vehicles, parts) by keyword, category and emirate: listing id, title, price in AED, condition, private or business seller, verified flags, premium/featured flags, location and dates, with the true total and category and emirate counts.
> ReefAPI engine `dubizzle` · 6 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/dubizzle/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed calls are free except verified SHEIN NOT_FOUND on product/detail and price (4 credits).
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http, `Authorization: Bearer <key>`) and your assistant can call these actions directly.

## Endpoints

### POST /dubizzle/v1/search — 1 credit
Search dubizzle's general classifieds (furniture, electronics, phones, fashion …) and the non-car Motors sections (number plates, motorcycles, boats, heavy vehicles, parts) by keyword, category and emirate: listing id, title, price in AED, condition, private or business seller, verified flags, premium/featured flags, location and dates, with the true total and category and emirate counts.

**Parameters:**
- `query` (string, optional) — Keyword. dubizzle's search is typo-tolerant ('iphnoe' finds iPhones).
- `category` (string, optional) — Category slug path from `categories` or a search's category_facets, e.g. classified/furniture-home-garden or motors/number-plates. Use cars/search for used or rental cars and real_estate/search for property.
- `emirate` (enum, optional, default "all") — One emirate, or all. Al Ain is listed on its own on dubizzle, separately from Abu Dhabi. [one of: all, dubai, abu-dhabi, sharjah, ajman, ras-al-khaimah, umm-al-quwain, fujairah, al-ain]
- `price_min` (integer, optional) — Lowest price in AED.
- `price_max` (integer, optional) — Highest price in AED.
- `seller_type` (enum, optional) — Only private sellers or only verified businesses (Classifieds only). [one of: private, business]
- `condition` (enum, optional) — Item condition as dubizzle's sellers declare it (Classifieds only). [one of: new, flawless, excellent, good, average, pre_owned]
- `sort` (enum, optional, default "newest") — Order of results. newest = strictly by date (paid ads at their real date); featured = dubizzle's own order, premium ads first. Anything else is rejected. [one of: newest, featured, oldest, price_asc, price_desc]
- `page` (integer, optional, default 1) — Result page (1-based). dubizzle serves at most 10,000 results per search, so page × limit must stay within 10,000.
- `limit` (integer, optional, default 25) — Results per page, 1-100.
- `language` (enum, optional, default "en") — Language of titles, category names and attribute labels where dubizzle publishes both. [one of: en, ar]
- `country` (enum, optional, default "ae") — dubizzle.com serves the UAE only. dubizzle Egypt, Saudi Arabia, Qatar, Bahrain, Kuwait, Oman and Lebanon are a different platform and are not served. [one of: ae]
- `max_rotations` (integer, optional, default 3) — Advanced: how many times to retry a difficult request (1-5).

**Returns:** results[]{listing_id, uuid, vertical, title, url, short_url, price (AED, null when not published), currency, price_type (fixed|on_request|no_price), was_price, category, category_slug, location{emirate, emirate_slug, emirate_id, area, area_id, path[], building, lat, lng (businesses/agents, or include_pii)}, listed_at, listed_date, refreshed_at (last bump), seller_type, seller_type_code, seller_name (businesses only), is_premium, is_featured, is_promoted, is_highlighted, image, image_count, discount_percent, verified_user, verified_business, has_phone, has_whatsapp, business_id, condition, condition_label, brand, attributes[]{key, label, value, group}}, count, total_results, reachable_results, page, limit, total_pages, has_more, featured_count, premium_count, category_facets[]{category, count}, emirate_facets[]{emirate, emirate_slug, emirate_id, count}, vertical, currency, query, sort_applied, filters_applied

**Example request body:**
```json
{
  "query": "sofa"
}
```

### POST /dubizzle/v1/cars/search — 1 credit
Search used cars (or rental cars) on dubizzle Motors: make, model, trim, year, kilometres, price in AED, regional specs (GCC, American, European …), body type, transmission, fuel, colour, cylinders, horsepower, warranty, export-only flag, dealer or private seller and dealer name, emirate and area, premium/featured flags and dates. Rental cars add daily, weekly and monthly rates with km allowances. Sort by newest, price, kilometres or model year.

**Parameters:**
- `section` (enum, optional, default "used") — Used cars for sale (default) or rental cars. [one of: used, rental]
- `make` (string, optional) — Make slug as dubizzle writes it (nissan, mercedes-benz, land-rover). `categories` with vertical motors lists every make and model with counts.
- `model` (string, optional) — Model slug (patrol, land-cruiser); needs make.
- `query` (string, optional) — Keyword. dubizzle's search is typo-tolerant ('iphnoe' finds iPhones).
- `emirate` (enum, optional, default "all") — One emirate, or all. Al Ain is listed on its own on dubizzle, separately from Abu Dhabi. [one of: all, dubai, abu-dhabi, sharjah, ajman, ras-al-khaimah, umm-al-quwain, fujairah, al-ain]
- `year_min` (integer, optional) — Earliest model year.
- `year_max` (integer, optional) — Latest model year.
- `km_min` (integer, optional) — Lowest kilometres.
- `km_max` (integer, optional) — Highest kilometres.
- `price_min` (integer, optional) — Lowest price in AED.
- `price_max` (integer, optional) — Highest price in AED.
- `regional_specs` (enum, optional) — The market the car was built for (GCC specs are the UAE's own). [one of: gcc, american, european, japanese, chinese, korean, canadian, other]
- `body_type` (enum, optional) — Body type. [one of: suv, sedan, coupe, hatchback, pickup_truck, van, soft_top_convertible, hard_top_convertible, crossover, sports_car, wagon, utility_truck, other]
- `transmission` (enum, optional) — Gearbox. [one of: automatic, manual]
- `fuel_type` (enum, optional) — Fuel. [one of: petrol, diesel, hybrid, plug_in_hybrid, electric]
- `cylinders` (enum, optional) — Number of cylinders. [one of: 3, 4, 5, 6, 8, 10, 12]
- `exterior_color` (enum, optional) — Exterior colour. [one of: white, black, grey, silver, blue, red, green, gold, brown, maroon, beige, orange, yellow, burgundy, bronze, purple, pink, teal, other]
- `steering_side` (enum, optional) — Left- or right-hand drive. [one of: left, right]
- `warranty` (enum, optional) — Whether the car is sold with a warranty. [one of: yes, no, does_not_apply]
- `target_market` (enum, optional) — Export-only cars cannot be registered in the UAE. [one of: uae, export_only]
- `seller_type` (enum, optional) — Dealers or private owners. [one of: dealer, private]
- `sort` (enum, optional, default "newest") — Order of results. newest = strictly by date (paid ads at their real date); featured = dubizzle's own order, premium ads first. Anything else is rejected. [one of: newest, featured, oldest, price_asc, price_desc, km_asc, km_desc, year_desc, year_asc]
- `page` (integer, optional, default 1) — Result page (1-based). dubizzle serves at most 10,000 results per search, so page × limit must stay within 10,000.
- `limit` (integer, optional, default 25) — Results per page, 1-100.
- `language` (enum, optional, default "en") — Language of titles, category names and attribute labels where dubizzle publishes both. [one of: en, ar]
- `country` (enum, optional, default "ae") — dubizzle.com serves the UAE only. dubizzle Egypt, Saudi Arabia, Qatar, Bahrain, Kuwait, Oman and Lebanon are a different platform and are not served. [one of: ae]
- `max_rotations` (integer, optional, default 3) — Advanced: how many times to retry a difficult request (1-5).

**Returns:** results[]{listing_id, uuid, vertical, title, url, short_url, price (AED, null when not published), currency, price_type (fixed|on_request|no_price), was_price, category, category_slug, location{emirate, emirate_slug, emirate_id, area, area_id, path[], building, lat, lng (businesses/agents, or include_pii)}, listed_at, listed_date, refreshed_at (last bump), seller_type, seller_type_code, seller_name (businesses only), is_premium, is_featured, is_promoted, is_highlighted, image, image_count, price_period (day for rentals), discount_percent, section, make, model, trim, year, kilometers, regional_specs, body_type, transmission, fuel_type, exterior_color, interior_color, doors, seating_capacity, cylinders, horsepower, engine_capacity, steering_side, warranty, target_market, rental_prices[]{period, price, allowed_km, extra_km_charge}, verified_user, verified_business, has_phone, has_whatsapp, business_id, attributes[]}, count, total_results, reachable_results, page, limit, total_pages, has_more, featured_count, premium_count, category_facets[], emirate_facets[], vertical, currency, query, sort_applied, filters_applied

**Example request body:**
```json
{
  "make": "nissan",
  "model": "patrol"
}
```

### POST /dubizzle/v1/real_estate/search — 1 credit
Search property for sale or for rent on dubizzle: residential, commercial, land, multiple units, rooms and short-term rentals. Price in AED with the rent period normalised (per year and per month) and the cheque schedule kept apart, bedrooms (studio flagged), bathrooms, size in sqft and sqm, furnishing, ready or off-plan, agency and agent, verification state, featured/premium flags, emirate, community, sub-community, building and coordinates.

**Parameters:**
- `purpose` (enum, optional, default "rent") — For rent (default) or for sale. [one of: rent, sale]
- `property_type` (enum, optional, default "residential") — Property type. land and multiple_units exist for sale only; rooms and short_term for rent only. [one of: residential, commercial, land, multiple_units, rooms, short_term]
- `unit_type` (enum, optional) — Residential unit type. [one of: apartment, villa, townhouse, penthouse, hotel_apartment, villa_compound, residential_building, residential_floor]
- `category` (string, optional) — Any property category slug path from `categories` (overrides unit_type).
- `query` (string, optional) — Keyword. dubizzle's search is typo-tolerant ('iphnoe' finds iPhones).
- `emirate` (enum, optional, default "all") — One emirate, or all. Al Ain is listed on its own on dubizzle, separately from Abu Dhabi. [one of: all, dubai, abu-dhabi, sharjah, ajman, ras-al-khaimah, umm-al-quwain, fujairah, al-ain]
- `price_min` (integer, optional) — Lowest price in AED.
- `price_max` (integer, optional) — Highest price in AED.
- `bedrooms_min` (integer, optional) — Fewest bedrooms (0 = studio).
- `bedrooms_max` (integer, optional) — Most bedrooms.
- `bathrooms_min` (integer, optional) — Fewest bathrooms.
- `bathrooms_max` (integer, optional) — Most bathrooms.
- `size_min` (integer, optional) — Smallest size, sqft.
- `size_max` (integer, optional) — Largest size, sqft.
- `furnished` (boolean, optional) — Only furnished (true) or unfurnished (false).
- `completion_status` (enum, optional) — Ready or off-plan (sale only). [one of: ready, off_plan]
- `listed_by` (enum, optional) — Listed by an agent or directly by the landlord. [one of: agent, landlord]
- `verified_only` (boolean, optional) — Only listings dubizzle marks as verified.
- `area_id` (integer, optional) — Community id from a row's location.area_id or sub_area_id.
- `building_id` (integer, optional) — Building id from a row's location.building_id.
- `sort` (enum, optional, default "newest") — Order of results. newest = strictly by date (paid ads at their real date); featured = dubizzle's own order, premium ads first. Anything else is rejected. [one of: newest, oldest, price_asc, price_desc, verified_first]
- `page` (integer, optional, default 1) — Result page (1-based). dubizzle serves at most 10,000 results per search, so page × limit must stay within 10,000.
- `limit` (integer, optional, default 25) — Results per page, 1-100.
- `language` (enum, optional, default "en") — Language of titles, category names and attribute labels where dubizzle publishes both. [one of: en, ar]
- `country` (enum, optional, default "ae") — dubizzle.com serves the UAE only. dubizzle Egypt, Saudi Arabia, Qatar, Bahrain, Kuwait, Oman and Lebanon are a different platform and are not served. [one of: ae]
- `max_rotations` (integer, optional, default 3) — Advanced: how many times to retry a difficult request (1-5).

**Returns:** results[]{listing_id, uuid, vertical, title, url, short_url, price (AED, null when not published), currency, price_type (fixed|on_request|no_price), was_price, category, category_slug, location{emirate, emirate_slug, emirate_id, area, area_id, path[], building, lat, lng (businesses/agents, or include_pii)}, listed_at, listed_date, refreshed_at (last bump), seller_type, seller_type_code, seller_name (businesses only), is_premium, is_featured, is_promoted, is_highlighted, image, image_count, purpose, property_type, rent_frequency (yearly|monthly|daily), price_per_year, price_per_month, rent_payment_schedule (cheques: yearly|quarterly|monthly|bi_yearly), bedrooms, is_studio, bathrooms, size_sqft, size_sqm, plot_area_sqft, furnished, completion_status (ready|off_plan), agency{id, name, tier}, agent{id, name}, reference, verification, is_verified, has_whatsapp, location{…, sub_area, sub_area_id, building_id}}, count, total_results, reachable_results, page, limit, total_pages, has_more, featured_count, premium_count, category_facets[], emirate_facets[], vertical, currency, query, sort_applied, filters_applied

**Example request body:**
```json
{
  "purpose": "rent",
  "emirate": "dubai"
}
```

### POST /dubizzle/v1/listing — 2 credits
The full dubizzle listing by uuid, URL, or numeric id with its vertical: every search field plus the description, every image, all attributes, the seller (dealer, business or agency name, verified flags, member since, active listings; private sellers stay anonymous), expiry date, variants for shop listings; property adds amenities, developer, handover year, agency fee and community fee.

**Parameters:**
- `listing_id` (string, optional) — Numeric listing id from a search row. Ids repeat across dubizzle sections, so pass vertical with it.
- `uuid` (string, optional) — The row's uuid.
- `url` (string, optional) — A dubizzle listing URL (any emirate subdomain, English or Arabic).
- `vertical` (enum, optional) — The row's vertical; needed with a numeric listing_id. [one of: motors, classified, property]
- `include_description` (boolean, optional, default true) — Motors and Classifieds descriptions need one extra request; set false to skip it.
- `language` (enum, optional, default "en") — Language of titles, category names and attribute labels where dubizzle publishes both. [one of: en, ar]
- `country` (enum, optional, default "ae") — dubizzle.com serves the UAE only. dubizzle Egypt, Saudi Arabia, Qatar, Bahrain, Kuwait, Oman and Lebanon are a different platform and are not served. [one of: ae]
- `max_rotations` (integer, optional, default 3) — Advanced: how many times to retry a difficult request (1-5).

**Returns:** listing{…every search row field, description, description_status (ok|not_published|not_requested|unavailable|gone), images[], attributes[], seller{type, code, name, business_id, logo_url, verified_business, verified_user, phone_verified, member_since, active_listings, rating, review_count} (property: seller{type, code, name, agency, agent}), expires_at, variants[]{attribute, value, listing_id, price}, amenities[], handover_year, developer, agency_fee, annual_community_fee, updated_at, has_video, has_virtual_tour}

### POST /dubizzle/v1/categories — 1 credit
dubizzle's live category tree for one vertical with listing counts: Motors down to make and model, Classifieds down to sub-category, Property for sale or rent by type. Each node carries the slug path to pass as category (or make/model) to search. Optionally counted for one emirate or keyword.

**Parameters:**
- `vertical` (enum, required) — Which part of dubizzle. [one of: motors, classified, property-for-sale, property-for-rent]
- `emirate` (enum, optional, default "all") — One emirate, or all. Al Ain is listed on its own on dubizzle, separately from Abu Dhabi. [one of: all, dubai, abu-dhabi, sharjah, ajman, ras-al-khaimah, umm-al-quwain, fujairah, al-ain]
- `query` (string, optional) — Optional keyword: counts are then for it.
- `country` (enum, optional, default "ae") — dubizzle.com serves the UAE only. dubizzle Egypt, Saudi Arabia, Qatar, Bahrain, Kuwait, Oman and Lebanon are a different platform and are not served. [one of: ae]
- `max_rotations` (integer, optional, default 3) — Advanced: how many times to retry a difficult request (1-5).

**Returns:** categories[]{category, count, level, children[]}, count, total_results, vertical, emirate, query

### POST /dubizzle/v1/suggest — 1 credit
dubizzle's own search suggestions for what a buyer has typed, most popular first, each with how many live listings match and in which section and category.

**Parameters:**
- `query` (string, required) — What the buyer typed.
- `limit` (integer, optional, default 10) — How many suggestions (1-50).
- `country` (enum, optional, default "ae") — dubizzle.com serves the UAE only. dubizzle Egypt, Saudi Arabia, Qatar, Bahrain, Kuwait, Oman and Lebanon are a different platform and are not served. [one of: ae]
- `max_rotations` (integer, optional, default 3) — Advanced: how many times to retry a difficult request (1-5).

**Returns:** suggestions[]{query, popularity, listings_count, sections[]{section, count}, category}, count, query

**Example request body:**
```json
{
  "query": "sofa"
}
```

## More
- Try it live, no code: https://reefapi.com/playground?engine=dubizzle
- Human docs page: https://reefapi.com/docs/dubizzle
- Overview page: https://reefapi.com/dubizzle-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
