RecallDB API documentation
A recall API for cars, car seats, tires, consumer products and food. JSON over HTTPS.
Quickstart
- Get a free API key. You confirm your email, and the key is shown once.
- Send it in the
Authorizationheader (authentication). - Call an endpoint and show "Data from RecallDB" with a link (attribution).
curl https://recalldb.app/v1/recalls/21V215000 \
-H "Authorization: Bearer $RECALLDB_KEY"const res = await fetch('https://recalldb.app/v1/recalls/21V215000', {
headers: { Authorization: `Bearer ${process.env.RECALLDB_KEY}` },
})
const { data, source } = await res.json()
console.log(data, source.official_url)import os, requests
r = requests.get("https://recalldb.app/v1/recalls/21V215000", headers={"Authorization": f"Bearer {os.environ['RECALLDB_KEY']}"})
r.raise_for_status()
body = r.json()
print(body["data"], body["source"]["official_url"])Is there a free recall API?
Yes. RecallDB has a free (beta) tier: 1,000 requests a month and 10 a minute for non-commercial use, with a "Data from RecallDB" credit. Sign up at recalldb.app/signup and the key is shown at once after you confirm your email. A paid plan for commercial use is planned.
How do I check VIN recalls programmatically?
Send the VIN in the body of POST /v1/vin. It decodes the vehicle with NHTSA vPIC (the VIN is not stored) and returns the model-year recalls page; GET /v1/vehicles/{make}/{model}/{year} lists each NHTSA recall. To know whether one exact vehicle has an open recall, the owner still checks the VIN at nhtsa.gov/recalls. See the Python VIN tutorial.
Is there recall data for the US, Canada, UK, EU and Australia?
Yes: NHTSA, CPSC, FDA and USDA FSIS in the U.S.; Transport Canada, Health Canada and CFIA; the UK Food Standards Agency, OPSS and MHRA; EU Safety Gate; and Australia's ACCC. Every record names its agency and links the official notice. Filter with agency= on /v1/search and /v1/new.
Can I look up a product recall by barcode (UPC or EAN)?
Yes: GET /v1/barcode/{code} returns the recall notices that list that UPC, EAN or GTIN, with the lot codes and best-by dates exactly as the notice wrote them. A wrong check digit is refused. No match does not mean a product has no recall.
How do I get notified about new recalls?
Poll GET /v1/new (new recalls since a time, with category and agency filters), or register a webhook and a watchlist of makes, models, brands, categories or UPCs. Webhook messages are signed with HMAC-SHA256; on the free tier they are sent in an hourly batch.
Can AI agents use RecallDB?
Yes. The MCP server at recalldb.app/mcp (Streamable HTTP, your API key in the Authorization header) gives agents four read-only tools: search recalls, get a recall, look up a barcode and list vehicle recalls. It is listed in the official MCP Registry as app.recalldb/recalldb.
Base URL
https://recalldb.app. All answers are JSON. Browsers may call the API directly (CORS is open and credentials are never used), but keep your key out of public web pages: call it from a server.
Endpoints
| Request | What it does |
|---|---|
GET/v1/recalls/{id} | One recall by its official number. |
GET/v1/vehicles/{make}/{model}/{year} | The NHTSA recalls for one make, model and model year (up to 50). |
GET/v1/recalls/{id}/history | What the agency changed in a recall since we first saw it. |
GET/v1/search | Full-text search across every category, with filters. |
GET/v1/barcode/{code} | Recalls whose official notice lists this barcode. |
GET/v1/new | Recalls first seen since a date, newest first, for polling integrations. |
GET/v1/companies/{id} | All recalls filed under one company name, across agencies. |
POST/v1/vins/batch | Decode many VINs and list the recalls filed for each one's make, model and year. |
POST/v1/vin | Decode a VIN to the vehicle and its model's recalls. |
GET/v1/usage | Your key's usage this month, your limit and the reset date. |
GET/v1/health | How fresh each data source is. No key needed. |
POST/v1/watchlists | Create a watchlist of makes, models, brands, categories and UPCs. |
GET/v1/watchlists | Your watchlists and your plan limits. |
DELETE/v1/watchlists/{id} | Delete a watchlist. |
POST/v1/webhooks | Register an HTTPS address that receives signed messages. |
GET/v1/webhooks | Your webhooks and their status. |
DELETE/v1/webhooks/{id} | Delete a webhook and its delivery log. |
POST/v1/webhooks/{id}/test | Queue a signed test message. |
GET/v1/webhooks/{id}/deliveries | The last 50 deliveries for a webhook. |
Also
- OpenAPI 3.1 spec and llms.txt for AI coding tools.
- What data is covered, errors, rate limits.