All you need to know before start working with our comprehensive Tire API - vehicle-specific tire data at your fingertips.
View all endpoints โ/oem_specs โ factory lug-nut torque, load index & speed rating (paid plans)
๐ Free plan now 250 tire lookups/month โ enforced 15 Sep 2026
๐ก๏ธ Fair Use & Data Protection โ limits and enforcement explained
Get started with the Tire API in seconds. Test your first request below.
curl -H "x-api-key: YOUR_API_KEY" \
"/api/v1/tire_dimensions?year=2023&make=Toyota&model=Camry&trim=LE AWD"
Free is metered by tire lookups โ 250/month plus a one-time 250, enforced from 15 September 2026 โ with a 300/day, 100/hour fair-use burst guard behind it. Paid plans are metered by daily requests and are unmetered on fitment. Some endpoints also carry a monthly quota on top of the daily limit โ see Fair Use & Data Protection.
year, make, model, plus an optional trim. Paid plans only; Free receives 403. No monthly quota โ runs on your daily request limit, unlike /tire_dimensions, which counts against the monthly fitment allowance. A torque_ft_lb of null means the figure is not published for that fitment โ consult the vehicle manual.403. Cached for 1 hour (Cache-Control: public, max-age=3600) and metered by a 500/month size-catalog quota reported via X-AllSizes-Quota-* headers.X-VIN-Quota-* response headers.tiresize string or individual width, aspectratio, diameter params. Carries a monthly quota alongside your daily limit (Free 10 / Starter 5,000 / Pro 20,000 / Business 60,000, plus a one-time 10-lookup trial bonus on Free), reported via X-RevLookup-Quota-* response headers.X-Fitment-Quota-* response headers.tiresize, counts against the monthly fitment quota (Free 250 plus a one-time 250, unmetered on paid plans, enforced from 15 September 2026) โ the make / model / trim cascade steps are free.vinQuota, reverseLookupQuota, allSizesQuota, and fitmentQuota (null limit when your plan has no size-catalog access). Like every endpoint, a usage call counts toward your daily request limit./by_vehicle/tiresize and /tire_dimensions): Free 250/month plus a one-time 250 bonus, unmetered on paid plans, enforced from 15 September 2026. Only the lookup that resolves a tire size counts โ the year/make/model/trim cascade is free. Monthly quotas reset on the first of each month (America/Toronto); daily limits reset at midnight America/Toronto. Current values are always available from GET /api/v1/usage.| Endpoint | Free | Starter | Pro | Business | Headers |
|---|---|---|---|---|---|
/by_vin/{vin} |
10 +50 one-time | 500 | 5,000 | 20,000 | X-VIN-Quota-* |
/reverse_lookup |
10 +10 one-time | 5,000 | 20,000 | 60,000 | X-RevLookup-Quota-* |
/search_allsizes |
โ | โ | โ | 500 | X-AllSizes-Quota-* |
/by_vehicle/tiresize/tire_dimensions |
250 +250 one-time | Unmetered | Unmetered | Unmetered | X-Fitment-Quota-* |
-Limit, -Remaining, and -Reset (Unix timestamp) headers. While a one-time bonus is still available you will also see X-VIN-Bonus-Remaining, X-RevLookup-Bonus-Remaining / X-Fitment-Bonus-Remaining./by_vehicle/tiresize and /tire_dimensions โ the calls that resolve a tire size โ count against the monthly fitment allowance from 15 September 2026. The cascade steps /by_vehicle/make, /model and /trim do not, and run on the daily request limit only.Retry-After is the earliest your key can be reconsidered, not a guarantee. Repeat throttles need progressively longer quiet periods; if the header is absent, the key needs a support review before it resumes.{
"error": "Access temporarily throttled",
"message": "Unusual bulk-access patterns were detected
on this key, so it is rate-limited under our
Terms of Use (ยง7.1). Stop the bulk job and
access restores automatically once traffic
on the key has been quiet for a while. If you
believe this is a mistake, contact support.",
"retryAfter": 3600
}
{
"error": "Access suspended",
"message": "Access to this API has been suspended
pending a Terms of Use (ยง7.1) review.
Please contact support."
}
// Modern async/await approach with error handling
async function getTireDimensions(year, make, model, trim) {
const API_KEY = 'your-api-key-here';
const BASE_URL = '/api/v1';
try {
const params = new URLSearchParams({ year, make, model, trim });
const response = await fetch(`${BASE_URL}/tire_dimensions?${params}`, {
headers: { 'x-api-key': API_KEY }
});
if (!response.ok) {
throw new Error(`API Error: ${response.status}`);
}
const data = await response.json();
return data.dimensions;
} catch (error) {
console.error('Failed to fetch tire dimensions:', error);
return null;
}
}
import requests
from typing import Optional, Dict
class TireAPIClient:
def __init__(self, api_key: str):
self.api_key = api_key
self.base_url = '/api/v1'
self.headers = {'x-api-key': self.api_key}
def get_tire_dimensions(self, year: str, make: str, model: str, trim: str) -> Optional[Dict]:
try:
response = requests.get(
f'{self.base_url}/tire_dimensions',
params={'year': year, 'make': make, 'model': model, 'trim': trim},
headers=self.headers
)
response.raise_for_status()
return response.json()
except requests.RequestException as e:
print(f"API request failed: {e}")
return None
# Get tire dimensions for specific vehicle
curl -H "x-api-key: your-api-key-here" \
"/api/v1/tire_dimensions?year=2023&make=Toyota&model=Camry&trim=LE%20AWD"
# Browse makes available for a given year
curl -H "x-api-key: your-api-key-here" \
"/api/v1/by_vehicle/make?year=2023"
# Check your API usage
curl -H "x-api-key: your-api-key-here" \
"/api/v1/usage"
# VIN lookup โ decode a VIN straight to its factory tire sizes
curl -H "x-api-key: your-api-key-here" \
"/api/v1/by_vin/1HGCM82633A004352"
# Get all vehicle makes (great for first dropdown, 1-hour cache)
curl -H "x-api-key: your-api-key-here" \
"/api/v1/search_allmake"
# Full tire-size catalog in one cached call (Business plan only)
curl -H "x-api-key: your-business-key" \
"/api/v1/search_allsizes"
# OEM specs โ factory lug-nut torque, load index and speed rating (paid plans)
# Omit &trim= to get every trim for the vehicle
# torque_ft_lb: null = not published for that fitment, consult the vehicle manual
# Check fastener_type: "center_lock" hubs are NOT lug nuts and use a much higher torque
curl -H "x-api-key: your-api-key-here" \
"/api/v1/oem_specs?year=2021&make=Ford&model=F-150&trim=XLT%20SuperCrew"
# Reverse lookup โ which vehicles use 225/60R16?
# -i shows the X-RevLookup-Quota-* headers with your remaining monthly quota
curl -i -H "x-api-key: your-api-key-here" \
"/api/v1/reverse_lookup?tiresize=225/60R16"
# Reverse lookup using individual dimensions
curl -H "x-api-key: your-api-key-here" \
"/api/v1/reverse_lookup?width=225&aspectratio=60&diameter=16"
# Year range for Toyota (all models)
curl -H "x-api-key: your-api-key-here" \
"/api/v1/year_range?make=Toyota"
# Year range for Toyota Camry specifically
curl -H "x-api-key: your-api-key-here" \
"/api/v1/year_range?make=Toyota&model=Camry"
# Ready-to-import n8n workflows (no code required)
# 01-cascading-vehicle-lookup.json โ Year → Make → Model → Trim → Tire Size
# 02-tire-dimensions-lookup.json โ width / aspect ratio / diameter for one vehicle
# 03-reverse-lookup.json โ tire size → vehicles that use it
# 04-usage-check.json โ plan, daily limit, remaining calls; branch on low quota
# 05-all-sizes-catalog.json โ the entire tire-size catalog in one call (Business)
# 1) Create a Header Auth credential ONCE:
# Credentials → Add credential → "Header Auth"
# Name: x-api-key
# Value: your-api-key-here
# 2) Import a workflow: Workflows → Import from File → pick a .json
# 3) On each HTTP Request node, select your "Tire API Key" credential, then Execute.
# Build your own node against ANY endpoint:
# Method: GET
# URL: /api/v1/tire_dimensions
# Auth: Generic Credential Type → Header Auth (x-api-key)
# Query: year=2023, make=Toyota, model=Camry, trim=LE AWD