Emirates Auction API & Scraper
Emirates Auction is the UAE's official online auction house, and it runs six very different markets under one roof: cars and machinery, vehicle number plates, property, government and police surplus, jewellery and watches, and commercial space for rent.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
This API returns each lot with the facts an auction actually turns on — the live high bid, how many bids are behind it, the minimum next bid and the close time — across 27 sales, for all seven emirates. The number-plate surface is the one you will not find anywhere else: UAE plates are a market of their own, and plate_search sweeps every plate sale that is open in one call, by plate number, code, digit count or pattern. Timestamps are the part most integrations get wrong here, because the source publishes them with no timezone at all: every row carries both ends_at_local (the untouched source string) and ends_at (ISO-8601 with the Asia/Dubai +04:00 offset), and the resolved clock is re-checked against the source's own server time on every call.
What one auction row carries
Field fill measured per sale (cars n=25, plates n=25, property n=19, surplus n=20) — not pooled, because the sales publish different things.
| Field | Fill | What it is |
|---|---|---|
| current_price + price_basis | all rows | On a bidding lot this is the LIVE HIGH BID, not an asking price. price_basis says current_high_bid or fixed_price, so you never have to guess which market you are looking at. |
| bid_count | all bidding rows | Bids placed so far — 0 to 519 observed on the car sale. Matched the detail endpoint exactly on 10 of 10 round trips. |
| min_increment + minimum_next_bid | all bidding rows | The site's own bid step and the smallest bid that will be accepted next. AED 100 across the car sale; five different steps across property. |
| ends_at / ends_at_local / seconds_remaining | all bidding rows | Resolved ISO-8601 with +04:00, the raw source string beside it, and a countdown derived from the resolved instant. Our countdown and the source's own differed by 1-2 seconds over 60+ rows. |
| plate_number + plate_code + plate_digits | 25/25 plate rows | The plate itself. Codes and digit counts are also filters, and the pattern labels (XYZZZ, XYZX, XYZYX…) let you search for repeating-digit plates. |
| reopen_price | 19/19 property rows | The price the lot is re-opened at — 19 distinct values over 19 rows. This is the closest thing to a reserve the source prints. |
| area_sqft + bedrooms + latitude/longitude | 19/19 property rows | Built area in both square feet and square metres, room counts, and real coordinates for every property lot. |
| year + odometer_km | 25/25 and 17/25 car rows | Model year on every car row; odometer on the 17 that are not showroom stock, with the source's own formatted string beside it. |
| emirate | plate and property rows | Published where the source publishes it, and taken from the sale itself on the plate sales. Absent — not null — on cars and surplus, because the source does not say where those lots are. |
| specs (detail) | 15 rows per car | Make, Model, Year, Keys, Exterior, Doors, Transmission, Odometer, Fuel Type, VIN, Trim, Body Type, Manufactured in, Interior, Seats. A row the source leaves blank stays null under its own label. |
Three fields the source technically returns are deliberately NOT published, because a 670-row sweep showed they can never move: is_biddable (false on every row for anyone not signed in — it is about the bidder, not the lot), is_exclusive (false on 670 of 670) and a placeholder-date flag that was false on all 670. There is no reserve-met flag anywhere upstream — we checked the car, property and surplus detail payloads and every list row, and the source publishes none, so no such field is invented. The public bid LOG also needs a bidder account, so only the bid count is available. Three private sales (DIFC, KEZAD-private, The Executive Office) are bidder-restricted and answer accordingly instead of returning an empty list.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/emirates-auction/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"auction": "motors",
"sort": "ending_soonest",
"max_results": 20
}
}{
"ok": true,
"meta": {
"api": "emirates-auction",
"endpoint": "search",
"mode": "live",
"latency_ms": 1651.4,
"record_count": 20,
"bytes": 31243,
"cache_hit": false,
"completeness_pct": 100,
"stop_reason": "limit_reached",
"charged_credits": 1,
"version": "1.0.0",
"request_id": "f91b0bdcbd574420",
"queue_ms": 1.5,
"fetched_at": "2026-10-06T14:47:18.516Z"
},
"data": {
"summary": {
"auction": "motors",
"auction_type_id": 4,
"auction_name": "Cars, bikes, trucks & machinery",
"lot_kind": "vehicle",
"total_results": 982,
"source_filtered_count": null,
"count_disagrees": null,
"returned": 20,
"page": 1,
"page_size": 20,
"last_page": 50,
"has_more": true,
"auction_running": true,
"auction_ends_at": "2026-10-06T18:48:17+04:00",
"filters_applied": {},
"sort": "ending_soonest",
"auction_ends_at_local": "2026-10-06T18:48:17",
"server_time": "2026-10-06T18:47:18+04:00",
"timezone": "Asia/Dubai",
"utc_offset_hours": 4,
"clock_drift_seconds": 0
},
"rows": [
{
"lot_id": "661668",
"title": "2018 Cadillac XTS",
"url": "https://www.emiratesauction.com/auctions/vehicles/661668/4",
"auction": "motors",
"auction_type_id": 4,
"auction_name": "Cars, bikes, trucks & machinery",
"lot_kind": "vehicle",
"classification": "vehicle",
"sale_type": "bidding_auction",
"current_price": 17400,
"price_display": "17,400",
"price_basis": "current_high_bid",
"currency": "AED",
"lot_number": 661668,
"bid_count": 179,
"min_increment": 100,
"minimum_next_bid": 17500,
"ends_at": "2026-10-06T18:48:17+04:00",
"ends_at_local": "2026-10-06T18:48:17",
"ends_at_display": "06 Oct, 06:48 PM",
"seconds_remaining": 59,
"source_seconds_remaining": 58,
"ended": false,
"images": [
"https://cdn.emiratesauction.com/media/1srz2lt2tg8njjzdr2uv3brylm25mryzs97why53qs8udcv8xi/t_,w_1200,h_900/images.jpg"
],
"tags": [
{
"name": "[trimmed-depth]",
"value": "[trimmed-depth]"
},
{
"name": "[trimmed-depth]",
"value": "[trimmed-depth]"
}
],
"year": 2018,
"odometer_km": 200085,
"odometer_display": "200,085 Km",
"specs_region": "GCC specs",
"has_360_view": false,
"view_360_url": null
},
{
"lot_id": "644329",
"title": "2026 LEIYU LY928",
"url": "https://www.emiratesauction.com/auctions/vehicles/644329/4",
"auction": "motors",
"auction_type_id": 4,
"auction_name": "Cars, bikes, trucks & machinery",
"lot_kind": "vehicle",
"classification": "vehicle",
"sale_type": "bidding_auction",
"current_price": 30700,
"price_display": "30,700",
"price_basis": "current_high_bid",
"currency": "AED",
"lot_number": 644329,
"bid_count": 132,
"min_increment": 100,
"minimum_next_bid": 30800,
"ends_at": "2026-10-06T18:48:57+04:00",
"ends_at_local": "2026-10-06T18:48:57",
"ends_at_display": "06 Oct, 06:48 PM",
"seconds_remaining": 99,
"source_seconds_remaining": 98,
"ended": false,
"images": [
"https://cdn.emiratesauction.com/media/ssm5e71u4mdmdskek3vm9a27brsbhzlv8w3fsjos5shil45f6/t_,w_1200,h_900/images.jpg"
],
"year": 2026,
"odometer_km": 0,
"odometer_display": "N/A",
"specs_region": null,
"has_360_view": false,
"view_360_url": null
},
{
"lot_id": "662593",
"title": "2020 Ford F 150",
"url": "https://www.emiratesauction.com/auctions/vehicles/662593/4",
"auction": "motors",
"auction_type_id": 4,
"auction_name": "Cars, bikes, trucks & machinery",
"lot_kind": "vehicle",
"classification": "vehicle",
"sale_type": "bidding_auction",
"current_price": 30200,
"price_display": "30,200",
"price_basis": "current_high_bid",
"currency": "AED",
"lot_number": 662593,
"bid_count": 94,
"min_increment": 100,
"minimum_next_bid": 30300,
"ends_at": "2026-10-06T18:49:00+04:00",
"ends_at_local": "2026-10-06T18:49:00",
"ends_at_display": "06 Oct, 06:49 PM",
"seconds_remaining": 102,
"source_seconds_remaining": 101,
"ended": false,
"images": [
"https://cdn.emiratesauction.com/media/5o7f9ivpu4wuhausqeudenr1brle9o3nxjkbdwwch5at57rq2/t_,w_1200,h_900/images.jpg"
],
"tags": [
{
"name": "[trimmed-depth]",
"value": "[trimmed-depth]"
},
{
"name": "[trimmed-depth]",
"value": "[trimmed-depth]"
},
{
"name": "[trimmed-depth]",
"value": "[trimmed-depth]"
}
],
"year": 2020,
"odometer_km": null,
"odometer_display": null,
"specs_region": null,
"has_360_view": false,
"view_360_url": null
}
]
}
}What the Emirates Auction API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| auctions | Every Emirates Auction sale this engine can read, with the site's own live lot count for the ones running right now. This is the calendar you call first: it tells you which `auction` slugs have lots today (measured 2026-10-06: motors 984, general-items 166, Fujairah plates 80, Dubai property 26, 261 plates in all), which are between sessions, and which are bidder-restricted. | Pricing teams call auctions to get every Emirates Auction sale this engine can read, with the site's own live lot count for the…. | language |
| search | Lots in one Emirates Auction sale, filtered the way the site itself filters them. Works across every lot kind: cars and machinery, number plates, property, police and customs surplus, jewellery, ships, space for rent. Every auction row carries the live high bid, the bid count, the minimum next bid and the close time resolved to Asia/Dubai (+04:00) alongside the source's raw string — because on an auction a bare 'price' is not an answer. | Marketplace operators call search to get lots in one Emirates Auction sale, filtered the way the site itself filters them. | auction, query, sort, page, max_results, ... |
| detail | The full sheet for one lot: the complete label/value spec table, every feature and condition bullet the sale publishes, the document links (a vehicle's inspection-report PDF, the terms), the whole photo gallery, the 360° viewer, the provider, the live bid state and the close time. Takes the `lot_id` and the `auction` a `search` row came from. | Catalog enrichment teams call detail to get the full sheet for one lot. | auction, lot_id, language |
| plate_search | 🔑 THE PLATE SURFACE. Search UAE vehicle number plates across EVERY plate sale Emirates Auction has open — Sharjah, Ajman, Ras Al Khaimah, Umm Al Quwain and Fujairah direct sale plus the Abu Dhabi / UAE / Dubai / jet-ski bidding auctions — in one call, by plate number, code, digit count or pattern. UAE plates are a market of their own (short and repeating-digit plates trade for millions of dirhams) and no other engine in this catalogue covers it. Sales with no session open are reported in `summary.auctions_closed`, not hidden. | Retail analysts call plate_search to get 🔑 THE PLATE SURFACE. | query, plate_codes, plate_digits, plate_patterns, price_min, ... |
| ending_today | Every lot closing TODAY across all of Emirates Auction, in one call, newest deadline first — the sweep a bidder actually runs each morning. Each row names its own sale (`auction_name`, `auction_type_id`) so a mixed feed stays attributable, and carries the same bid state and resolved close time as `search`. Measured 361-375 lots on 2026-10-06. | Pricing teams call ending_today to get every lot closing TODAY across all of Emirates Auction, in one call, newest deadline first. | query, price_min, price_max, sort, page, ... |
| filters | The sale's own facet sheet AND its count oracle: every category, vehicle make and model, body type, plate code, plate pattern, digit count, emirate, ownership type, provider and closing-day bucket that is LIVE in that sale, each with the number of lots behind it, plus the price / year / mileage / area sliders. Pass the same filters you would pass to `search` and the answer is the source's own count for that exact combination — the cheap way to size a query before you page through it, and the ids `search` expects. | Marketplace operators call filters to get the sale's own facet sheet AND its count oracle. | auction, query, category_ids, make_ids, model_ids, ... |
Call search from your stack
curl -X POST https://api.reefapi.com/emirates-auction/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"auction":"motors","sort":"ending_soonest","max_results":20}'import requests
r = requests.post(
"https://api.reefapi.com/emirates-auction/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"auction": "motors",
"sort": "ending_soonest",
"max_results": 20
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/emirates-auction/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"auction": "motors",
"sort": "ending_soonest",
"max_results": 20
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.emirates-auction.search with {"auction":"motors","sort":"ending_soonest","max_results":20}.Who uses this API and why
- UAE number-plate market research: price every open plate sale by digit count, code and repeating-digit pattern in one call.
- Bid-timing and alerting tools that need the close time right to the second in a real timezone, not a naive string.
- Used-car sourcing in the Gulf: 984 lots with year, odometer, make, model and the inspection report, filtered by price and mileage band.
- Dubai and northern-emirates property deal flow with area, coordinates, ownership type and the re-open price.
- Government and police surplus monitoring across Dubai Police, Abu Dhabi Police, Dubai Customs, ships and jewellery, with a single ending-today sweep each morning.
Questions developers ask before integrating
What timezone are the close times in?
Asia/Dubai, UTC+04:00, and the UAE observes no daylight saving. The source publishes a naive string with no offset and no Z, which is how integrations end up four hours out. We fixed the offset against three independent witnesses: the payload's own server time states +04:00 (16:49:01+04:00 while our UTC clock read 12:49:01Z), subtracting the source's own countdown from the end date reproduces that same wall clock to within a second, and the home payload publishes one instant twice, once naive and once as a unix stamp, differing by exactly four hours. ends_at is the resolved ISO-8601 value, ends_at_local is the untouched source string so you can always check our arithmetic, and a disagreement with the source's clock is published as a warning rather than hidden.
Can I search UAE number plates?
Yes, and it is the surface worth coming here for. plate_search sweeps every plate sale that is open in one call — the Sharjah, Ajman, Ras Al Khaimah, Umm Al Quwain and Fujairah direct sales plus the Abu Dhabi, UAE-federal, Dubai and jet-ski bidding auctions — by plate number, code, digit count or pattern. On 2026-10-06 that was 259 plates across five open sales, AED 3,900 to 29,000, and an exact lookup of plate 45440 returned the single Sharjah plate at AED 12,000 on code 3. Sales with no session open are listed separately from sales that are open but hold nothing matching, because those are two different answers.
Which sales are covered and how big are they?
27 sales are addressable by slug. Live on 2026-10-06: cars and machinery 984 lots, number plates 260 across five emirates, general surplus 166, Dubai Police items 69, jewellery and watches 67, Abu Dhabi Police 49, Dubai property 22-33, ships and barges 1, space for rent 1. The auctions action returns the current count for each one, so you never have to guess which sale has lots today.
Do the filters actually filter?
Each one was checked against an unfiltered control in the same minute, and the source's own count endpoint was used as a second witness. Against 984 unfiltered cars: keyword toyota 107, rolls royce 3, bikes 39, a single make 1, body type 1, year 2024 or newer 55, under 20,000 km 27, over AED 200,000 9. The source's own facet count agreed exactly on all four combinations we cross-checked (107/107, 39/39, 1/1, 23/23). Four sort orders are published because four were proven to reorder the result; three more that the source accepts and then ignores are deliberately not offered.
How deep can I page?
As deep as the sale goes, and the end is honest. For the 984-lot car sale at 20 rows a page the last page carrying rows was 49, holding the final 4; pages 50, 51, 100 and 1000 all returned an empty answer rather than silently repeating the last page. The response tells you last_page and has_more. One call returns up to 200 rows.
Is the data bilingual?
Yes. Set language to ar and titles, categories and labels come back in Arabic — the same three surplus lots read 'Commercial license (CLOCK TOWER PETROL PUMP)', 'Vehicle Parts Equipment', 'Office furniture' in English and 'رخصة تجارية (محطة برج الساعة)', 'معدات قطع غيار المركبات', 'اثاث مكتبي' in Arabic. Arabic keyword search works too.
What does a car detail call give me beyond the listing row?
The full 15-row spec table, the condition and terms bullets, the inspection-report PDF link, the whole photo gallery, the 360-degree viewer URL where the lot has one, the provider, the yard, whether 5% VAT applies on the hammer price, and the deposit bands the sale requires. Measured over 10 lots across five sales: every id round-tripped exactly and every price matched the search row.
What needs an account and is therefore not here?
The public bid log, your own bids and watchlist, and three bidder-restricted sales (DIFC, KEZAD-private, The Executive Office). Everything this API returns is what a visitor sees without signing in. Closed and past auctions are also not covered yet.
What is the Emirates Auction API?
Emirates Auction API is a ReefAPI endpoint group for uae government auctions — cars, number plates, property and police surplus, with the bid count and the real dubai close time. It returns live JSON through POST requests under /emirates-auction/v1.
Is the Emirates Auction API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Emirates Auction calls use the same shared credit balance as every other ReefAPI engine.
Do I need an Emirates Auction login or account?
No login to Emirates Auction 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 Emirates Auction data?
The page example is captured from a live auctions call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Emirates Auction API use?
Emirates Auction 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 Emirates Auction from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call emirates-auction actions with the same key, credit pool and JSON envelope used by normal REST requests.