# Autochek used-car marketplace — Nigeria, Kenya, Ghana, Uganda, Côte d'Ivoire

> Search live Autochek used-car listings in one market. Price is an integer in that market's own currency and the currency is returned as a separate field — figures are never converted between markets. Ten filters were each measured against an unfiltered control in two different markets and all ten bite.
> ReefAPI engine `autochek` · 6 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/autochek/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). Send the key as `Authorization: Bearer <key>`, or put it in the URL (`?key=<key>`) when the client has no header field, as ChatGPT does.

## Endpoints

### POST https://api.reefapi.com/autochek/v1/search — 2 credits
Search live Autochek used-car listings in one market. Price is an integer in that market's own currency and the currency is returned as a separate field — figures are never converted between markets. Ten filters were each measured against an unfiltered control in two different markets and all ten bite.

**Parameters:**
- `country` (enum, required) — Autochek market to search. Only the five markets Autochek itself operates are served; the group's other country links (Senegal, Morocco, Egypt) are partner sites with no Autochek inventory and are rejected. Verified live 2026-10-06. [one of: ng, ke, gh, ug, ci]
- `query` (string, optional) — Free-text match over the listing title, e.g. 'corolla', 'land cruiser', 'cx-5'. Measured: Nigeria 9 253 unfiltered → 667 for 'corolla'.
- `make_id` (integer, optional) — Numeric make id from the `makes` action (Toyota = 106, Honda = 45, Mercedes-Benz = 70). Make NAMES are not accepted by the source. Measured over 50 rows: Honda 50/50 and Mercedes-Benz 50/50 pure, Toyota 49/50 — the source groups one Lexus under Toyota.
- `body_type_id` (integer, optional) — Numeric body-type id from the `body_types` action (SUV = 3, Sedan = 8, Hatchback = 5).
- `transmission` (enum, optional) — Gearbox as the source labels it. `manual` also returns the rows the source labels `simulated-manual` (measured). [one of: automatic, manual, cvt, simulated-manual, duplex]
- `fuel` (enum, optional) — Fuel as the source labels it. [one of: petrol, diesel, hybrid-petrol]
- `condition` (enum, optional) — Import/condition class: `foreign` = imported used, `local` = locally used, `new` = brand new. [one of: foreign, local, new]
- `state` (string, optional) — State/region name exactly as the source spells it ('Lagos', 'Nairobi', 'Accra'). See the `locations` action.
- `city` (string, optional) — City/area name exactly as the source spells it ('Lekki'). See the `locations` action.
- `warranty_only` (boolean, optional) — Keep only listings the source flags as warranty-backed.
- `auction_only` (boolean, optional) — Keep only listings the source flags as auction stock.
- `featured_only` (boolean, optional) — Keep only listings the source flags as featured.
- `page` (integer, optional, default 1) — 1-based page. Past the last page the source returns an honest empty window rather than repeating the last one.
- `limit` (integer, optional, default 24) — Rows per page, 1-100 (source default window is 24).

**Returns:** country,currency,page,limit,count,source_total,last_page,has_more,filters_applied,results[]{listing_id,url,title,make,model,year,price,price_before,currency,monthly_installment,financing_available,loan_value,mileage,mileage_unit,transmission,fuel,engine_displacement_cc,engine_type,body_type_id,condition,inspected,accidented,warranty,auction,featured,sold,grade_score,listing_score,city,state,seller_id,listed_at,summary,image,images}

**Example request body:**
```json
{
  "country": "ng",
  "limit": 10
}
```

### POST https://api.reefapi.com/autochek/v1/listing_detail — 1 credit
Full public detail for one listing by the `listing_id` that search returns: the search fields plus make/model ids, trim, drive, partially masked VIN, both colours, the dealer name and age, the feature list, every published photo and the market's financing terms.

**Parameters:**
- `listing_id` (string, required) — Opaque listing id from search, e.g. 'r6HW7G352'. The complete Autochek car URL is also accepted.

**Returns:** listing_id,country,url,title,make,model,make_id,model_id,trim,wheel_drive,year,price,price_before,currency,monthly_installment,loan_value,financing_terms,mileage,mileage_unit,transmission,fuel,engine_displacement_cc,engine_type,condition,vin,exterior_color,interior_color,owner_type,seller_name,seller_since,city,state,grade_score,inspected,accidented,warranty,damage_count,features[],images[]{url,label},created_at,updated_at,listed_at

**Example request body:**
```json
{
  "listing_id": "r6HW7G352"
}
```

### POST https://api.reefapi.com/autochek/v1/makes — 1 credit
The marketplace's published make reference list with the numeric ids the `make_id` search filter needs. The list is group-wide, not per market — the source accepts a country parameter here and ignores it (measured: NG and KE return the identical 257 rows), so no country filter is offered.

**Parameters:**
- `page` (integer, optional, default 1) — 1-based page.
- `limit` (integer, optional, default 100) — Rows per page, 1-500. The whole list is 257 rows.

**Returns:** page,limit,count,source_total,last_page,has_more,results[]{id,name}

**Example request body:**
```json
{
  "limit": 100
}
```

### POST https://api.reefapi.com/autochek/v1/models — 1 credit
Model reference list: every model the marketplace knows, with its id and its make. Filterable by `make_id`. Note the source has NO working model filter on search — a model id that provably exists in the inventory (Corolla = 1891, carried by 5 of 6 sampled Nigerian Toyotas) returns 0 results, so no `model_id` search filter is offered. Narrow by model with `query` instead, which is measured to work.

**Parameters:**
- `make_id` (integer, optional) — Restrict to one make's models (Toyota = 106).
- `page` (integer, optional, default 1) — 1-based page.
- `limit` (integer, optional, default 100) — Rows per page, 1-500.

**Returns:** page,limit,count,source_total,last_page,has_more,results[]{id,name,make{id,name}}

**Example request body:**
```json
{
  "make_id": 106
}
```

### POST https://api.reefapi.com/autochek/v1/body_types — 1 credit
The 21 published body types with the numeric ids the `body_type_id` search filter needs (SUV = 3, Sedan = 8, Hatchback = 5).

**Parameters:**
- `page` (integer, optional, default 1) — 1-based page.
- `limit` (integer, optional, default 100) — Rows per page, 1-500. The whole list is 21 rows.

**Returns:** page,limit,count,source_total,last_page,has_more,results[]{id,name}

**Example request body:**
```json
{
  "page": 1
}
```

### POST https://api.reefapi.com/autochek/v1/locations — 1 credit
The state or city reference list, giving the exact spellings the `state` and `city` search filters expect. Cities carry their state. Like the make list this reference is group-wide and NOT country-scoped — the source ignores a country parameter here (measured), so the list mixes all markets and no country filter is offered.

**Parameters:**
- `kind` (enum, optional, default "state") — Which reference list to return. [one of: state, city]
- `state_id` (integer, optional) — With `kind=city`, restrict to one state's cities.
- `page` (integer, optional, default 1) — 1-based page.
- `limit` (integer, optional, default 100) — Rows per page, 1-500.

**Returns:** page,limit,count,source_total,last_page,has_more,results[]{id,name,state{id,name}}

**Example request body:**
```json
{
  "kind": "state"
}
```

## At scale
- **Volume:** 5M+ requests a day, measured at 60 requests a second across the fleet with no
  central bottleneck. Per-key limits are raised for high-volume accounts; volume pricing on request.
- **Missing a source:** tell us a site we do not cover and it becomes an engine. A customer asked
  for bestprice.gr on 21 Sep 2026 and it was in the catalog on 22 Sep.
- **Support:** 2 minute median time from a question in the live chat to the first answer. Setup
  help included, no support tier to buy.
- **One key, one credit pool** across every API. No per-site plans, no separate subscriptions.

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