Base URL: https://api.gearautodata.com/api/v1
The GearAuto API gives you programmatic access to the world's largest automotive parts catalogue. Look up vehicles by manufacturer and model, browse parts categories, find compatible parts, and cross-reference OEM numbers — all over a simple REST interface.
Standard HTTP verbs. Every response is application/json.
One API key per integration. Rotate it any time in the dashboard.
Every response includes success, data, and (where applicable) meta.
{
"success": true,
"data": [ ... ],
"meta": {
"current_page": 1,
"per_page": 50,
"total": 1240,
"last_page": 25
}
}
Error responses always set success: false and include an error object (see Errors).
Every request must include your API key as a Bearer token in the Authorization header.
Authorization: Bearer td_live_xxxxxxxxxxxxxxxxxxxx
Example request:
curl -H "Authorization: Bearer td_live_xxxxxxxxxxxxxxxxxxxx" \ "https://api.gearautodata.com/api/v1/vehicles/manufacturers"
td_live_ for production or td_test_ for sandbox testing.
Limits are enforced at three levels: per-minute (burst), per-day, and per-month. Every response includes the following headers so you can monitor consumption:
X-RateLimit-Limit: 300 X-RateLimit-Remaining: 287 X-RateLimit-Reset: 1716900060
| Plan | Per minute | Per day | Per month |
|---|---|---|---|
| Free | 10 | 100 | 1,000 |
| Starter | 60 | 5,000 | 50,000 |
| Pro | 300 | 50,000 | 1,000,000 |
| Enterprise | Custom | Custom | Custom |
When a limit is exceeded the API responds with HTTP 429 and an appropriate error code (rate_limit_exceeded, daily_limit_exceeded, or monthly_limit_exceeded). Wait until the next window or upgrade your plan.
All errors follow a consistent envelope:
{
"success": false,
"error": {
"code": "rate_limit_exceeded",
"message": "You have exceeded the per-minute rate limit for your plan.",
"status": 429
}
}
| HTTP status | Error code | Meaning |
|---|---|---|
| 400 | bad_request | Malformed request syntax |
| 401 | unauthorized | Missing or invalid API key |
| 403 | access_blocked | Key or account suspended |
| 403 | ip_not_allowed | Request IP not in allowlist |
| 403 | subscription_required | Active subscription needed for this endpoint |
| 404 | not_found | Resource does not exist |
| 422 | validation_failed | Invalid query parameter — see errors field |
| 429 | rate_limit_exceeded | Too many requests per minute |
| 429 | daily_limit_exceeded | Daily quota reached |
| 429 | monthly_limit_exceeded | Monthly quota reached |
| 500 | server_error | Unexpected server-side error |
For 422 validation_failed the response also includes a field-level errors map:
{
"success": false,
"error": {
"code": "validation_failed",
"message": "The given data was invalid.",
"status": 422
},
"errors": {
"type": ["The type field must be one of: PC, CV, MOTO."]
}
}
Endpoints that return collections are paginated. Use the page and per_page query parameters to navigate results.
| Parameter | Type | Default | Max |
|---|---|---|---|
page | integer | 1 | — |
per_page | integer | 50 | 200 |
Every paginated response includes a meta object:
{
"success": true,
"data": [ ... ],
"meta": {
"current_page": 2,
"per_page": 50,
"total": 312,
"last_page": 7,
"from": 51,
"to": 100
}
}
When current_page equals last_page you have reached the final page.
List vehicle manufacturers from the GearAuto catalogue.
| Parameter | Type | Default | Description |
|---|---|---|---|
type | string | PC | PC (passenger car), CV (commercial), MOTO |
per_page | integer | 50 | Results per page (max 200) |
page | integer | 1 | Page number |
curl -H "Authorization: Bearer td_live_xxxx" \
"https://api.gearautodata.com/api/v1/vehicles/manufacturers?type=PC&per_page=10"
{
"success": true,
"data": [
{ "id": 12, "name": "BMW", "type": "PC", "models_count": 148 },
{ "id": 7, "name": "Mercedes", "type": "PC", "models_count": 203 },
{ "id": 25, "name": "Volkswagen","type": "PC", "models_count": 117 }
],
"meta": { "current_page": 1, "per_page": 10, "total": 150, "last_page": 15 }
}
List model series for a given manufacturer.
| Parameter | Type | Description |
|---|---|---|
id (path) | integer | Manufacturer ID from /manufacturers |
per_page | integer | Results per page (max 200, default 50) |
page | integer | Page number |
curl -H "Authorization: Bearer td_live_xxxx" \
"https://api.gearautodata.com/api/v1/vehicles/manufacturers/12/models"
{
"success": true,
"data": [
{
"id": 512,
"manufacturer_id": 12,
"name": "3 Series",
"year_from": 1982,
"year_to": null,
"body_types": ["Saloon", "Touring", "Compact", "Coupe", "Cabriolet"]
}
],
"meta": { "current_page": 1, "per_page": 50, "total": 148, "last_page": 3 }
}
List specific vehicle variants (body/engine combinations) within a model series.
| Parameter | Type | Description |
|---|---|---|
id (path) | integer | Model series ID from /models |
year | integer | Filter by production year (e.g. 2005) |
fuel | string | Filter by fuel type: petrol, diesel, electric, hybrid |
per_page | integer | Results per page (max 200, default 50) |
curl -H "Authorization: Bearer td_live_xxxx" \
"https://api.gearautodata.com/api/v1/vehicles/models/512/vehicles?year=2005&fuel=petrol"
{
"success": true,
"data": [
{
"id": 12345,
"model_id": 512,
"name": "316i",
"body_type": "Saloon",
"engine_code": "N45B16A",
"fuel_type": "Petrol",
"power_hp": 116,
"power_kw": 85,
"displacement_cc": 1596,
"year_from": "2005-03",
"year_to": "2008-09"
}
],
"meta": { "current_page": 1, "per_page": 50, "total": 31, "last_page": 1 }
}
Browse the GearAuto parts category tree. Returns root-level categories by default; pass parent_id to drill into subcategories.
| Parameter | Default | Description |
|---|---|---|
type | PC | Vehicle type: PC, CV, MOTO |
parent_id | null | Parent category ID (omit for root categories) |
curl -H "Authorization: Bearer td_live_xxxx" \
"https://api.gearautodata.com/api/v1/parts/categories?type=PC"
{
"success": true,
"data": [
{ "id": 1, "name": "Brakes", "parent_id": null, "children_count": 12 },
{ "id": 2, "name": "Engine", "parent_id": null, "children_count": 28 },
{ "id": 3, "name": "Suspension", "parent_id": null, "children_count": 19 },
{ "id": 4, "name": "Electrical", "parent_id": null, "children_count": 34 },
{ "id": 5, "name": "Filters & Fluids", "parent_id": null, "children_count": 9 }
]
}
Retrieve all parts that fit a specific vehicle. Optionally filter by category.
| Parameter | Type | Description |
|---|---|---|
vehicleId (path) | integer | Vehicle ID from /vehicles |
category_id | integer | Filter by parts category ID |
brand | string | Filter by parts brand/supplier (e.g. Bosch) |
per_page | integer | Results per page (max 200, default 50) |
page | integer | Page number |
curl -H "Authorization: Bearer td_live_xxxx" \
"https://api.gearautodata.com/api/v1/parts/vehicle/12345?category_id=1&per_page=5"
{
"success": true,
"data": [
{
"article_id": 9000001,
"article_number": "0 986 494 538",
"brand": "Bosch",
"description": "Brake Disc",
"category": "Brakes",
"oem_numbers": ["34116775001", "34116775002"],
"ean": "4047024653580"
}
],
"meta": { "current_page": 1, "per_page": 5, "total": 87, "last_page": 18 }
}
Search for articles by part number. The lookup is cross-reference aware — it matches OEM numbers, trade numbers, EAN codes, and supplier part numbers simultaneously.
| Parameter | Required | Description |
|---|---|---|
number | Yes | Part number to search (OEM, EAN, trade, or supplier) |
per_page | No | Results per page (max 200, default 50) |
curl -H "Authorization: Bearer td_live_xxxx" \
"https://api.gearautodata.com/api/v1/parts/search?number=34116775001"
{
"success": true,
"data": [
{
"article_id": 9000001,
"article_number": "0 986 494 538",
"brand": "Bosch",
"description": "Brake Disc, front",
"oem_numbers": ["34116775001"],
"ean": "4047024653580",
"match_type": "oem_number"
}
]
}
Get full article details including technical attributes, cross-references, and compatible vehicles.
curl -H "Authorization: Bearer td_live_xxxx" \
"https://api.gearautodata.com/api/v1/parts/article/9000001"
{
"success": true,
"data": {
"article_id": 9000001,
"article_number": "0 986 494 538",
"brand": "Bosch",
"description": "Brake Disc, front",
"ean": "4047024653580",
"oem_numbers": [
{ "number": "34116775001", "manufacturer": "BMW" }
],
"attributes": [
{ "name": "Diameter [mm]", "value": "300" },
{ "name": "Brake Disc Type", "value": "Internally Vented" },
{ "name": "Min. Thickness [mm]", "value": "22" }
],
"images": [
{ "url": "https://cdn.tecdoc.com/images/9000001_1.jpg", "type": "product" }
],
"vehicles_count": 43
}
}
Search by OEM part number to find the vehicles and aftermarket articles it applies to.
| Parameter | Required | Description |
|---|---|---|
number | Yes | OEM part number (spaces are ignored) |
per_page | No | Results per page (max 200, default 50) |
curl -H "Authorization: Bearer td_live_xxxx" \
"https://api.gearautodata.com/api/v1/oem/search?number=34116775001"
{
"success": true,
"data": [
{
"oem_number": "34116775001",
"manufacturer_name": "BMW",
"vehicle_id": 12345,
"vehicle_type": "PC",
"vehicle_name": "316i (E46)",
"model_name": "3 Series (E46)",
"year_from": "1998-03",
"year_to": "2005-02"
},
{
"oem_number": "34116775001",
"manufacturer_name": "BMW",
"vehicle_id": 12390,
"vehicle_type": "PC",
"vehicle_name": "318i (E46)",
"model_name": "3 Series (E46)",
"year_from": "1998-03",
"year_to": "2005-09"
}
],
"meta": { "current_page": 1, "per_page": 50, "total": 14, "last_page": 1 }
}
The examples below demonstrate a common workflow: find a BMW 3 Series vehicle, then fetch compatible brake discs.
API_KEY="td_live_xxxxxxxxxxxxxxxxxxxx"
BASE="https://api.gearautodata.com/api/v1"
# Step 1 — find BMW manufacturer ID
curl -s -H "Authorization: Bearer $API_KEY" \
"$BASE/vehicles/manufacturers?type=PC" | jq '.data[] | select(.name=="BMW")'
# Step 2 — list 3 Series model series (manufacturer ID 12)
curl -s -H "Authorization: Bearer $API_KEY" \
"$BASE/vehicles/manufacturers/12/models" | jq '.data[] | select(.name|test("3 Series"))'
# Step 3 — list vehicles for the E46 model series (model ID 512)
curl -s -H "Authorization: Bearer $API_KEY" \
"$BASE/vehicles/models/512/vehicles?fuel=petrol"
# Step 4 — get brake parts for vehicle 12345 (category_id 1 = Brakes)
curl -s -H "Authorization: Bearer $API_KEY" \
"$BASE/parts/vehicle/12345?category_id=1&per_page=20"
<?php
$apiKey = 'td_live_xxxxxxxxxxxxxxxxxxxx';
$base = 'https://api.gearautodata.com/api/v1';
function tecdocGet(string $base, string $apiKey, string $path, array $query = []): array
{
$url = $base . $path . ($query ? '?' . http_build_query($query) : '');
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer {$apiKey}"],
]);
$body = curl_exec($ch);
curl_close($ch);
return json_decode($body, true);
}
// Find vehicles for BMW 3 Series model 512
$vehicles = tecdocGet($base, $apiKey, '/vehicles/models/512/vehicles', ['fuel' => 'petrol']);
foreach ($vehicles['data'] as $v) {
echo $v['name'] . ' — ' . $v['power_hp'] . ' hp' . PHP_EOL;
}
// Fetch compatible brake parts
$parts = tecdocGet($base, $apiKey, '/parts/vehicle/12345', ['category_id' => 1]);
foreach ($parts['data'] as $part) {
echo $part['brand'] . ' ' . $part['article_number'] . ': ' . $part['description'] . PHP_EOL;
}
const API_KEY = 'td_live_xxxxxxxxxxxxxxxxxxxx';
const BASE = 'https://api.gearautodata.com/api/v1';
async function tecdocGet(path, params = {}) {
const url = new URL(BASE + path);
Object.entries(params).forEach(([k, v]) => url.searchParams.set(k, v));
const res = await fetch(url, {
headers: { Authorization: `Bearer ${API_KEY}` },
});
if (!res.ok) {
const err = await res.json();
throw new Error(`${err.error.code}: ${err.error.message}`);
}
return res.json();
}
// Find compatible brake discs for vehicle 12345
const { data: parts, meta } = await tecdocGet('/parts/vehicle/12345', {
category_id: 1,
per_page: 20,
});
console.log(`Found ${meta.total} parts across ${meta.last_page} pages`);
parts.forEach(p => console.log(`${p.brand} ${p.article_number} — ${p.description}`));
// OEM lookup
const { data: oemResults } = await tecdocGet('/oem/search', { number: '34116775001' });
console.log(`OEM number matches ${oemResults.length} vehicles`);
All plans include full access to the GearAuto catalogue. Upgrade or downgrade at any time — changes take effect at the next billing cycle.
| Plan | Monthly | Yearly | Requests/min | Requests/day | Requests/month | API keys |
|---|---|---|---|---|---|---|
| Free | $0 | $0 | 10 | 100 | 1,000 | 1 |
| Starter | $29 | $278 (save 20%) | 60 | 5,000 | 50,000 | 3 |
| Pro | $99 | $948 (save 20%) | 300 | 50,000 | 1,000,000 | 10 |
| Enterprise | Custom volume pricing, SLA, dedicated support — contact us | |||||
By using the API you agree to the following terms. Violations may result in immediate key revocation.
When displaying parts data in a user-facing product you must include the statement "Parts data provided by GearAuto" in a reasonably visible location.
The GearAuto catalogue is provided as-is. We do not warrant the fitness of any part for a particular vehicle. Always validate fitment with a certified mechanic before installation.
We reserve the right to modify these terms or suspend access with 14 days' notice except in cases of material breach, which may result in immediate termination. Questions? Email support{{ request()->getHost() }}.