REST API · v1

API Documentation

Base URL: https://api.gearautodata.com/api/v1  ·  Try it live →

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 auth

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

Consistent format

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

Response envelope

200 OK · application/json
{
  "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 — bash
● LIVE
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. Keys are prefixed td_live_ for production or td_test_ for sandbox.

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 to specific IP addresses in the dashboard.
Rate Limits

Limits are enforced at three levels: per-minute (burst), per-day, and per-month. Every response includes these headers:

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:

429 Too Many Requests
{
  "success": false,
  "error": {
    "code": "rate_limit_exceeded",
    "message": "You have exceeded the per-minute rate limit for your plan.",
    "status": 429
  }
}
HTTPError 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
404not_foundResource does not exist
422validation_failedInvalid query parameter
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": "...", "status": 422 },
  "errors": { "type": ["The type field must be one of: PC, CV, MOTO."] }
}
Pagination

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

ParameterTypeDefaultMax
pageinteger1
per_pageinteger50200
{
  "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.

Endpoints
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
GET /api/v1/vehicles/manufacturers
● LIVE
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.

ParameterTypeDefaultDescription
id (path)integerManufacturer ID from /manufacturers
typestringPCPC, CV or MOTO
language_idinteger4Language ID
curl -H "Authorization: Bearer td_live_xxxx" \
  "https://api.gearautodata.com/api/v1/vehicles/manufacturers/12/models?language_id=4"

{
  "success": true,
  "data": [
    {
      "id": 512,
      "manufacturer_id": 12,
      "name": "3 Series",
      "type": "PC",
      "year_from": 1982,
      "year_to": null
    }
  ]
}
GET /vehicles/models/{id}/vehicles

List vehicle variants for a model series. Returns basic identification fields. If you need engine details, use the Modifications endpoint.

ParameterTypeDefaultDescription
id (path)integerModel series ID
yearintegerFilter by production year
language_idinteger4Language ID
curl -H "Authorization: Bearer td_live_xxxx" \
  "https://api.gearautodata.com/api/v1/vehicles/models/512/vehicles?year=2005"

{
  "success": true,
  "data": [
    {
      "id": 12345,
      "manufacturer_id": 12,
      "model_id": 512,
      "name": "316i",
      "vehicle_type": "PC"
    }
  ]
}
GET /models/{id}/vehicles

List vehicle modifications for a model series with engine details (engine code, power, displacement, production years). This is the endpoint to use for the make → model → modification flow.

ParameterTypeDefaultDescription
id (path)integerModel series ID
language_idinteger4Language ID
per_pageinteger50Results per page (max 200)
pageinteger1Page number
curl -H "Authorization: Bearer td_live_xxxx" \
  "https://api.gearautodata.com/api/v1/models/5953/vehicles?language_id=4"

{
  "success": true,
  "data": [
    {
      "vehicle_id": 21886,
      "brand": "ACURA",
      "model_series": "CL Coupe",
      "vehicle_name": "2.2",
      "year_from": null,
      "year_to": 2003,
      "engine_code": "F22B2",
      "engine_sales_name": null,
      "kw_from": 108,
      "kw_to": null,
      "hp_from": 147,
      "hp_to": null,
      "ccm_from": 2156,
      "ccm_to": null,
      "engine_from": null,
      "engine_to": null
    }
  ],
  "meta": { "current_page": 1, "per_page": 50, "total": 3, "last_page": 1 }
}
GET /vehicles/{vehicleId}/summary

Get a minimal make/model/engine summary for a single vehicle.

ParameterTypeDefaultDescription
vehicleId (path)integerVehicle ID
language_idinteger4Language ID
curl -H "Authorization: Bearer td_live_xxxx" \
  "https://api.gearautodata.com/api/v1/vehicles/25124/summary?language_id=4"

{
  "success": true,
  "data": {
    "vehicle_id": 25124,
    "brand": "HONDA",
    "model_series": "ODYSSEY (RL1, RA6, RA_)",
    "vehicle_name": "3.5",
    "year_from": null,
    "year_to": null,
    "engines": [
      {
        "engine_code": "J35A5",
        "engine_sales_name": "J-Series",
        "kw_from": 188,
        "kw_to": 191,
        "hp_from": 256,
        "hp_to": 260,
        "ccm_from": 3471,
        "ccm_to": null,
        "engine_from": null,
        "engine_to": null
      }
    ]
  }
}
GET /parts/categories

Browse GearAuto parts categories as a flat list. Each item includes its parent and level so you can build the tree yourself. For a ready-to-use nested tree, see the Category tree endpoint.

ParameterTypeDefaultDescription
typestringPCVehicle type: PC, CV, MOTO
vehicle_idintegerOnly categories with parts for this vehicle
limitinteger1000Max records (max 5000)
language_idinteger4Language ID
curl -H "Authorization: Bearer td_live_xxxx" \
  "https://api.gearautodata.com/api/v1/parts/categories?type=PC&limit=10"

{
  "success": true,
  "data": [
    { "id": 100001, "name": "Body",   "parent_id": null, "level": 1, "is_leaf": false },
    { "id": 100002, "name": "Engine", "parent_id": null, "level": 1, "is_leaf": false }
  ]
}
GET /categories/tree

Return the full category hierarchy as a nested tree of categories and subcategories.

ParameterTypeDefaultDescription
typestringPCVehicle type: PC, CV, MOTO
max_depthintegerLimit how many levels deep to return
language_idinteger4Language ID
curl -H "Authorization: Bearer td_live_xxxx" \
  "https://api.gearautodata.com/api/v1/categories/tree?type=PC&max_depth=2"

{
  "success": true,
  "data": [
    {
      "id": 100002,
      "name": "Engine",
      "level": 1,
      "is_leaf": false,
      "children": [
        {
          "id": 100223,
          "name": "Gaskets",
          "level": 2,
          "is_leaf": false,
          "children": []
        }
      ]
    }
  ]
}
GET /parts/vehicle/{vehicleId}

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

ParameterTypeDescription
vehicleId (path)integerVehicle ID
category_idintegerFilter by parts category ID
brandstringFilter by parts brand (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"], "ean": "4047024653580"
    }
  ],
  "meta": { "current_page": 1, "per_page": 5, "total": 87, "last_page": 18 }
}
GET /vin/{vin}/parts/grouped

Return a nested category tree (categories and subcategories) for the vehicle resolved from a VIN, where each leaf node carries part groups keyed by part name — e.g. "Oil filter" appears once. Ideal for a category-tree UI. No pagination — the entire catalogue for the vehicle is returned in a single response; use category_id to scope it down if needed.

An unscoped request returns group summaries: each group carries article_count, brand_count, sample_article_number and sample_brand — small and fast even for vehicles with tens of thousands of articles. Load the articles of one group on demand via /vin/{vin}/parts/group/{productTypeId}. When the request is scoped with category_id or details=1 is passed, every group instead contains its full articles[] list (OE numbers, cross references, technical attributes, EAN, media). The details field in the response shows which mode was used.

ParameterTypeDefaultDescription
vin (path)string17-character VIN
vehicle_idintegerOverride the resolved vehicle ID (skips VIN decoding — faster)
typestringPCVehicle type: PC, CV, MOTO
category_idintegerLimit results to one category and its subcategories (implies full article details)
detailsbooleanfalseForce full article lists (OE numbers, cross references, attributes, media) even without category_id — the response can be very large
language_idinteger4Language ID

Response structure

FieldTypeDescription
categories[]arrayNested tree. Node fields: id, name, level, is_leaf, groups[], children[] (recursive)
groups[]arrayOne entry per part name in this category. Always present: product_type_id, name, category_id, article_count, brand_count. In summary mode additionally sample_article_number and sample_brand; in details mode the full articles[] list instead
articles[]array(details mode only) All interchangeable articles, sorted by brand + number. Fields: id, article_number, brand, supplier_id, description, complete_description, is_replacement, is_accessory, oe_numbers[], cross_references[], ean, attributes[], media[], thumbnail
detailsbooleantrue when groups carry full article lists (request scoped with category_id or details=1), false in summary mode
total_groups / total_articlesintegerOverall counts across the whole tree
curl -H "Authorization: Bearer td_live_xxxx" \
  "https://api.gearautodata.com/api/v1/vin/1HGFA16899L003948/parts/grouped?language_id=4"

{
  "success": true,
  "data": {
    "vin": "1HGFA16899L003948",
    "vehicle_id": 20348,
    "details": false,
    "total_groups": 132,
    "total_articles": 691,
    "categories": [
      {
        "id": 100002, "name": "Engine", "level": 1, "is_leaf": false,
        "groups": [],
        "children": [
          {
            "id": 100223, "name": "Filters", "level": 2, "is_leaf": true,
            "children": [],
            "groups": [
              {
                "product_type_id": 397,
                "name": "Oil Filter",
                "category_id": 100223,
                "article_count": 14,
                "brand_count": 6,
                "sample_article_number": "0451103314",
                "sample_brand": "BOSCH"
              }
            ]
          }
        ]
      }
    ]
  },
  "meta": { "request_id": "...", "remaining_daily_requests": 98 }
}
Interchangeable parts vs cross references — the articles[] inside a group are parts TecDoc confirms as fitting this exact vehicle. cross_references[] on an article are supplier-declared number equivalences for lookup by number only; they do not guarantee fitment for this vehicle. oe_numbers[] are the original manufacturer numbers the article replaces.
GET /vin/{vin}/parts/group/{productTypeId}

Return all interchangeable articles of one part group (every brand/manufacturer) that fit the vehicle resolved from a VIN, each with full details: OE numbers, cross references, technical attributes, EAN, and media. Companion of the summary-mode grouped tree: the tree tells you which groups exist, this endpoint loads the articles of a single group on demand — keeping every response small. Returns 404 group_not_found when no parts of that group fit the vehicle.

ParameterTypeDefaultDescription
vin (path)string17-character VIN
productTypeId (path)integerPart group ID (product_type_id from the grouped tree)
vehicle_idintegerOverride the resolved vehicle ID (skips VIN decoding — faster)
typestringPCVehicle type: PC, CV, MOTO
language_idinteger4Language ID

Response structure

FieldTypeDescription
groupobjectproduct_type_id, name, category_id, article_count, brand_count, articles[]
group.articles[]arrayAll interchangeable articles, sorted by brand + number. Fields: id, article_number, brand, supplier_id, description, complete_description, is_replacement, is_accessory, oe_numbers[], cross_references[], ean, attributes[], media[], thumbnail
curl -H "Authorization: Bearer td_live_xxxx" \
  "https://api.gearautodata.com/api/v1/vin/1HGFA16899L003948/parts/group/397?language_id=4"

{
  "success": true,
  "data": {
    "vin": "1HGFA16899L003948",
    "vehicle_id": 20348,
    "group": {
      "product_type_id": 397,
      "name": "Oil Filter",
      "category_id": 100223,
      "article_count": 14,
      "brand_count": 6,
      "articles": [
        {
          "id": 5550001, "article_number": "HU 718/1 k", "brand": "MANN-FILTER",
          "supplier_id": 35, "description": "", "complete_description": "Oil Filter",
          "is_replacement": false, "is_accessory": false,
          "oe_numbers": [ { "number": "11427512300", "brand": "BMW" } ],
          "cross_references": [ { "number": "0451103314", "brand": "BOSCH", "type": "IAMNumber" } ],
          "ean": "4011558295707",
          "attributes": [ { "name": "Height", "value": "89", "unit": "mm" } ],
          "media": [ { "url": "...", "type": "image" } ],
          "thumbnail": "..."
        },
        { "id": 5550002, "article_number": "0451103314", "brand": "BOSCH", "...": "..." }
      ]
    }
  },
  "meta": { "request_id": "...", "remaining_daily_requests": 98 }
}
GET /vehicles/{vehicleId}/engine-parts

Best-effort "engine exploded view" for a selected vehicle/engine modification. Returns aftermarket parts from engine-related categories (pistons, crankshaft, camshaft, cylinder head, gaskets, belts, pumps, filters, etc.) that fit the vehicle, including OEM references, criteria, and media.

Note: TecDoc is an aftermarket catalogue, not an OEM parts catalogue. It does not contain a complete engine bill of materials, so internal components not catalogued as replacement parts will be missing.

ParameterTypeDescription
vehicleId (path)integerVehicle ID (selected engine modification)
brandstringFilter by parts brand
article_numberstringFilter by article number (partial match)
limitintegerResults per page (max 500, default 50)
pageintegerPage number
language_idintegerLanguage ID (default 4)
curl -H "Authorization: Bearer td_live_xxxx" \
  "https://api.gearautodata.com/api/v1/vehicles/6882/engine-parts?limit=10"

{
  "success": true,
  "data": [
    {
      "article_id": 123,
      "article_number": "0 986 494 059",
      "brand": "BOSCH",
      "product_type": "Piston",
      "criteria": [
        { "name": "Diameter [mm]", "value": "82.5", "unit": "mm" }
      ],
      "oem_references": [
        { "oem_number": "7701473142", "brand": "RENAULT" }
      ],
      "thumbnail": "...",
      "media": []
    }
  ],
  "meta": {
    "vehicle_id": 6882,
    "engine_part_categories": [443, 444, 566, 1263, ...],
    "current_page": 1,
    "per_page": 10,
    "total": 1604,
    "last_page": 161
  }
}
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)
GET /api/v1/parts/search
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": {
    "id": 9000001,
    "article_number": "0 986 494 538",
    "brand": "Bosch",
    "supplier_id": 123,
    "description": "Brake Disc, front",
    "complete_description": "Brake Disc",
    "category": { "id": 245, "name": "Brake System" },
    "weight": null,
    "is_replacement": false,
    "is_accessory": false,
    "cross_references": [
      { "number": "0 986 494 538", "brand": "Bosch", "type": "ArticleNumber" },
      { "number": "34116775001", "brand": "BMW", "type": "OENumber" }
    ],
    "vehicles": [
      { "vehicle_id": 12345, "type": "PC", "brand": "BMW", "model_series": "3 (E46)", "vehicle_name": "316i" }
    ],
    "media": [
      { "url": "https://cdn.example.com/9000001_1.jpg", "type": "image", "width": 600, "height": 400 }
    ]
  }
}
GET /oem/detail

Get everything for an OEM number in one call: aftermarket parts, cross-references, OEM references, full TecDoc relations, technical criteria, and compatible vehicles.

ParameterRequiredDescription
numberYesOEM part number (spaces are ignored)
language_idNoLanguage ID (default 4)
GET /api/v1/oem/detail
curl -H "Authorization: Bearer td_live_xxxx" \
  "https://api.gearautodata.com/api/v1/oem/detail?number=7701208683"

{
  "success": true,
  "data": {
    "oem_number": "7701208683",
    "part": { "oem_number": "7701208683", "brand": "RENAULT", "category": "Spoiler" },
    "parts": [
      {
        "article_id": 4027103,
        "article_number": "6033225A1",
        "supplier_brand": "KLOKKERHOLM",
        "display_number": "7701208683",
        "complete_description": "Spoiler",
        "category": { "id": 845, "name": "Spoiler" },
        "media": [ { "url": "...", "type": "image" } ],
        "thumbnail": "...",
        "cross_references": [
          { "number": "6033225A1", "brand": "KLOKKERHOLM", "type": "ArticleNumber" }
        ],
        "oem_references": [
          { "oem_number": "8200682315", "brand": "RENAULT" }
        ],
        "criteria": [
          { "name": "Colour", "value": "Black", "unit": null }
        ],
        "art_lookup": [],
        "la_criteria": [],
        "info": [],
        "la_info": [],
        "country_specifics": [],
        "accessories": [],
        "superseded": [],
        "component_parts": [],
        "link_art_pt": [],
        "compatible_vehicles": []
      }
    ],
    "cross_references": [
      { "number": "6033225A1", "brand": "KLOKKERHOLM", "type": "ArticleNumber" },
      { "number": "8200682315", "brand": "RENAULT", "type": "OENumber" }
    ],
    "oem_references": [
      { "oem_number": "8200682315", "brand": "RENAULT" }
    ],
    "vehicles": [
      { "vehicle_id": 6882, "vehicle_type": "PC", "brand": "RENAULT",
        "model_series": "CLIO III Hatchback Van (SB_, SR_)", "vehicle_name": "1.5 dCi",
        "engine_code": "K9K 768", "kw_from": 48, "hp_from": 65, "ccm_from": 1461 }
    ]
  }
}
GET /oem/{oemNumber}/vehicles

Paginated list of vehicles that use the OEM number. The response also includes the full part summary, parts, cross-references, and OEM references in meta.

ParameterRequiredDescription
language_idNoLanguage ID (default 4)
brandNoFilter by brand (partial match)
limitNoPage size (default 100, max 500)
pageNoPage number (default 1)
GET /api/v1/oem/7701208683/vehicles
curl -H "Authorization: Bearer td_live_xxxx" \
  "https://api.gearautodata.com/api/v1/oem/7701208683/vehicles?limit=50"

{
  "success": true,
  "data": [
    { "vehicle_id": 6882, "brand": "RENAULT",
      "model_series": "CLIO III Hatchback Van (SB_, SR_)", "vehicle_name": "1.5 dCi",
      "engine_code": "K9K 768", "kw_from": 48, "hp_from": 65, "ccm_from": 1461,
      "thumbnail": "...", "media": [] }
  ],
  "meta": {
    "oem_number": "7701208683",
    "current_page": 1,
    "per_page": 50,
    "total": 53,
    "last_page": 2,
    "part": { "oem_number": "7701208683", "brand": "RENAULT", "category": "Spoiler" },
    "parts": [ /* full part objects */ ],
    "cross_references": [ /* ... */ ],
    "oem_references": [ /* ... */ ]
  }
}
Reference
Code Examples

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

cURL

workflow.sh
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 modifications for the E46 model series (model ID 512)
curl -s -H "Authorization: Bearer $API_KEY" \
  "$BASE/models/512/vehicles"

# Step 4 — get brake parts for vehicle 12345
curl -s -H "Authorization: Bearer $API_KEY" \
  "$BASE/vehicles/12345/parts?category_id=1&per_page=20"

PHP

client.php
<?php

$apiKey = 'td_live_xxxxxxxxxxxxxxxxxxxx';
$base   = 'https://api.gearautodata.com/api/v1';

function apiGet(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);
}

$modifications = apiGet($base, $apiKey, '/models/512/vehicles');
foreach ($modifications['data'] as $v) {
    echo $v['vehicle_name'] . ' — ' . ($v['engine_code'] ?? 'N/A') . PHP_EOL;
}

$parts = apiGet($base, $apiKey, '/vehicles/12345/parts', ['category_id' => 1]);
foreach ($parts['data'] as $part) {
    echo $part['brand'] . ' ' . $part['article_number'] . ': ' . $part['description'] . PHP_EOL;
}

JavaScript

client.js
const API_KEY = 'td_live_xxxxxxxxxxxxxxxxxxxx';
const BASE    = 'https://api.gearautodata.com/api/v1';

async function apiGet(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.message); }
  return res.json();
}

const { data: modifications } = await apiGet('/models/512/vehicles');
modifications.forEach(v => console.log(`${v.vehicle_name} — ${v.engine_code ?? 'N/A'}`));

const { data: parts, meta } = await apiGet('/vehicles/12345/parts', { category_id: 1 });
console.log(`Found ${meta.total} parts across ${meta.last_page} pages`);
parts.forEach(p => console.log(`${p.brand} ${p.article_number} — ${p.description}`));
Pricing

All plans include full access to the GearAuto catalogue. Upgrade or downgrade at any time.

PlanMonthlyreq/minreq/dayAPI keys
Free$0101001
Starter$29605,0003
Pro$9930050,00010
EnterpriseCustom — contact us
Acceptable Use

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

Permitted
  • Automotive apps, catalogues, parts-finding tools
  • Internal business and back-office integrations
  • R&D on systems you own or are authorised to build
Prohibited
  • Reselling or sublicensing raw API data or access
  • Bulk exporting the catalogue for redistribution
  • Circumventing rate limits with key rotation
  • Automated scraping with no user-facing product

When displaying parts data in a user-facing product, include the statement "Parts data provided by GearAuto" in a reasonably visible location. Questions? support@autoapi.dev