43,406 bikes · 495 makes Add a bikeLog inRegister

MotorcycleDB API

Read-only access to 43,000+ motorcycle specifications. Every request needs an API key - contact us to request one.

Base URL

https://www.motorcycledb.com/api/v1

Every endpoint below is relative to this - e.g. GET /bikes means GET https://www.motorcycledb.com/api/v1/bikes.

Authentication

Send your key as a Bearer token on every request:

Authorization: Bearer mdb_your_key_here

Requests without a valid key return 401. Each key has a daily request limit - the response headers X-RateLimit-Limit and X-RateLimit-Remaining show your current status. Exceeding your limit returns 429.

GET /api/v1/bikes

Search/list bikes. Query parameters (all optional):

ParameterDescription
makeExact manufacturer name, e.g. Yamaha
modelPartial model name match
yearExact model year
categoryExact category, e.g. Naked, Adventure
seat_height_maxMaximum seat height in mm
pageDefault 1
per_pageDefault 20, max 100
curl -H "Authorization: Bearer mdb_your_key_here" \
  "https://www.motorcycledb.com/api/v1/bikes?make=Yamaha&category=Naked&per_page=5"
{
  "data": [
    { "id": 67350, "make": "Yamaha", "model": "Yamaha MT-09", "year": 2024,
      "category": "Naked", "capacity_cc": 889, "power_hp": 117.4,
      "seat_height_mm": 825, "url": "https://www.motorcycledb.com/yamaha/mt09/2024/" }
  ],
  "meta": { "page": 1, "per_page": 5, "total": 42, "total_pages": 9 }
}

GET /api/v1/bikes/{id}

Full specification for one bike (every field on record), plus its character profile - editorial "how it rides" scores and best-for/ built-for guidance derived from the spec sheet (null when no profile has been generated for this bike yet).

curl -H "Authorization: Bearer mdb_your_key_here" \
  "https://www.motorcycledb.com/api/v1/bikes/67350"
{
  "data": {
    "id": 67350, "make": "Yamaha", "model": "Yamaha MT-09", "year": 2024,
    "url": "https://www.motorcycledb.com/yamaha/mt09/2024/",
    "specs": [
      { "name": "Capacity", "value": "889.0 ccm (54.24 cubic inches)" },
      { "name": "Power", "value": "117.4 HP (87.5 kW) @ 10000 RPM" }
    ],
    "character_profile": {
      "scores": { "speed": 76, "agility": 82, "comfort": 58, "offroad": 12, "touring": 41, "road": 74 },
      "fit_for": { "track": 68, "city": 71, "cornering": 84, "daily": 66, "touring": 40, "passenger": 45 },
      "best_for": "Spirited street riding, twisty backroads, quick city commuting",
      "built_for": "...", "not_ideal_for": "...",
      "note": "Editorial estimate derived from the spec sheet using the same model for every bike - not lab tested."
    }
  }
}

GET /api/v1/makes

Paginated manufacturer list.

curl -H "Authorization: Bearer mdb_your_key_here" "https://www.motorcycledb.com/api/v1/makes?per_page=3"
{
  "data": [
    { "id": 4116, "name": "Yamaha", "model_count": 3542, "url": "https://www.motorcycledb.com/yamaha/" }
  ],
  "meta": { "page": 1, "per_page": 3, "total": 495, "total_pages": 165 }
}

GET /api/v1/makes/{id}/models

Models for one manufacturer - one entry per model, spanning all its production years.

curl -H "Authorization: Bearer mdb_your_key_here" "https://www.motorcycledb.com/api/v1/makes/4116/models?per_page=2"
{
  "data": [
    { "name": "Yamaha MT-09", "year_from": 2013, "year_to": 2024,
      "model_years_on_record": 9, "url": "https://www.motorcycledb.com/yamaha/mt09/" }
  ],
  "meta": { "page": 1, "per_page": 2, "total": 849, "total_pages": 425 }
}

GET /api/v1/recalls

Safety recall lookup. Query parameters: make, model, year, page, per_page.

curl -H "Authorization: Bearer mdb_your_key_here" "https://www.motorcycledb.com/api/v1/recalls?make=Can-Am&per_page=1"
{
  "data": [
    { "campaign_number": "26V575000", "component": "ELECTRICAL SYSTEM: INSTRUMENT CLUSTER/PANEL",
      "summary": "...", "consequence": "...", "remedy": "...", "report_date": "2026-09-07",
      "bike": { "id": 71234, "make": "Can-Am", "model": "Can-Am Spyder F3", "year": 2025,
                "url": "https://www.motorcycledb.com/can-am/spyder-f3/2025/" } }
  ],
  "meta": { "page": 1, "per_page": 1, "total": 6, "total_pages": 6 }
}

GET /api/v1/vin/{vin}

Decode a VIN and, when it matches something in our catalog, get the direct link to it. Full 17-character VINs and partial VINs (at least the first 8 characters) both work. Decoded entirely from locally-held NHTSA vPIC data - coverage is US-market motorcycles only, and not every decoded make/model has a matching catalog page yet (match is null in that case, which is a normal outcome, not an error).

curl -H "Authorization: Bearer mdb_your_key_here" \
  "https://www.motorcycledb.com/api/v1/vin/1HD1KB4177Y653770"
{
  "data": {
    "vin": "1HD1KB4177Y653770", "make": "Harley-Davidson", "model": "FLHTCU",
    "model_year": 2007, "model_year_confident": true,
    "match": { "level": "model", "make": "Harley-Davidson", "model": "FLHTCU",
               "exact_year_matched": true,
               "url": "https://www.motorcycledb.com/harley-davidson/electra-glide-ultra-classic/2007/" }
  }
}

Errors

{ "error": { "code": "rate_limit_exceeded", "message": "Daily limit of 100 requests exceeded. Try again later." } }