Docs menu

Docs / Get a recall

Get a recall

Last updated 2026-11-13

One recall by its official number.

GET/v1/recalls/{id} · API key required

Returns one recall with the agency's own text, a plain-English summary, and where the data came from. Use the NHTSA campaign number for vehicles and car equipment (21V215000), cpsc- plus the CPSC recall number for consumer products (cpsc-27064), and fda- plus the FDA event number for food (fda-98506).

Parameters

NameInRequiredDescription
idpathyesNHTSA campaign number, cpsc-<number> or fda-<event number>. Not case sensitive. Example: 21V215000

Request

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"])

Try it

Runs a real request with no signup (20 a day per network, read-only). VINs you try are used only for this call and never stored.

Response

200 OK
{
  "data": {
    "id": "21V215000",
    "category": "vehicle",
    "issued_by": "Honda",
    "issuer_note": null,
    "severity": "standard",
    "date": "2021-03-25",
    "units": 624552,
    "units_affected": 624552,
    "official_text": {
      "problem": "Honda is recalling certain 2018-2020 vehicles. The low-pressure fuel pump inside the fuel tank may fail.",
      "consequence": "Fuel pump failure can cause an engine stall while driving, increasing the risk of a crash.",
      "remedy": "Dealers will replace the fuel pump assembly, free of charge.",
      "notes": ""
    },
    "components": [
      "FUEL SYSTEM, GASOLINE:DELIVERY:FUEL PUMP"
    ],
    "codes_as_listed": [],
    "plain_summary": {
      "whatsWrong": "The low-pressure fuel pump inside the fuel tank may fail.",
      "danger": "Fuel pump failure can cause an engine stall while driving, increasing the risk of a crash.",
      "whatToDo": "Dealers will replace the fuel pump assembly, free of charge.",
      "advisory": ""
    },
    "distribution": null,
    "page_url": "https://checkrecalls.org/recall/21v215000"
  },
  "source": {
    "agency": "NHTSA",
    "official_id": "21V215000",
    "official_url": "https://www.nhtsa.gov/recalls?nhtsaId=21V215000",
    "last_updated": "2026-11-13"
  },
  "attribution": {
    "text": "Data from RecallDB",
    "url": "https://recalldb.app"
  }
}

Every response includes source (agency, official ID, official URL, last updated) and attribution. Attribution rules.

Notes

  • distribution says where the notice says it was sold: type is nationwide, states (with state codes) or not_specified, and as_listed is the notice's own wording. It is null for recalls with no distribution (vehicles, tires and others). A state list is only what the notice names: never a statement that an item was or was not sold to you.
  • The id in the response is exactly the id in the URL: NHTSA numbers in capitals (21V215000), cpsc-<number> and fda-<event number> in lower case. source.official_id is the agency's own number (for CPSC and FDA, without the prefix).
  • units is the agency's wording (for example "About 265,000"). units_affected is the same count as a whole number, or null when the wording is not a clear single count (ranges, amounts in cases or pounds, no number). It is never a guess.
  • Lot, serial and date codes appear only as codes_as_listed, copied exactly as the agency wrote them. RecallDB never compares them with anything and never says whether a particular item is affected.
  • Recalls are added as they are published: NHTSA, CPSC and FDA food updates run every day.

Errors: error codes. Limits: rate limits.