API Documentation

Base URL: https://api.gearautodata.com/api/v1

Overview

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.

REST + JSON

Standard HTTP verbs. Every response is application/json.

Bearer token auth

One API key per integration. Rotate it any time in the dashboard.

Consistent format

Every response includes success, data, and (where applicable) meta.

Response envelope

{
  "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).

Authentication

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"
Get your key — sign in and visit the API Keys page in your developer dashboard. Keys are prefixed td_live_ for production or td_test_ for sandbox testing.

Key security

  • Never expose your API key in client-side JavaScript or public repositories.
  • Rotate your key immediately if you suspect it has been compromised.
  • You can restrict keys by IP address in the dashboard.

Rate Limits

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
PlanPer minutePer dayPer month
Free101001,000
Starter605,00050,000
Pro30050,0001,000,000
EnterpriseCustomCustomCustom

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.

Errors

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 statusError codeMeaning
400bad_requestMalformed request syntax
401unauthorizedMissing or invalid API key
403access_blockedKey or account suspended
403ip_not_allowedRequest IP not in allowlist
403subscription_requiredActive subscription needed for this endpoint
404not_foundResource does not exist
422validation_failedInvalid query parameter — see errors field
429rate_limit_exceededToo many requests per minute
429daily_limit_exceededDaily quota reached
429monthly_limit_exceededMonthly quota reached
500server_errorUnexpected 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."]
  }
}

Pagination

Endpoints that return collections are paginated. Use the page and per_page query parameters to navigate results.

ParameterTypeDefaultMax
pageinteger1
per_pageinteger50200

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.

GET /vehicles/manufacturers

List vehicle manufacturers from the GearAuto catalogue.

ParameterTypeDefaultDescription
typestringPCPC (passenger car), CV (commercial), MOTO
per_pageinteger50Results per page (max 200)
pageinteger1Page 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 }
}

GET /vehicles/manufacturers/{id}/models

List model series for a given manufacturer.

ParameterTypeDescription
id (path)integerManufacturer ID from /manufacturers
per_pageintegerResults per page (max 200, default 50)
pageintegerPage 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 }
}

GET /vehicles/models/{id}/vehicles

List specific vehicle variants (body/engine combinations) within a model series.

ParameterTypeDescription
id (path)integerModel series ID from /models
yearintegerFilter by production year (e.g. 2005)
fuelstringFilter by fuel type: petrol, diesel, electric, hybrid
per_pageintegerResults 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 }
}

GET /parts/categories

Browse the GearAuto parts category tree. Returns root-level categories by default; pass parent_id to drill into subcategories.

ParameterDefaultDescription
typePCVehicle type: PC, CV, MOTO
parent_idnullParent 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  }
  ]
}

GET /parts/vehicle/{vehicleId}

Retrieve all parts that fit a specific vehicle. Optionally filter by category.

ParameterTypeDescription
vehicleId (path)integerVehicle ID from /vehicles
category_idintegerFilter by parts category ID
brandstringFilter by parts brand/supplier (e.g. Bosch)
per_pageintegerResults per page (max 200, default 50)
pageintegerPage 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 }
}

GET /parts/search

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.

ParameterRequiredDescription
numberYesPart number to search (OEM, EAN, trade, or supplier)
per_pageNoResults 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 /parts/article/{id}

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
  }
}

Code Examples

The examples below demonstrate a common workflow: find a BMW 3 Series vehicle, then fetch compatible brake discs.

cURL

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

<?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;
}

JavaScript (fetch)

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`);

Pricing

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

Acceptable Use

By using the API you agree to the following terms. Violations may result in immediate key revocation.

Permitted uses

  • Building automotive applications, catalogues, or parts-finding tools.
  • Internal business tooling and back-office integrations.
  • Research and development on systems you own or are authorised to build.

Prohibited uses

  • Sharing, reselling, or sublicensing raw API data or access to third parties.
  • Bulk exporting the GearAuto catalogue for redistribution.
  • Circumventing rate limits by rotating API keys or using multiple accounts.
  • Automated scraping with no user-facing product.
  • Any use that violates the GearAuto licence or applicable law.

Attribution

When displaying parts data in a user-facing product you must include the statement "Parts data provided by GearAuto" in a reasonably visible location.

Data accuracy

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.

Changes & termination

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() }}.