v1 MCP server Pricing Get API key

REST API Reference

API for accessing vehicle specifications, NHTSA recalls, and NHTSA safety ratings. All three data verticals share the same discoverable browsing pattern: list available years → list makes for a year → list models for a year + make → fetch data.

serverhttps://api.carstat.app — Production server
authhttp bearer — API token authentication. Get your token from the dashboard.
rate limit120 requests/minute — shared by REST and MCP across all account credentials

Quick start

Authenticate and make your first API request.

  1. Create your API token

    Sign in, add prepaid credits, then create a token under API Tokens. You can use the same token for REST and the MCP server.

    Get API key
  2. Configure your environment

    Store your token in CARSTAT_API_TOKEN. Every request example on this page reads this environment variable.

    export CARSTAT_API_TOKEN="your-api-token"
  3. Make your first request

    Returns a list of all available vehicle model years in descending order.

    GET /v1/specs/years

    This request uses prepaid credits. See endpoint pricing before running it.

    cURL
    curl "https://api.carstat.app/v1/specs/years" \
      -H "Authorization: Bearer $CARSTAT_API_TOKEN"
    JavaScript
    const response = await fetch("https://api.carstat.app/v1/specs/years", {
      headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
    });
    const data = await response.json();
    Python
    import os
    
    import requests
    
    response = requests.get(
        "https://api.carstat.app/v1/specs/years",
        headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
        timeout=30,
    )
    data = response.json()
    Example response 200 OK
    [
      2024,
      2023,
      2022,
      2021,
      2020
    ]

Vehicle Specifications

Retrieve full 250+ field engineering specifications. Browse years → makes → models → modifications to get a modification_id, then fetch the full spec sheet. Also supports metric-based search.

Returns a list of vehicle manufacturers (makes) that have models available for the specified year.

Bearer token required
// Parameters
NameInTypeDescription
year path integer
Model year (e.g., 2024)
e.g. 2024
// Responses
Array — Array of make names in alphabetical order
string
Example
[
  "Acura",
  "Audi",
  "BMW",
  "Chevrolet",
  "Ford",
  "Honda",
  "Toyota"
]
FieldTypeDescription
error
string
Error message
e.g. Insufficient credits. Please top up your balance.
code
string
Top up your prepaid balance to continue querying
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
// Example request
cURL
curl "https://api.carstat.app/v1/specs/makes/2024" \
  -H "Authorization: Bearer $CARSTAT_API_TOKEN"
JavaScript
const response = await fetch("https://api.carstat.app/v1/specs/makes/2024", {
  headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
Python
import os

import requests

response = requests.get(
    "https://api.carstat.app/v1/specs/makes/2024",
    headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
    timeout=30,
)
data = response.json()

Returns a list of vehicle models available for the specified year and manufacturer.

Bearer token required
// Parameters
NameInTypeDescription
year path integer
Model year (e.g., 2024)
e.g. 2024
make path string
Vehicle manufacturer name (e.g., Toyota)
e.g. Toyota
// Responses
Array — Array of model names in alphabetical order
string
Example
[
  "4Runner",
  "Camry",
  "Corolla",
  "Highlander",
  "RAV4",
  "Tacoma",
  "Tundra"
]
FieldTypeDescription
error
string
Error message
e.g. Insufficient credits. Please top up your balance.
code
string
Top up your prepaid balance to continue querying
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
// Example request
cURL
curl "https://api.carstat.app/v1/specs/models/2024/Toyota" \
  -H "Authorization: Bearer $CARSTAT_API_TOKEN"
JavaScript
const response = await fetch("https://api.carstat.app/v1/specs/models/2024/Toyota", {
  headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
Python
import os

import requests

response = requests.get(
    "https://api.carstat.app/v1/specs/models/2024/Toyota",
    headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
    timeout=30,
)
data = response.json()

Returns the engine/powertrain configurations (modifications) available for the specified year, make and model. Use a returned modification ID to fetch the full specification sheet.

Bearer token required
// Parameters
NameInTypeDescription
year path integer
Model year (e.g., 2024)
e.g. 2024
make path string
Vehicle manufacturer name (e.g., Toyota)
e.g. Toyota
model path string
Vehicle model name (e.g., Camry)
e.g. Camry
// Responses
Array — Array of engine/powertrain configurations with their unique IDs
FieldTypeDescription
name
string
Engine/powertrain configuration name
modification_id
string
Unique modification identifier to use for spec lookups
Example
[
  {
    "name": "2.0 (173 Hp) Direct Shift CVT",
    "modification_id": "11111111-1111-5111-8111-111111111111"
  },
  {
    "name": "2.5 (218 Hp) Hybrid e-CVT",
    "modification_id": "22222222-2222-5222-8222-222222222222"
  }
]
FieldTypeDescription
error
string
Error message
e.g. Insufficient credits. Please top up your balance.
code
string
Top up your prepaid balance to continue querying
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
// Example request
cURL
curl "https://api.carstat.app/v1/specs/modifications/2024/Toyota/Camry" \
  -H "Authorization: Bearer $CARSTAT_API_TOKEN"
JavaScript
const response = await fetch("https://api.carstat.app/v1/specs/modifications/2024/Toyota/Camry", {
  headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
Python
import os

import requests

response = requests.get(
    "https://api.carstat.app/v1/specs/modifications/2024/Toyota/Camry",
    headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
    timeout=30,
)
data = response.json()

Returns detailed vehicle specifications for a specific modification. Use the modification ID returned by the modifications listing endpoint.

Bearer token required
// Parameters
NameInTypeDescription
modification_id path string
UUID returned by the modifications listing endpoint
e.g. 11111111-1111-5111-8111-111111111111
// Responses
FieldTypeDescription
powertrain_architecture
object
Boolean flags: bev, fcev, phev, mhev, hev, ice
fuel_consumption
object
Nested consumption values keyed by cycle (combined, city, highway, …)
identity
object
make, model, generation, display_name, year_start, year_end, body_type, seating_capacity_min/max, number_of_doors, modification_id
performance
object
acceleration_0_to_100_kmh, max_speed, weight_to_power_ratio, weight_to_torque_ratio
engine
object
fuel_type, horsepower, torque, displacement, cylinders, aspiration, oil, valvetrain, …
electric_system
object
battery capacity/voltage/technology/location, electric range, motors, charging_system, …
drivetrain
object
drivetrain_layout, drive_type, gears, transmission
dimensions
object
length, width, height, wheelbase, tracks, overhangs, ground_clearance, drag_coefficient, …
weight_and_capacities
object
curb_weight, fuel_tank_capacity, trunk_capacity, towing loads, …
chassis
object
suspension, front_brakes, rear_brakes, assisting_systems, steering, tires_size, …
FieldTypeDescription
error
string
Error message
e.g. Insufficient credits. Please top up your balance.
code
string
Top up your prepaid balance to continue querying
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
// Example request
cURL
curl "https://api.carstat.app/v1/specs/11111111-1111-5111-8111-111111111111" \
  -H "Authorization: Bearer $CARSTAT_API_TOKEN"
JavaScript
const response = await fetch("https://api.carstat.app/v1/specs/11111111-1111-5111-8111-111111111111", {
  headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
Python
import os

import requests

response = requests.get(
    "https://api.carstat.app/v1/specs/11111111-1111-5111-8111-111111111111",
    headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
    timeout=30,
)
data = response.json()

Searches the specification catalog by VIN and returns every published specification sheet that matches the vehicle the VIN identifies — engine, dimensions, fuel economy, drivetrain and the rest of the 250+ fields, plus the single most likely match. This is a specification search keyed on a VIN, not VIN decoding: for the VIN's own decoded attributes — manufacturer, country of manufacture, vehicle class, series and trim labels, check digit and build plant — call GET /v1/vin-decode/{vin} instead. Requires credit access; charged at the published specifications-by-VIN rate.

Bearer token required
// Parameters
NameInTypeDescription
vin path string
Vehicle Identification Number (VIN), a 17-character string that uniquely identifies a vehicle
e.g. 1HGCM82633A123456
// Responses
FieldTypeDescription
vin
string
The VIN that was decoded, upper-cased.
errors
array<string>
Non-fatal VIN validation warnings, if any.
make
string
Manufacturer decoded from the VIN
model
string
Model decoded from the VIN, normalised to the name used in the catalog. Some manufacturers encode a specific trim where the catalog lists the wider model line; this field is then the model line the specifications were found under, and the trim is available from the VIN decoding endpoint. Null when the VIN identifies the manufacturer but not a specific model.
year
integer
Model year decoded from VIN position 10
match_confidence
string
How precisely the VIN resolved to a single trim: 'exact' (one candidate remains), 'narrowed' (reduced but several remain), or 'ambiguous' (the VIN does not distinguish the remaining trims). A successful response always contains at least one candidate; when none can be found the endpoint returns 404. A VIN cannot encode trim/options for most makes, so a single result is not guaranteed.
matched_on
array<string>
Decoded signals that discriminated between trims, e.g. engine_code, cylinders, displacement, fuel, body, drive_type.
best_match
object
The single most likely modification specification for the VIN (top-ranked candidate).
candidates
array<object>
Matching modification specifications, narrowed to the trims consistent with the decoded VIN.
FieldTypeDescription
error
string
Error message
e.g. Insufficient credits. Please top up your balance.
code
string
Top up your prepaid balance to continue querying
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
decode_available_at
string
Path to the VIN decoding endpoint for this VIN. The VIN itself is valid and readable, so the vehicle it identifies can still be returned there — useful for vehicle classes this specification catalog does not cover, such as motorcycles, trailers and buses. Requires credit access; charged at the published VIN decoding rate.
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
// Example request
cURL
curl "https://api.carstat.app/v1/specs/vin/1HGCM82633A123456" \
  -H "Authorization: Bearer $CARSTAT_API_TOKEN"
JavaScript
const response = await fetch("https://api.carstat.app/v1/specs/vin/1HGCM82633A123456", {
  headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
Python
import os

import requests

response = requests.get(
    "https://api.carstat.app/v1/specs/vin/1HGCM82633A123456",
    headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
    timeout=30,
)
data = response.json()

Returns a list of all available vehicle model years in descending order.

Bearer token required
// Responses
Array — Array of years in descending order
integer
Example
[
  2024,
  2023,
  2022,
  2021,
  2020
]
FieldTypeDescription
error
string
Error message
e.g. Insufficient credits. Please top up your balance.
code
string
Top up your prepaid balance to continue querying
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
// Example request
cURL
curl "https://api.carstat.app/v1/specs/years" \
  -H "Authorization: Bearer $CARSTAT_API_TOKEN"
JavaScript
const response = await fetch("https://api.carstat.app/v1/specs/years", {
  headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
Python
import os

import requests

response = requests.get(
    "https://api.carstat.app/v1/specs/years",
    headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
    timeout=30,
)
data = response.json()

VIN Decoding

Decode a VIN into its manufacturer, model, model year, origin and build plant. It answers for vehicle classes the specification catalog does not cover.

Decodes a VIN into the vehicle it identifies — manufacturer, model, model year, country of manufacture, vehicle class, series/trim labels and the build plant.

Bearer token required
// Parameters
NameInTypeDescription
vin path string
Vehicle Identification Number (VIN), a 17-character string that uniquely identifies a vehicle
e.g. 4T1BF1FK5CU123456
// Responses
FieldTypeDescription
vin
string
The VIN that was decoded, upper-cased.
errors
array<string>
Non-fatal VIN validation warnings, if any.
make
string
Manufacturer decoded from the VIN
model
string
Model decoded from the VIN, normalised to the name used in the catalog. Null when the VIN identifies the manufacturer but not a specific model.
year
integer
Model year decoded from VIN position 10
wmi
string
World Manufacturer Identifier (VIN positions 1-3).
manufacturer
string
Registered manufacturer name, e.g. "TESLA, INC." — distinct from the vehicle make/brand.
region
string
Geographic region of manufacture, e.g. "ASIA", "NORTH AMERICA", "EUROPE".
country
string
Manufacturing country decoded from the VIN/WMI.
vehicle_type
string
Vehicle class registered for this VIN, e.g. "Passenger Car", "Truck", "Multipurpose Passenger Vehicle (MPV)". A broader classification than the body type in the spec candidates.
series
string
Vehicle series / sub-model as decoded from the VIN.
trim
string
Trim level as decoded from the VIN.
engine_manufacturer
string
Company that built the engine, which is not always the vehicle's make. Not available for all manufacturers.
check_digit
object
Verification of the VIN's check digit (position 9), which is derived from the other 16 characters. A mismatch usually means the VIN was mistyped or transcribed incorrectly; `expected` gives the character the rest of the VIN implies. Decoding still proceeds, since some regions do not use a check digit.
plant
object
Manufacturing (build) plant decoded from the VIN. Null when the VIN does not encode a plant for this vehicle (not available for all manufacturers).
FieldTypeDescription
error
string
Error message
e.g. Insufficient credits. Please top up your balance.
code
string
Top up your prepaid balance to continue querying
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
// Example request
cURL
curl "https://api.carstat.app/v1/vin-decode/4T1BF1FK5CU123456" \
  -H "Authorization: Bearer $CARSTAT_API_TOKEN"
JavaScript
const response = await fetch("https://api.carstat.app/v1/vin-decode/4T1BF1FK5CU123456", {
  headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
Python
import os

import requests

response = requests.get(
    "https://api.carstat.app/v1/vin-decode/4T1BF1FK5CU123456",
    headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
    timeout=30,
)
data = response.json()

Recalls

Browse and retrieve NHTSA recall campaigns. Use the discovery endpoints (years → makes → models) to navigate available data, then fetch all recall campaigns for a specific vehicle.

Returns a list of distinct years for which recall data is available, ordered most recent first.

Bearer token required
// Responses
Array — Array of years in descending order
integer
Example
[
  2024,
  2023,
  2022
]
FieldTypeDescription
error
string
Error message
e.g. Insufficient credits. Please top up your balance.
code
string
Top up your prepaid balance to continue querying
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
// Example request
cURL
curl "https://api.carstat.app/v1/recalls/years" \
  -H "Authorization: Bearer $CARSTAT_API_TOKEN"
JavaScript
const response = await fetch("https://api.carstat.app/v1/recalls/years", {
  headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
Python
import os

import requests

response = requests.get(
    "https://api.carstat.app/v1/recalls/years",
    headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
    timeout=30,
)
data = response.json()

Returns a list of distinct vehicle makes for which recall data is available for the specified year.

Bearer token required
// Parameters
NameInTypeDescription
year path integer
Model year (e.g., 2023)
e.g. 2023
// Responses
Array — Array of make names in alphabetical order
string
Example
[
  "Ford",
  "Honda",
  "Toyota"
]
FieldTypeDescription
error
string
Error message
e.g. Insufficient credits. Please top up your balance.
code
string
Top up your prepaid balance to continue querying
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
// Example request
cURL
curl "https://api.carstat.app/v1/recalls/makes/2023" \
  -H "Authorization: Bearer $CARSTAT_API_TOKEN"
JavaScript
const response = await fetch("https://api.carstat.app/v1/recalls/makes/2023", {
  headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
Python
import os

import requests

response = requests.get(
    "https://api.carstat.app/v1/recalls/makes/2023",
    headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
    timeout=30,
)
data = response.json()

Returns a list of distinct model names for which recall data is available for the given year and make.

Bearer token required
// Parameters
NameInTypeDescription
year path integer
Model year (e.g., 2024)
e.g. 2024
make path string
Vehicle manufacturer name (e.g., Toyota)
e.g. Toyota
// Responses
Array — Array of model names in alphabetical order
string
Example
[
  "Camry",
  "Corolla",
  "RAV4"
]
FieldTypeDescription
error
string
Error message
e.g. Insufficient credits. Please top up your balance.
code
string
Top up your prepaid balance to continue querying
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
// Example request
cURL
curl "https://api.carstat.app/v1/recalls/models/2024/Toyota" \
  -H "Authorization: Bearer $CARSTAT_API_TOKEN"
JavaScript
const response = await fetch("https://api.carstat.app/v1/recalls/models/2024/Toyota", {
  headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
Python
import os

import requests

response = requests.get(
    "https://api.carstat.app/v1/recalls/models/2024/Toyota",
    headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
    timeout=30,
)
data = response.json()

Returns a list of recalls for the specified vehicle. Each recall includes details such as the recall ID, summary, consequence, remedy, and the date it was issued.

Bearer token required
// Parameters
NameInTypeDescription
year path integer
Model year (e.g., 2024)
e.g. 2024
make path string
Vehicle manufacturer name (e.g., Toyota)
e.g. Toyota
model path string
Vehicle model name (e.g., Camry). The specifications catalog's name and other market names for the same car also match (e.g., F-Series F-100/F-150, Cerato), as do NHTSA's body, cab and drive variants of the model.
e.g. Camry
// Responses
Array — Array of recall objects for the specified vehicle
FieldTypeDescription
rcdate
string
Recall date
e.g. 2024-01-15
campno
string
Campaign number
e.g. 24V123000
mfgname
string
Manufacturer name
e.g. Toyota
compname
string
Component name
e.g. Air Bags
desc_defect
string
Defect description
consequence_defect
string
Consequence of defect
corrective_action
string
Corrective action
FieldTypeDescription
error
string
Error message
e.g. Insufficient credits. Please top up your balance.
code
string
Top up your prepaid balance to continue querying
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
// Example request
cURL
curl "https://api.carstat.app/v1/recalls/2024/Toyota/Camry" \
  -H "Authorization: Bearer $CARSTAT_API_TOKEN"
JavaScript
const response = await fetch("https://api.carstat.app/v1/recalls/2024/Toyota/Camry", {
  headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
Python
import os

import requests

response = requests.get(
    "https://api.carstat.app/v1/recalls/2024/Toyota/Camry",
    headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
    timeout=30,
)
data = response.json()

Safety Ratings

Browse and retrieve NHTSA 5-star crash test ratings. Use the discovery endpoints (years → makes → models) to navigate available data, then fetch frontal, side, pole, and rollover ratings for a specific vehicle.

Returns a list of distinct years for which safety rating data is available, ordered most recent first.

Bearer token required
// Responses
Array — Array of years in descending order
integer
Example
[
  2024,
  2023,
  2022
]
FieldTypeDescription
error
string
Error message
e.g. Insufficient credits. Please top up your balance.
code
string
Top up your prepaid balance to continue querying
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
// Example request
cURL
curl "https://api.carstat.app/v1/safety-ratings/years" \
  -H "Authorization: Bearer $CARSTAT_API_TOKEN"
JavaScript
const response = await fetch("https://api.carstat.app/v1/safety-ratings/years", {
  headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
Python
import os

import requests

response = requests.get(
    "https://api.carstat.app/v1/safety-ratings/years",
    headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
    timeout=30,
)
data = response.json()

Returns a list of distinct vehicle makes for which safety rating data is available for the specified year.

Bearer token required
// Parameters
NameInTypeDescription
year path integer
Model year (e.g., 2024)
e.g. 2024
// Responses
Array — Array of make names in alphabetical order
string
Example
[
  "Ford",
  "Honda",
  "Toyota"
]
FieldTypeDescription
error
string
Error message
e.g. Insufficient credits. Please top up your balance.
code
string
Top up your prepaid balance to continue querying
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
// Example request
cURL
curl "https://api.carstat.app/v1/safety-ratings/makes/2024" \
  -H "Authorization: Bearer $CARSTAT_API_TOKEN"
JavaScript
const response = await fetch("https://api.carstat.app/v1/safety-ratings/makes/2024", {
  headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
Python
import os

import requests

response = requests.get(
    "https://api.carstat.app/v1/safety-ratings/makes/2024",
    headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
    timeout=30,
)
data = response.json()

Returns a list of distinct model names for which safety rating data is available for the given year and make.

Bearer token required
// Parameters
NameInTypeDescription
year path integer
Model year (e.g., 2024)
e.g. 2024
make path string
Vehicle manufacturer name (e.g., Toyota)
e.g. Toyota
// Responses
Array — Array of model names in alphabetical order
string
Example
[
  "Camry",
  "Corolla",
  "RAV4"
]
FieldTypeDescription
error
string
Error message
e.g. Insufficient credits. Please top up your balance.
code
string
Top up your prepaid balance to continue querying
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
// Example request
cURL
curl "https://api.carstat.app/v1/safety-ratings/models/2024/Toyota" \
  -H "Authorization: Bearer $CARSTAT_API_TOKEN"
JavaScript
const response = await fetch("https://api.carstat.app/v1/safety-ratings/models/2024/Toyota", {
  headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
Python
import os

import requests

response = requests.get(
    "https://api.carstat.app/v1/safety-ratings/models/2024/Toyota",
    headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
    timeout=30,
)
data = response.json()

Returns a list of NHTSA safety ratings for the specified vehicle. Each rating includes crash test star ratings and safety equipment details. Multiple results may be returned for different body styles or drive trains. Use the optional body_style and drive_train query parameters to narrow results.

Bearer token required
// Parameters
NameInTypeDescription
year path integer
Model year (e.g., 2024)
e.g. 2024
make path string
Vehicle manufacturer name (e.g., Toyota)
e.g. Toyota
model path string
Vehicle model name (e.g., Camry). The specifications catalog's name and other market names for the same car also match (e.g., F-Series F-100/F-150, Cerato), as do NHTSA's body, cab and drive variants of the model.
e.g. Camry
body_style query string
Filter by body style (e.g., '4 DR Sedan')
drive_train query string
Filter by drive train (e.g., 'FWD', 'AWD')
// Responses
Array — Array of safety rating objects for the specified vehicle
FieldTypeDescription
id
integer
Safety rating record ID
make
string
Vehicle manufacturer
e.g. Toyota
model
string
Vehicle model
e.g. Camry
year_int
integer
Model year
e.g. 2024
body_style
string
Body style
e.g. 4 DR Sedan
vehicle_type
string
Vehicle type
e.g. Passenger Car
drive_train
string
Drive train
e.g. FWD
overall_stars
number
Overall star rating
e.g. 5.0
overall_frnt_stars
number
Overall frontal star rating
e.g. 4.0
overall_side_stars
number
Overall side star rating
e.g. 5.0
side_pole_stars
number
Side pole star rating
e.g. 5.0
rollover_stars
number
Rollover star rating
e.g. 4.0
frnt_driv_stars
number
Frontal driver star rating
frnt_pass_stars
number
Frontal passenger star rating
side_driv_stars
number
Side driver star rating
side_pass_stars
number
Side passenger star rating
side_barrier_star
number
Side barrier star rating
comb_frnt_star
number
Combined front star rating
comb_rear_star
number
Combined rear star rating
data
object
Full NHTSA safety data including test results, equipment details, and additional ratings
FieldTypeDescription
error
string
Error message
e.g. Insufficient credits. Please top up your balance.
code
string
Top up your prepaid balance to continue querying
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
FieldTypeDescription
error
string
Error message
// Example request
cURL
curl "https://api.carstat.app/v1/safety-ratings/2024/Toyota/Camry" \
  -H "Authorization: Bearer $CARSTAT_API_TOKEN"
JavaScript
const response = await fetch("https://api.carstat.app/v1/safety-ratings/2024/Toyota/Camry", {
  headers: { Authorization: `Bearer ${process.env.CARSTAT_API_TOKEN}` },
});
const data = await response.json();
Python
import os

import requests

response = requests.get(
    "https://api.carstat.app/v1/safety-ratings/2024/Toyota/Camry",
    headers={"Authorization": f"Bearer {os.environ['CARSTAT_API_TOKEN']}"},
    timeout=30,
)
data = response.json()