Get Autodoc data with one API
Autodoc API returns live Autodoc data as clean JSON for autodoc The primary endpoint, vehicle_lookup, returns level ('makers'|'models'|'generations'|'vehicles'|'vehicle') + items[] whose shape follows the level: makers/models/generations are {slug….
6 active endpoints, on 1, 2 and 3 credit tiers.
- POST/autodoc/v1/vehicle_lookup
- POST/autodoc/v1/search
- POST/autodoc/v1/product_detail
- POST/autodoc/v1/part_search
- POST/autodoc/v1/oem_lookup
- POST/autodoc/v1/categories
What Autodoc endpoints does ReefAPI ship?
6 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Autodoc API
3 of 6 endpoints, ready to run
Walk Autodoc's vehicle tree.
// 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 Autodoc API works
Autodoc is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 185 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Autodoc part numbers: which number belongs to whom
A car part has at least three different numbers attached to it and they are not interchangeable. Autodoc has its own internal id, the parts brand has its article number, and the car manufacturer has the OE number the part replaces. Each is looked up by a different action. All examples were measured 2026-08-27 on one RIDEX rear brake pad set.
| Field | Whose number it is | Measured example | Looked up by |
|---|---|---|---|
| article_id | Autodoc's own part id | 7999106 | product_detail (article_id) |
| article_number / sku | The parts brand's number | 402B0071 (RIDEX) | part_search (query) |
| oem_numbers[] | The car maker's original numbers | 34216774692 (BMW), 14 on this one part | oem_lookup (oem_number) |
| ean | GTIN-13 from the spec table | 4059191314577 | returned by product_detail only |
| vehicle_id | One exact engine variant | 12272, BMW E82 118d 2.0 136 hp N47 D20 C | vehicle_lookup, then search |
| category slug | Words plus the real numeric id | brake-pad-set-10130 | categories, then search |
| brand_id | The parts brand | 100015 (RIDEX) | returned on every part row |
The two searches are not interchangeable. part_search takes a parts-brand number: 402B0071 returned article 7999106 first, then BREMBO P 06 038 and FEBI BILSTEIN 16533 as alternatives. oem_lookup takes only a car maker's OE number and answers one it does not carry with a typed NOT_FOUND rather than a landing page. Makers, models and generations have no public numeric id at all, so their slug is the key and maker_id is usually null.
What people build with Autodoc
The jobs this data is most often used for.
endpoints
credits per call
Pricing and assortment teams use Autodoc to get walk Autodoc's vehicle tree.
Brand-protection teams use Autodoc to get the parts that FIT one exact car, in one part category.
Retail analysts use Autodoc to get one part in full, by Autodoc's numeric article id (or its URL).
Catalog enrichment teams use Autodoc to get autodoc's own catalogue-wide search, across roughly 6.7 million parts.
What Autodoc 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 →- 1,000 free credits on signup, no card
- One key, all 185 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 -X POST https://api.reefapi.com/autodoc/v1/vehicle_lookup \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{}'import requests
r = requests.post(
"https://api.reefapi.com/autodoc/v1/vehicle_lookup",
headers={"x-api-key": REEF_KEY},
json={},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Autodoc.
Get a free key →How do I address one exact car?▾
Four path segments: maker, model, generation and vehicle, for example bmw / 1er-reihe / 1-coupe-e82 / 12272-118-d. Model slugs are German even on the UK site, so 1er-reihe is the 1 Series. vehicle accepts either the full slug or the bare numeric id 12272, and search will not run without it. You can replace all four with a single vehicle_url, and the URL's own domain sets the storefront, so an autodoc.de URL prices in EUR without passing market.
Is the category slug validated?▾
Only its numeric suffix is. The words are decoration. A search with category=nonsense-words-10130 came back ok with the category resolved to slug brake-pad-set-10130, category_id 10130, name Brake pads. A slug whose words and id disagree will therefore silently return a different part category. Always copy the slug from the categories action or from the categories[] a vehicle_lookup returns for your car.
Do the UK and German storefronts price the same part differently?▾
They are separate catalogues carrying the same number in a different currency. Article 7999106 returned 10.99 GBP on market=uk and 10.99 EUR on market=de, measured minutes apart, so the numeral is identical and the money is not. Review counts differ too, 41 on the UK listing and 29 on the German one, because each storefront collects its own. Treat them as two catalogues, not one catalogue with a currency switch.
Does compatibility data actually come through?▾
Yes, but through the fitment listing rather than a per-part vehicle list. On the measured part, fits_vehicles came back as an empty array, while compatible_makers listed BMW with maker_id 16 and oem_references listed 14 BMW OE numbers with the maker named against each. The reliable answer to does this fit my car is to run search scoped to a vehicle and read fits_selected_vehicle: it was true on all five brake-pad rows for the E82 118d, and false on the same part returned by oem_lookup, which is not vehicle-scoped.
Why is total_results always null?▾
Autodoc publishes no result count anywhere on the page, and its pagination strip is a sliding window rather than a full list of pages. meta.pagination therefore reports known_pages_at_least, a lower bound, and never a total. Pages are 20 parts each, so page until has_more is false. Each upstream page is roughly 650KB, so set max_results to what you will actually use.
What is the difference between the categories action and a vehicle's own category list?▾
categories returns the catalogue-wide leaf categories, 199 of them, each with a slug and a numeric id. A vehicle_lookup scoped to a car returns a different list that also includes Autodoc's group landing pages, which have no numeric suffix, such as air-conditioning and axle-drive. Those still work as a category value: air-conditioning scoped to the E82 118d returned parts normally. Only about half of the two lists overlap, so prefer the vehicle's own list when you have a car.
Are the numeric category ids the same on both storefronts?▾
Mostly, but not entirely. 164 of the 199 ids published on autodoc.co.uk also appear in the 199 published on autodoc.de. The slugs and names are localised, which matters for the group filter: group=oil returns 17 categories on the UK storefront and 0 on the German one, where the matching word is öl. Filter on the id where you can, and re-read categories per market where you cannot.
Is units_left a real stock figure?▾
It is Autodoc's own ending-soon counter, not a warehouse count, and it varies wildly: 1,873 on the RIDEX pad set and 56 on the RIDEX PLUS front set in the same response. Pair it with in_stock, which is the flag that actually matters; one cross-reference row came back with units_left 0 and in_stock false. rrp against price is where the discount lives, 24.70 against 10.99 GBP with on_sale true on the measured part.
What is the Autodoc API?▾
Autodoc API is a ReefAPI endpoint group for autodoc It returns live JSON through POST requests under /autodoc/v1.
Is the Autodoc API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Autodoc calls use the same shared credit balance as every other ReefAPI engine.
Do I need an Autodoc login or account?▾
No login to Autodoc 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 Autodoc data?▾
The page example is captured from a live vehicle_lookup call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Autodoc API use?▾
Autodoc actions currently cost 1-3 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Autodoc from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call autodoc actions with the same key, credit pool and JSON envelope used by normal REST requests.
15 More APIs APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Autodoc, you are one call away from the rest of the category — no second contract, no second integration.
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 184 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.