US Department of Transportation vehicles API
Vehicle search and list endpoints
Vehicle search and list endpoints
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/dot-vehicles-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: NHTSA childSeats Vehicles API
version: 1.6.0
description: Child Seat search and list endpoints
servers:
- url: https://mobile.fmcsa.dot.gov/qc/services
tags:
- description: Vehicle search and list endpoints
name: vehicles
paths:
/vehicles:
get:
parameters:
- allowEmptyValue: false
description: A comma separated list of data to return (crashtestratings, safetyfeatures, recommendedfeatures, complaints, recalls, investigations, manufacturercommunications, none, all), defaults to 'crashtestratings'.
in: query
name: data
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: 'Valid inputs: [minimal], [all] without brackets. Choose which detail level to show. defaults to: [all]'
in: query
name: productDetail
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: The maximum number of records to return
in: query
name: max
required: false
style: form
explode: false
schema:
type: integer
format: int32
- allowEmptyValue: false
description: The offset of the records listing (for pagination).
in: query
name: offset
required: false
style: form
explode: false
schema:
type: integer
format: int32
responses:
'200':
description: Paginated list of all vehicles.
content:
application/json:
schema:
items:
$ref: '#/components/schemas/VehicleBasicWrapped'
title: ArrayOfVehicles
type: array
'400':
description: Invalid Request
'500':
description: Internal Server Error
tags:
- vehicles
/vehicles/byArtemisId:
get:
parameters:
- allowEmptyValue: false
description: The artemisId for a vehicle.
in: query
name: artemisId
required: true
style: form
explode: false
schema:
type: integer
format: int64
- allowEmptyValue: false
description: A comma separated list of data to return (crashtestratings, safetyfeatures, recommendedfeatures, complaints, recalls, investigations, manufacturercommunications, none, all), defaults to 'all'.
in: query
name: data
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: 'Valid inputs: [minimal], [all] without brackets. Choose which detail level to show. defaults to: [all]'
in: query
name: productDetail
required: false
style: form
explode: false
schema:
type: string
format: ''
responses:
'200':
description: Return the vehicle associated with the specified artemisId.
content:
application/json:
schema:
$ref: '#/components/schemas/VehicleDetailsWrapped'
'400':
description: Invalid Request
'500':
description: Internal Server Error
tags:
- vehicles
/vehicles/byMultipleArtemisIds:
get:
parameters:
- allowEmptyValue: false
description: The artemisIds for vehicles. Comma separated if more than one
in: query
name: artemisIds
required: true
style: form
explode: false
schema:
type: integer
format: int64
- allowEmptyValue: false
description: This should always be none, as we only want to return minimum counts data
in: query
name: data
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: This should always be null, as we want to get the counts
in: query
name: productDetail
required: false
style: form
explode: false
schema:
type: string
format: ''
responses:
'200':
description: Return the vehicle associated with the specified artemisId.
content:
application/json:
schema:
$ref: '#/components/schemas/VehicleBasicWrapped'
'400':
description: Invalid Request
'500':
description: Internal Server Error
tags:
- vehicles
/vehicles/byClass:
get:
parameters:
- allowEmptyValue: false
description: The name of the class to search by.
in: query
name: vehicleClass
required: true
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: A comma separated list of data to return (crashtestratings, safetyfeatures, recommendedfeatures, complaints, recalls, investigations, manufacturercommunications, none, all), defaults to 'none'.
in: query
name: data
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: 'Valid inputs: [minimal], [all] without brackets. Choose which detail level to show. defaults to: [minimal]'
in: query
name: productDetail
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: The maximum number of records to return.
in: query
name: max
required: false
style: form
explode: false
schema:
type: integer
format: int32
- allowEmptyValue: false
description: The offset of the records listing (for pagination).
in: query
name: offset
required: false
style: form
explode: false
schema:
type: integer
format: int32
responses:
'200':
description: One or more vehicles that match the specified class.
content:
application/json:
schema:
$ref: '#/components/schemas/VehicleBasicWrapped'
'400':
description: Invalid Request
'500':
description: Internal Server Error
tags:
- vehicles
/vehicles/byIds:
get:
parameters:
- allowEmptyValue: false
description: A CSV list of IDs
in: query
name: ids
required: true
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: A comma separated list of data to return (crashtestratings, safetyfeatures, recommendedfeatures, complaints, recalls, investigations, manufacturercommunications, none, all), defaults to 'crashtestratings'.
in: query
name: data
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: 'Valid inputs: [minimal], [all] without brackets. Choose which detail level to show. defaults to: [all]'
in: query
name: productDetail
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: The maximum number of records to return
in: query
name: max
required: false
style: form
explode: false
schema:
type: integer
format: int32
- allowEmptyValue: false
description: The offset of the records listing (for pagination).
in: query
name: offset
required: false
style: form
explode: false
schema:
type: integer
format: int32
responses:
'200':
description: Paginated list of vehicles matching the specified list of CSV ids.
content:
application/json:
schema:
items:
$ref: '#/components/schemas/VehicleDetailsWrapped'
title: ArrayOfVehicles
type: array
'400':
description: Invalid Request
'500':
description: Internal Server Error
tags:
- vehicles
/vehicles/byManufacturer:
get:
parameters:
- allowEmptyValue: false
description: The name of the manufacturer to search by.
in: query
name: manufacturerName
required: true
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: The maximum number of records to return
in: query
name: max
required: false
style: form
explode: false
schema:
type: integer
format: int32
- allowEmptyValue: false
description: The offset of the records listing (for pagination).
in: query
name: offset
required: false
style: form
explode: false
schema:
type: integer
format: int32
- allowEmptyValue: false
description: 'The model year to restrict the manufacturer search to. Format: yyyy-MM-dd'
in: query
name: dateStart
required: false
style: form
explode: false
schema:
type: integer
format: ''
- allowEmptyValue: false
description: 'The model year to restrict the manufacturer search to. Format: yyyy-MM-dd'
in: query
name: dateEnd
required: false
style: form
explode: false
schema:
type: integer
format: ''
- allowEmptyValue: false
description: A comma separated list of data to return (crashtestratings, safetyfeatures, recommendedfeatures, complaints, recalls, investigations, manufacturercommunications, none, all), defaults to 'none'.
in: query
name: data
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: 'Valid inputs: [minimal], [all] without brackets. Choose which detail level to show. defaults to: [all]'
in: query
name: productDetail
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: 'The column to sort records by. Valid inputs: [''overallRating'', ''overallFrontCrashRating'', ''overallSideCrashRating'', ''rolloverRating'', ''recallsCount'', ''investigationsCount'', ''complaintsCount'', ''manufacturerCommunicationsCount'']'
in: query
name: sort
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: 'Which direction the ''sort'' parameter is applied, valid inputs: [asc, desc]'
in: query
name: order
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: 'Filter the response by the specified field. Valid inputs: [vehicleClass]'
in: query
name: filter
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: 'The value to use as a filter. Valid inputs: [SUV, TRUCK, PASSENGERCAR, VAN, BUS]'
in: query
name: filterValue
required: false
style: form
explode: false
schema:
type: string
format: ''
responses:
'200':
description: One or more vehicles that match the specified manufacturer.
content:
application/json:
schema:
$ref: '#/components/schemas/VehicleBasicWrapped'
'400':
description: Invalid Request
'500':
description: Internal Server Error
tags:
- vehicles
/vehicles/byNcapId:
get:
parameters:
- allowEmptyValue: false
description: The NcapId of the vehicle to look up.
in: query
name: ncapId
required: true
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: A comma separated list of data to return (crashtestratings, safetyfeatures, recommendedfeatures, complaints, recalls, investigations, manufacturercommunications, none, all), defaults to 'all'.
in: query
name: data
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: 'Valid inputs: [minimal], [all] without brackets. Choose which detail level to show. defaults to: [all]'
in: query
name: productDetail
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: The maximum number of records to return
in: query
name: max
required: false
style: form
explode: false
schema:
type: integer
format: int32
- allowEmptyValue: false
description: The offset of the records set to return for pagination.
in: query
name: offset
required: false
style: form
explode: false
schema:
type: integer
format: int32
responses:
'200':
description: Paginated list of vehicles matching the specified NcapId (the original vehicle id in the source NCAP system).
content:
application/json:
schema:
items:
$ref: '#/components/schemas/VehicleDetailsWrapped'
title: ArrayOfVehicles
type: array
'400':
description: Invalid Request
'500':
description: Internal Server Error
tags:
- vehicles
/vehicles/bySearch:
get:
parameters:
- allowEmptyValue: false
description: A fuzzy search query to search with
in: query
name: query
required: true
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: match must have all keywords. true or false. defaults to true
in: query
name: allKeywords
required: false
style: form
explode: false
schema:
type: boolean
format: ''
- allowEmptyValue: false
description: A comma separated list of data to return (crashtestratings, safetyfeatures, recommendedfeatures, complaints, recalls, investigations, manufacturercommunications, none, all), defaults to 'crashtestratings'.
in: query
name: data
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: 'Valid inputs: [minimal], [all] without brackets. Choose which detail level to show. defaults to: [all]'
in: query
name: productDetail
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: 'Find vehicles manufactured since this date (inclusive). Format: yyyy-MM-dd'
in: query
name: dateStart
required: false
style: form
explode: false
schema:
type: string
format: date
- allowEmptyValue: false
description: 'Find vehicles manufactured up to this date (inclusive). Format: yyyy-MM-dd'
in: query
name: dateEnd
required: false
style: form
explode: false
schema:
type: string
format: date
- allowEmptyValue: false
description: 'The column to sort records by. Valid inputs: [''overallRating'', ''overallFrontCrashRating'', ''overallSideCrashRating'', ''rolloverRating'', ''recallsCount'', ''investigationsCount'', ''complaintsCount'', ''manufacturerCommunicationsCount'']'
in: query
name: sort
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: 'Which direction the ''sort'' parameter is applied, valid inputs: [asc, desc]'
in: query
name: order
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: 'Filter the response by the specified field. Valid inputs: [vehicleClass]'
in: query
name: filter
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: 'The value to use as a filter. Valid inputs: [SUV, TRUCK, PASSENGERCAR, VAN, BUS]'
in: query
name: filterValue
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: 'The maximum number of records to return, upper bound: 50.'
in: query
name: max
required: false
style: form
explode: false
schema:
type: integer
format: int32
- allowEmptyValue: false
description: The offset of the records listing (for pagination).
in: query
name: offset
required: false
style: form
explode: false
schema:
type: integer
format: int32
responses:
'200':
description: Paginated list of vehicles whose make, model, year, or trim match the supplied search query.
content:
application/json:
schema:
$ref: '#/components/schemas/VehicleBasicWrapped'
'400':
description: Invalid Request
'500':
description: Internal Server Error
tags:
- vehicles
/vehicles/byVin:
get:
parameters:
- allowEmptyValue: false
description: The vin number to search for vehicles with.
in: query
name: vin
required: true
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: A comma separated list of data to return (crashtestratings, safetyfeatures, recommendedfeatures, complaints, recalls, investigations, manufacturercommunications, none, all), defaults to 'all'.
in: query
name: data
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: 'Valid inputs: [minimal], [all] without brackets. Choose which detail level to show. defaults to: [all]'
in: query
name: productDetail
required: false
style: form
explode: false
schema:
type: string
format: ''
responses:
'200':
description: One or more vehicles that match the user-provided VIN.
content:
application/json:
schema:
$ref: '#/components/schemas/VehicleDetailsWrapped'
'400':
description: Invalid Request
'500':
description: Internal Server Error
tags:
- vehicles
/vehicles/byYmmt:
get:
parameters:
- allowEmptyValue: false
description: The vehicles modelYear
in: query
name: modelYear
required: true
style: form
explode: false
schema:
type: integer
format: int32
- allowEmptyValue: false
description: The vehicles make
in: query
name: make
required: true
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: The vehicle model
in: query
name: model
required: true
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: The vehicle trim
in: query
name: trim
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: The vehicle series
in: query
name: series
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: A comma separated list of data to return (crashtestratings, safetyfeatures, recommendedfeatures, complaints, recalls, investigations, manufacturercommunications, none, all), defaults to 'all'.
in: query
name: data
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: 'Valid inputs: [minimal], [all] without brackets. Choose which detail level to show. defaults to: [all]'
in: query
name: productDetail
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: The maximum number of records to return
in: query
name: max
required: false
style: form
explode: false
schema:
type: integer
format: int32
- allowEmptyValue: false
description: The offset of the records listing (for pagination).
in: query
name: offset
required: false
style: form
explode: false
schema:
type: integer
format: int32
responses:
'200':
description: Paginated list of vehicles matching the specified modelYear, make, model, and [trim (optional)].
content:
application/json:
schema:
$ref: '#/components/schemas/VehicleDetailsWrapped'
'400':
description: Invalid Request
'500':
description: Internal Server Error
tags:
- vehicles
/vehicles/classes:
get:
parameters:
- allowEmptyValue: false
description: The maximum number of records to return. Use '-1' to get all records.
in: query
name: max
required: false
style: form
explode: false
schema:
type: integer
format: int32
- allowEmptyValue: false
description: The offset of the records listing (for pagination).
in: query
name: offset
required: false
style: form
explode: false
schema:
type: integer
format: int32
responses:
'200':
description: List of all vehicle classes.
content:
application/json:
schema:
$ref: '#/components/schemas/PartialVehicleWrapped'
'500':
description: Internal Server Error
tags:
- vehicles
/vehicles/makes:
get:
parameters:
- allowEmptyValue: false
description: The model year for which to display makes, or the start year for a range.
in: query
name: modelYear
required: false
style: form
explode: false
schema:
type: integer
format: int32
- allowEmptyValue: false
description: The end model year for which to display makes.
in: query
name: modelYearEnd
required: false
style: form
explode: false
schema:
type: integer
format: int32
- allowEmptyValue: false
description: The maximum number of records to return. Use '-1' to get all records.
in: query
name: max
required: false
style: form
explode: false
schema:
type: integer
format: int32
- allowEmptyValue: false
description: The offset of the records listing (for pagination).
in: query
name: offset
required: false
style: form
explode: false
schema:
type: integer
format: int32
responses:
'200':
description: Paginated list of vehicle makes for the specified modelYear.
content:
application/json:
schema:
$ref: '#/components/schemas/PartialVehicleWrapped'
'400':
description: Invalid Request
'500':
description: Internal Server Error
tags:
- vehicles
/vehicles/manufacturers:
get:
parameters:
- allowEmptyValue: false
description: The location of Manufacturers to request. (ncap or all), defaults to ncap
in: query
name: data
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: The maximum number of records to return. Use '-1' to get all records.
in: query
name: max
required: false
style: form
explode: false
schema:
type: integer
format: int32
- allowEmptyValue: false
description: The offset of the records listing (for pagination).
in: query
name: offset
required: false
style: form
explode: false
schema:
type: integer
format: int32
responses:
'200':
description: Paginated list of vehicle manufacturers.
content:
application/json:
schema:
$ref: '#/components/schemas/PartialVehicleWrapped'
'400':
description: Invalid Request
'500':
description: Internal Server Error
tags:
- vehicles
/vehicles/modelYears:
get:
parameters:
- allowEmptyValue: false
description: The maximum number of records to return. Use '-1' to get all records.
in: query
name: max
required: false
style: form
explode: false
schema:
type: integer
format: int32
- allowEmptyValue: false
description: The offset of the records listing (for pagination).
in: query
name: offset
required: false
style: form
explode: false
schema:
type: integer
format: int32
responses:
'200':
description: Paginated list of all model years.
content:
application/json:
schema:
$ref: '#/components/schemas/PartialVehicleWrapped'
'400':
description: Invalid Request
'500':
description: Internal Server Error
tags:
- vehicles
/vehicles/models:
get:
parameters:
- allowEmptyValue: false
description: The vehicle's modelYear, or the start year of a range.
in: query
name: modelYear
required: false
style: form
explode: false
schema:
type: string
format: int32
- allowEmptyValue: false
description: The end year for a range of vehicle modelYears.
in: query
name: modelYearEnd
required: false
style: form
explode: false
schema:
type: string
format: int32
- allowEmptyValue: false
description: The vehicle's make
in: query
name: make
required: true
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: The maximum number of records to return. Use '-1' to get all records.
in: query
name: max
required: false
style: form
explode: false
schema:
type: integer
format: int32
- allowEmptyValue: false
description: The offset of the records listing (for pagination).
in: query
name: offset
required: false
style: form
explode: false
schema:
type: integer
format: int32
responses:
'200':
description: Paginated list of models for the specified model year(optional), and make.
content:
application/json:
schema:
$ref: '#/components/schemas/PartialVehicleWrapped'
'400':
description: Invalid Request
'500':
description: Internal Server Error
tags:
- vehicles
/vehicles/trims:
get:
parameters:
- allowEmptyValue: false
description: The vehicle's modelYear
in: query
name: modelYear
required: true
style: form
explode: false
schema:
type: integer
format: int32
- allowEmptyValue: false
description: The vehicle's make
in: query
name: make
required: true
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: The vehicle's model
in: query
name: model
required: true
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: The maximum number of records to return. Use '-1' to get all records.
in: query
name: max
required: false
style: form
explode: false
schema:
type: integer
format: int32
- allowEmptyValue: false
description: The offset of the records listing (for pagination).
in: query
name: offset
required: false
style: form
explode: false
schema:
type: integer
format: int32
responses:
'200':
description: Paginated list of models for the specified modelYear, make, and model.
content:
application/json:
schema:
$ref: '#/components/schemas/PartialVehicleWrapped'
'400':
description: Invalid Request
'500':
description: Internal Server Error
tags:
- vehicles
/vehicles/{id}/details:
get:
parameters:
- description: The vehicle's id
in: path
name: id
required: true
style: simple
explode: false
schema:
type: integer
format: int32
- allowEmptyValue: false
description: A comma separated list of data to return (crashtestratings, safetyfeatures, recommendedfeatures, complaints, recalls, investigations, manufacturercommunications, none, all), defaults to 'all'.
in: query
name: data
required: false
style: form
explode: false
schema:
type: string
format: ''
- allowEmptyValue: false
description: 'Valid inputs: [minimal], [all] without brackets. Choose which detail level to show. defaults to: [all]'
in: query
name: productDetail
required: false
style: form
# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/us-dot/refs/heads/main/openapi/dot-vehicles-api-openapi.yml