DubiCars API

Get UAE car listings, AED prices and full specs from DubiCars with one API

The DubiCars API returns dubicars.com, a United Arab Emirates car marketplace, as clean JSON in five actions.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a DubiCars endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
D
/dubicars/v1

5 active endpoints, on 1, 2 and 3 credit tiers.

  • POST/dubicars/v1/search
  • POST/dubicars/v1/detail
  • POST/dubicars/v1/count
  • POST/dubicars/v1/makes
  • POST/dubicars/v1/models

What DubiCars endpoints does ReefAPI ship?

5 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

5 endpoints

search

3 cr

Search dubicars' UAE car stock by make, model, condition, emirate, seller type, model year, p…

required
—
optional
make_id, model_id, condition, emirate, seller_type, year_min, year_max, price_min, price_max, km_min, km_max, sort, page, max_results, include_pii

detail

3 cr

The full record for one listing.

required
url
optional
include_pii

count

1 cr

How many cars match a filter combination, from dubicars' own count endpoint.

required
—
optional
make_id, model_id, condition, emirate, seller_type, year_min, year_max, price_min, price_max, km_min, km_max

makes

1 cr

Every car make dubicars lists, with the numeric make_id that search, count and models take, p…

required
—
optional
—

models

2 cr

Every model dubicars lists for one make, with the numeric model_id that search and count take.

required
—
optional
make_id

Every parameter, every allowed value →

DubiCars API

5 of 5 endpoints, ready to run

View docs ↗

Filter DubiCars' UAE stock and get 30 rows a page with the asking price in AED, mileage, model year, emirate, regional specs, seller kind and the ad's last-refresh time. The response also tells you how many cars matched and how many of them paging can actually reach.

3 credits0 required · 14 optional
POST/dubicars/v1/search
idle
// Press "Try it" and this pane shows exactly what the
// live site returned this second — including an empty
// result, if that is the truth. No key, no account.

How the DubiCars API works

DubiCars is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 438 engines.

02
Call
POST /dubicars/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 or 2 or 3 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Price a used Toyota Land Cruiser in Dubai without paging a result set you cannot finish

The trap on DubiCars is that a broad query reports tens of thousands of cars and then refuses to serve you past its thirtieth page. The fix is to size the query first and narrow until it fits, which costs one tiny call each time.

01makes
POSTmakes

Get the numeric ids once. Toyota is 105.

02models with make_id 105
POSTmodels with make_id 105

Get the model ids for that make - Land Cruiser, Camry, Hilux, Prado and the rest.

03count with make_id 105, condition used
POSTcount with make_id 105, condition used

Reports 7,249 cars. fully_reachable comes back false, so paging this query would stop at 900 rows.

04count with make_id 105, model_id for Land Cruiser, emirate dubai
POSTcount with make_id 105, model_id for Land Cruiser, emirate dubai

Now the total is small enough that fully_reachable is true - the whole segment is walkable.

05search with the same filters, sort price_asc, max_results 300
POSTsearch with the same filters, sort price_asc, max_results 300

Walks the segment from the cheap end in pages of 30, with the asking price in AED, the odometer reading and the earlier list price where the ad carries one.

06detail on the rows you care about
POSTdetail on the rows you care about

Adds the seller's description, the full spec sheet and every photo for the handful you actually want to quote.

A complete, bounded price ladder for one model in one emirate, with mileage on every row, instead of the first 900 rows of a 7,249-car query and no way to know what you missed.

request
curl -X POST https://api.reefapi.com/dubicars/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"make_id":105,"condition":"used","emirate":"dubai","sort":"newest","max_results":30}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "dubicars",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

How much DubiCars stock sits in each emirate - and how much of it an API call can reach

Measured on 2026-10-06 with the count action. The right-hand column is the honest one: DubiCars refuses to serve a result page beyond the thirtieth, so one query exposes at most 900 rows no matter how many it reports. Narrow queries are fully reachable; the big ones are not, and the API says so in every response.

EmirateCars listedReachable in one query
Dubai22,547900 of them
Sharjah1,379900 of them
Abu Dhabi753all 753
Ajman330all 330
Al Ain38all 38
Ras Al Khaimah10all 10
Fujairah8all 8
Umm Al Quwain2all 2
All emirates, unfiltered25,067900 of them

To go past 900 on a big query, split it - by make, by model, by price band, by emirate - or walk the same query from both ends with sort=price_asc and sort=price_desc. Every search response returns total_results, reachable_results and fully_reachable so your code can decide without guessing.

What was measured on 2026-10-06

Eight different live searches and ten random listing pulls, counted from the raw responses. The ceiling and the refresh-date line are in here because they are the two things that would otherwise surprise you in production.

Market

United Arab Emirates - all seven emirates plus Al Ain as its own listing area

Cars listed site-wide

25,067 (12,164 of them new)

Currency

AED, read back from the source on every row rather than assumed

Rows per search page

30

Reachable per query

900 - DubiCars refuses page 31 and above, and every response says whether your query fits

Core fields filled

248 of 248 rows across 8 searches carried id, URL, title, year, kilometres, price, currency, condition, emirate, regional specs, make id, model id, placement tier, photo count, cover image and seller kind

Detail calls

10 of 10 complete, 12-15 spec rows each, photo list matching DubiCars' own count on all 10 (7 to 25 images)

Dealer contacts

Returned for dealers, which were 24,000 of the 25,068 cars; private owners' names and phones are withheld unless you ask for them

Sort orders

8, each checked to actually reorder results. newest is the ad's last-refresh time, not its creation date - DubiCars publishes no creation date

Not published by the source

VIN, trim, service history, view counts, listing creation date

What people build with DubiCars

The jobs this data is most often used for.

5

endpoints

1/2/3

credits per call

01

UAE dealer-pricing and residual-value teams call search per make and model to track asking prices in AED by emirate and mileage band.

02

Car-buying and lead-gen apps call detail on a search row to show the seller's description, the full spec sheet and every photo in their own UI.

03

Market-sizing and supply dashboards call count with different filter combinations to measure how much stock exists per emirate, per make and per price band in one request each.

04

Import and export desks filter by regional specs and the GCC-spec flag to find cars that match a destination market's requirements.

What DubiCars data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 438 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/dubicars/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"make_id":105,"condition":"used","emirate":"dubai","sort":"newest","max_results":30}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/dubicars/v1/search",
    headers={"x-api-key": REEF_KEY},
    json={
  "make_id": 105,
  "condition": "used",
  "emirate": "dubai",
  "sort": "newest",
  "max_results": 30
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up DubiCars.

Get a free key →
Does the DubiCars API have a keyword search?▾

No, and that is deliberate. DubiCars accepts a free-text keyword and then ignores it: a search for "toyota" returned the whole unfiltered catalogue of 25,067 cars with a Mercedes as the first result. Rather than ship a box that does nothing, the API filters by numeric make and model ids, which the site does honour - the makes and models actions give you those ids. If you send a keyword anyway, the response tells you why it cannot work.

How many results can one search return?▾

Up to 900. DubiCars serves thirty pages of thirty rows and refuses anything deeper, which was checked on page 31, 32, 33, 50, 100, 331, 332, 333, 500 and 5,000 - every one refused, while page 30 served normally. Every response reports total_results, reachable_results and fully_reachable, so you always know whether you are seeing all of a query or the first 900 of it.

Is "newest" the date the car was listed?▾

No. DubiCars orders its "latest" view by the time an ad was last refreshed, not by when it was created, and sellers refresh old ads to push them back up. On one measured page of newest-first results the listing ids ran from 909,663 to 1,028,627 while the site's id counter was already past 1,031,900 - so that page was full of older ads bumped today. The API returns that timestamp honestly as refreshed_at with a was_refreshed flag beside it, and does not offer a listed_at field, because DubiCars does not publish one anywhere. If you are tracking genuinely new stock, diff on listing ids between runs.

What currency are the prices in?▾

AED, and the API tells you so on every row rather than assuming it. DubiCars changes both the currency and the number depending on where it thinks the reader is - the same Nissan Patrol was served at 66,700 in one currency and 244,900 AED in another. This API pins the UAE storefront and then reads the currency back out of the response, so price and price_currency always agree with what DubiCars itself published.

Does it return dealer contact details?▾

Yes for dealers: name, phone, a second phone when the ad carries one, the dealer's own page and the kind of business DubiCars classes them as. Dealers were 24,000 of the 25,068 cars on the site at the time of measurement. Private owners are different - their display name and phone are withheld unless you explicitly pass include_pii, which is the same rule our other classifieds APIs follow.

What does the full detail call give me that search does not?▾

The seller's own description, the complete spec sheet and every photo. Across ten random listings the detail call returned twelve to fifteen spec rows - model year, kilometres, regional specs, body type, fuel type, cylinders, transmission, steering side, seats, doors, exterior colour, interior colour, and engine capacity, horsepower and drive type on the ads that publish them - and the photo list matched DubiCars' own photo count on all ten, from seven images up to twenty-five.

Does new versus used actually filter anything?▾

new does, used barely. Asking for new cuts the site total from 25,068 to 12,164, and cuts Toyota from 7,245 to 5,438. Asking for used returns 25,067 of 25,068 - on DubiCars "used" effectively means the entire stock. Both numbers are measured and the parameter's own description says this, so you do not pay for a filter that does nothing.

What does DubiCars not publish?▾

VIN, trim level, service history, view counts and the date an ad was created are not on the page, so they are not in the response - absent rather than guessed. Engine capacity, horsepower and drive type appear on part of the stock only, so they are returned inside the spec sheet exactly as DubiCars wrote them instead of being promised as top-level fields.

What is the DubiCars API?▾

DubiCars API is a ReefAPI endpoint group for uae car marketplace: used and new stock from dealers and private owners across all seven emirates, priced in aed. It returns live JSON through POST requests under /dubicars/v1.

Is the DubiCars API free to try?▾

Yes. ReefAPI starts with 1,000 free credits, no card required. DubiCars calls use the same shared credit balance as every other ReefAPI engine.

Do I need a DubiCars login or account?▾

No login to DubiCars is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the DubiCars data?▾

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the DubiCars API use?▾

DubiCars actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call DubiCars from an AI assistant or MCP client?▾

Yes. Connect ReefAPI once through MCP and your assistant can call dubicars actions with the same key, credit pool and JSON envelope used by normal REST requests.

99 Classifieds & Second-hand APIs on the same key

One key, one credit pool, one response envelope. If you are pulling DubiCars, you are one call away from the rest of the category — no second contract, no second integration.

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 437 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-10-06.