Docs menu

RecallDB API documentation

Last updated 2026-11-13

A recall API for cars, car seats, tires, consumer products and food. JSON over HTTPS.

Quickstart

  1. Get a free API key. You confirm your email, and the key is shown once.
  2. Send it in the Authorization header (authentication).
  3. 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

RequestWhat 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}/historyWhat the agency changed in a recall since we first saw it.
GET/v1/searchFull-text search across every category, with filters.
GET/v1/barcode/{code}Recalls whose official notice lists this barcode.
GET/v1/newRecalls 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/batchDecode many VINs and list the recalls filed for each one's make, model and year.
POST/v1/vinDecode a VIN to the vehicle and its model's recalls.
GET/v1/usageYour key's usage this month, your limit and the reset date.
GET/v1/healthHow fresh each data source is. No key needed.
POST/v1/watchlistsCreate a watchlist of makes, models, brands, categories and UPCs.
GET/v1/watchlistsYour watchlists and your plan limits.
DELETE/v1/watchlists/{id}Delete a watchlist.
POST/v1/webhooksRegister an HTTPS address that receives signed messages.
GET/v1/webhooksYour webhooks and their status.
DELETE/v1/webhooks/{id}Delete a webhook and its delivery log.
POST/v1/webhooks/{id}/testQueue a signed test message.
GET/v1/webhooks/{id}/deliveriesThe last 50 deliveries for a webhook.

Also