Motorcycle Make, Model and Year Database API for Australia
Motorcycle parts and accessories stores, bike dealers, insurers and workshops need the same thing car businesses do: a reliable way to pin down exactly which vehicle a customer has. PlateAPI's vehicle database has a separate motorcycle cascade for that, covering 15,000+ motorcycles, scooters, ATVs and snowmobiles across 420+ makes sold in Australia, from Honda, Yamaha, Kawasaki, Suzuki, Harley Davidson and KTM to Polaris.
One parameter: type=motorcycle
The motorcycle cascade works exactly like the car cascade: seven levels (make, model, year, series, engine, variant, vehicle), one parameter added per request. Add type=motorcycle to every request:
# 1. Motorcycle makes curl -s -G "https://api.plateapi.com.au/api/v1/vehicles" \ -H "X-API-Key: pk_live_YOUR_API_KEY" \ --data-urlencode "type=motorcycle" # 2. Yamaha's models, 3. the MT-07's years, 4. its 2021 series ... curl -s -G "https://api.plateapi.com.au/api/v1/vehicles" \ -H "X-API-Key: pk_live_YOUR_API_KEY" \ --data-urlencode "type=motorcycle" \ --data-urlencode "make=YAMAHA" \ --data-urlencode "model=MT-07" \ --data-urlencode "year=2021"
{
"success": true,
"data": [
{ "type": "series", "data": ["RM044", "RM04F", "RM04G", "RM161", "RM332", "RM338"] }
],
"total": 6,
"duration_ms": 0.96
}Leave type out on any step and you are back in the car cascade: make=YAMAHA on its own returns an empty list, and make=HONDA returns Honda's cars, not its bikes.
Why the series level matters for bikes
For motorcycles the series is usually the frame code, and it is what separates versions that look identical in a make/model/year menu. Walking all six 2021 MT-07 series down to the vehicle level gives six vehicle IDs:
| Series | Engine | Variant | vehicle_id | Years |
|---|---|---|---|---|
RM044 | 655cc {38kW} | -- | 5774931 | 2014-ON |
RM04F | 689cc {55kW} | HOA (full power) | 7470294 | 2018-2021 |
RM04G | 655cc {38kW} | LA (learner approved) | 6481471 | 2018-2021 |
RM161 | 655cc {38kW} | -- | 9127864 | 2016-ON |
RM332 | 689cc {55kW} | HOA (full power) | 7076553 | 2021-2022 |
RM338 | 655cc {38kW} | LA (learner approved) | 2740365 | 2021-2022 |
RM044 and RM161 are older records with an open year range and no full-power or learner-approved label, which is why they also appear under 2021. The learner-approved (LAMS) version is a different variant from the full-power bike, with a different engine and its own ID, and both changed frame code in mid-2021. A parts store, an insurer or a dealer can treat each one separately instead of lumping every "2021 MT-07" together.
The same walk in Python
With the Python SDK, pass vehicle_type="motorcycle" on each call:
from plateapi import PlateAPI # pip install plateapi
client = PlateAPI("pk_live_YOUR_API_KEY")
bike = dict(make="YAMAHA", model="MT-07", year=2021, vehicle_type="motorcycle")
for series in client.vehicles(**bike).data:
for engine in client.vehicles(series=series, **bike).data:
for variant in client.vehicles(series=series, engine=engine, **bike).data:
for v in client.vehicles(series=series, engine=engine, variant=variant, **bike).data:
print(series, v["vehicle_id"], v["description"], "|", engine)RM044 5774931 14~ YAMAHA MT-07 0.7L | 655cc, M405E I2 8v DOHC CARB {38kW}
RM04F 7470294 18~21 YAMAHA MT-07 0.7L | 689cc, M401E I2 8v DOHC CARB {55kW}
RM04G 6481471 18~21 YAMAHA MT-07 0.7L | 655cc, M405E I2 8v DOHC CARB {38kW}
RM161 9127864 16~ YAMAHA MT-07 0.7L | 655cc, M408E I2 8v DOHC CARB {38kW}
RM332 7076553 21~22 YAMAHA MT-07 0.7L | 689cc, M419E I2 8v DOHC CARB {55kW}
RM338 2740365 21~22 YAMAHA MT-07 0.7L | 655cc, M420E I2 8v DOHC CARB {38kW}For a whole model range, client.walk_vehicles("YAMAHA", "MT-07", vehicle_type="motorcycle") does the full walk for you and yields each vehicle once.
Bike plates return the same IDs
Plate lookups are not limited to cars. A motorcycle plate goes through the same /api/v1/lookup endpoint and returns the bike's vehicle_id, the same ID the motorcycle cascade uses. Fetching that ID with GET /api/v1/vehicles/{vehicle_id} returns the full record with "vehicle_type": "motorcycle", so one code path handles cars and bikes:
{
"success": true,
"vehicle": {
"vehicle_id": 7076553,
"vehicle_type": "motorcycle",
"make": "YAMAHA",
"model": "MT-07",
"year_range": "2021-2022",
"lowest_year": 2021,
"highest_year": 2022,
"years": [2021, 2022],
"description": "21~22 YAMAHA MT-07 0.7L",
"long_description": "YAMAHA MT-07 HOA . RM332 07/2021 ~ 12/2022 2 Wheels PETROL 0.7 litre, M419E I2 8v DOHC CARB {55KW}",
"series": "RM332",
"engine": "689cc, M419E I2 8v DOHC CARB {55kW}",
"variant": "HOA, 2 Wheel Road, RWD, MT",
"body": null,
"body_size": null,
"doors": null,
"drive": "RWD",
"transmission": "MT",
"detail": "full"
},
"duration_ms": 1.53
}If your store links products to vehicles, bikes work the same way as cars: tag each part with the motorcycle vehicle IDs it fits (the SKU linking guide shows how) and query by the ID a lookup returns.
Things to know
- Some older bikes have no year information. They have an ID and a full record, but
yearsis empty and they do not appear in the year lists, so a make/model/year menu will not reach them. A plate lookup or a by-ID fetch still will. - Pass values exactly as returned. Engine and variant strings contain commas, braces and double spaces; let your HTTP library URL-encode them (
--data-urlencodein curl,params=in requests). - No lookup quota. Vehicle database requests, cars or bikes, do not count toward your monthly lookups and have their own limit of 500 requests a minute.
Plans
The vehicle database, including the motorcycle cascade, is on Starter ($79/month) and above. Plate lookups, including motorcycle plates, work on every plan, with a free tier of 20 lookups a month to try it. The motorcycle section of the docs has the full walkthrough and response formats.
PlateAPI turns Australian number plates into structured vehicle data -- one REST endpoint, all eight states, free tier included.