Docs / New recalls feed
New recalls feed
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
| Name | In | Required | Description |
|---|---|---|---|
since | query | no | A 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 |
category | query | no | Only this category, as in /v1/search (vehicle, consumer_product, food, drug, and so on). Example: consumer_product |
agency | query | no | Only this agency: nhtsa, cpsc, fda, usda, tc, hc, cfia, fsa, accc, eusg, opss or mhra. Example: cpsc |
limit | query | no | How 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.
Get your own key Free: 1,000 requests a month.
Response
{
"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.