Clutch APIclutch.ca ↗
Search Canadian used car listings, retrieve vehicle specs, photos, accident history, and calculate loan payments via the Clutch.ca API.
What is the Clutch API?
The Clutch.ca API covers 8 endpoints giving programmatic access to Clutch's Canadian used vehicle inventory, including search with filters like make, model, year, price range, and mileage. The search_vehicles endpoint returns paginated summaries with pricing, body style, and fuel type. Companion endpoints expose full specs, multi-angle photo sets, accident and registration history, loan payment calculations, and complete filter metadata for makes, models, body styles, drivetrains, and more.
curl -X GET 'https://api.parse.bot/scraper/8d9eda6a-9e51-4e73-88f5-266572d18daf/search_vehicles?make=Toyota&page=0&sort=featured&limit=10&model=Corolla&on_sale=true&max_year=2024&min_year=2020&body_type=SUV&fuel_type=Gasoline&max_price=50000&min_price=10000&max_mileage=100000&min_mileage=0' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace clutch-ca-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.clutch_ca_vehicle_inventory_api import Clutch, Sort, PaymentFrequency, Vehicle, Make, Offer
clutch = Clutch()
# Search for electric SUVs sorted by lowest price
for vehicle in clutch.vehicles.search(fuel_type="Electric", body_type="SUV", sort=Sort.LOWEST_PRICE, limit=5):
print(vehicle.name, vehicle.year, vehicle.mileage, vehicle.card_photo_url)
# Browse available makes and their models
for make in clutch.makes.list(limit=3):
print(make.name, make.id)
for model in make.models.list(limit=5):
print(" ", model.name, model.make_id)
# Get filter metadata
lookup = clutch.lookups.get()
for style in lookup.body_styles:
print(style.name, style.id)
# View recent purchase offers
for offer in clutch.offers.list(limit=5):
print(offer.year, offer.make, offer.model, offer.price, offer.province)
Search for vehicles with various filters including make, model, year, price, mileage, body type, and fuel type. Returns paginated results with vehicle summaries including pricing and photos. Pagination is zero-indexed. Each vehicle summary includes nested make/model/trim objects, body style, fuel type, and province-specific pricing.
| Param | Type | Description |
|---|---|---|
| make | string | Vehicle make/brand name (e.g. Toyota, Honda, Tesla) |
| page | integer | Page number (0-indexed) |
| sort | string | Sort order for results |
| limit | integer | Number of results per page |
| model | string | Vehicle model name (e.g. Corolla, Civic, Model 3) |
| on_sale | string | Filter for vehicles on sale. Accepted values: true, false |
| max_year | integer | Maximum manufacturing year |
| min_year | integer | Minimum manufacturing year |
| body_type | string | Vehicle body style (e.g. SUV, Sedan, Hatchback, Coupe, Minivan, Pickup Truck, Convertible, Wagon) |
| fuel_type | string | Fuel type (e.g. Gasoline, Electric, Hybrid, Plug-In Hybrid) |
| max_price | integer | Maximum price in CAD |
| min_price | integer | Minimum price in CAD |
| max_mileage | integer | Maximum mileage in km |
| min_mileage | integer | Minimum mileage in km |
{
"type": "object",
"fields": {
"page": "integer, current page number",
"pageSize": "integer, results per page",
"vehicles": "array of vehicle summary objects",
"totalCount": "integer, total matching vehicles",
"totalPages": "integer, total number of pages"
},
"sample": {
"data": {
"page": 0,
"pageSize": 32,
"vehicles": [
{
"id": 103157,
"make": {
"id": 9,
"name": "Audi"
},
"name": "Audi Q7 3.0T Technik",
"trim": {
"id": 454,
"name": "3.0T Technik"
},
"year": 2017,
"model": {
"id": 17,
"name": "Q7"
},
"mileage": 131409,
"fuelType": {
"id": 1,
"name": "Gasoline"
},
"bodyStyle": {
"id": 2,
"name": "SUV"
},
"cardPhotoUrl": "https://fastly.clutch.ca/01be9c08.jpg?class=card_photo",
"vehiclePrices": [
{
"price": 19790,
"adminFee": 0,
"provinceId": "ON"
}
]
}
],
"totalCount": 3332,
"totalPages": 105
},
"status": "success"
}
}About the Clutch API
Vehicle Search and Detail
The search_vehicles endpoint accepts optional parameters including make, model, min_year, max_year, sort (accepted values: featured, newest, lowest_price, highest_price, lowest_mileage, highest_mileage), on_sale, page, and limit. Responses include an array of vehicle summaries with fields like id, year, mileage, bodyStyle, fuelType, trim, and vehiclePrices. The totalCount and totalPages fields support pagination across the full inventory.
get_vehicle_details takes a numeric vehicle_id (obtained from search_vehicles results) and returns the full record: a disclosure object containing accident and registration history, a vehicleDetail object with engine specs, horsepower, torque, dimensions, and ownership count, plus vehicleWarranties and vehicleVehicleFeatures arrays. Photo sets are organized into static, exterior, exteriorSpin, and interior arrays inside the photos object.
Loan Calculator and Filter Metadata
The calculate_car_loan endpoint accepts a required price in CAD plus optional apr, loan_term (months), down_payment, trade_in_value, and frequency (bi-weekly or monthly). It returns estimated_payment, total_paid, interest_paid, hst_amount, and total_loan_amount — enough to build a full payment estimator without any additional math.
get_lookups is a single no-argument call that returns all filter metadata at once: makes, models, colors, fuelTypes, bodyStyles, drivetrains, transmissions, and vehicleFeatures with their IDs and names. For make-model chaining specifically, get_makes_list and get_models_by_make (requires a UUID make_id) provide the same data in smaller focused responses. get_recent_offers returns a sample of recently completed purchases with year, make, model, price, province, and location.
The Clutch API is a managed, monitored endpoint for clutch.ca — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when clutch.ca changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official clutch.ca API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a cross-inventory used car search tool filtered by make, model, year, and fuel type using
search_vehicles. - Display full vehicle history cards — accidents, owners, specs — by chaining
search_vehiclesIDs intoget_vehicle_details. - Embed a loan payment calculator in a car-buying guide using
calculate_car_loanwith configurable APR, term, and down payment. - Populate dynamic make-model dropdowns for a Canadian used car filter UI using
get_makes_listandget_models_by_make. - Analyze pricing trends across the Canadian used car market by sorting
search_vehiclesresults bylowest_priceorhighest_mileage. - Show recently completed purchase examples as social proof using
get_recent_offerswith province and location context. - Aggregate photo galleries for specific vehicles by pulling the
exterior,interior, andexteriorSpinarrays fromget_vehicle_photos.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Clutch.ca offer an official public developer API?+
What vehicle history data does `get_vehicle_details` return?+
disclosure object inside get_vehicle_details includes accident history and registration history fields. The vehicleDetail object adds numberOfOwners and numberOfAccidents. The API does not return a full CARFAX-style narrative report — it surfaces the structured disclosure fields Clutch includes with each listing.Does the API support filtering vehicles by color, drivetrain, or transmission?+
search_vehicles currently accepts make, model, min_year, max_year, on_sale, sort, page, and limit. Filtering by color, drivetrain, or transmission is not currently exposed as search parameters, though get_lookups does return the full reference lists for those attributes. You can fork the API on Parse and revise it to add those filter parameters to the search endpoint.How does pagination work in `search_vehicles`?+
page parameter is 0-indexed. The response includes totalCount, totalPages, and pageSize so you can calculate whether additional pages exist. Use limit to control how many results are returned per page.Does the API cover Clutch listings outside Canada, or include dealer inventory from other platforms?+
get_recent_offers and in the pricing object (via provinceId) in vehicle details. You can fork the API on Parse and revise it to add endpoints pointing to other Canadian used car platforms.