Docs menu

Docs / New recalls feed

New recalls feed

Last updated 2026-11-13

Recalls first seen since a date, newest first, for polling integrations.

GET/v1/new · API key required

Returns the recalls we first saw on or after since (default: the last 7 days, never more than 30), newest first. Each has a stable id, so a tool can skip ones it already has. Filter with category and agency.

This is the endpoint Zapier, Make and n8n use as a "New recall" trigger: poll it, treat each id as a new item once. For instant delivery instead of polling, use a webhook (see the Webhooks docs).

Parameters

NameInRequiredDescription
sincequerynoA date or time, like 2026-11-01 or 2026-11-01T12:00:00Z. Default: 7 days ago. Older than 30 days is treated as 30 days. Example: 2026-11-01
categoryquerynoOnly this category, as in /v1/search (vehicle, consumer_product, food, drug, and so on). Example: consumer_product
agencyquerynoOnly this agency: nhtsa, cpsc, fda, usda, tc, hc, cfia, fsa, accc, eusg, opss or mhra. Example: cpsc
limitquerynoHow many, 1 to 50 (default 20). Example: 5

Request

curl https://recalldb.app/v1/new?category=consumer_product&limit=5 \
  -H "Authorization: Bearer $RECALLDB_KEY"
const res = await fetch('https://recalldb.app/v1/new?category=consumer_product&limit=5', {
  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/new?category=consumer_product&limit=5", 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": "cpsc-27064",
      "title": "Arlopu Slide Playset Recall: CPSC Recall 27064",
      "category": "consumer_product",
      "issued_by": "Arlopu",
      "date": "2026-10-29",
      "first_seen": "2026-11-13T10:02:11.000Z",
      "units": "About 4,000",
      "units_affected": 4000,
      "page_url": "https://checkrecalls.org/recall/cpsc-27064",
      "source": {
        "agency": "CPSC",
        "official_id": "27064",
        "official_url": "https://www.cpsc.gov/Recalls/2026/example",
        "last_updated": "2026-11-13"
      }
    }
  ],
  "meta": {
    "since": "2026-11-06T12:00:00.000Z",
    "count": 1,
    "note": "Newest first by when we first saw each recall. Use id to skip ones you already have."
  },
  "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

  • Each call counts as one request against your quota: a poll every 15 minutes is about 2,900 requests a month, so poll no faster than once an hour on a free key, or use a webhook.
  • Free keys get this feed from a copy that is up to 1 hour old (meta.cache says when it was made). A live feed is a planned Pro feature.
  • first_seen is when we first saw the recall, which can be days after the agency's date.

Errors: error codes. Limits: rate limits.