Normalised product recall and safety alerts from 7 official government sources — with complete amendment history and verifiable evidence that your catalogue was checked on a given date.
The difference
Under GPSR the obligation is continuous diligence, and the thing a market surveillance authority asks for is evidence — not a feed you happened to subscribe to.
Agencies quietly widen recalls after publication, adding lot codes, models and date ranges without announcing it. Every observed change is stored with a field-level delta and the date we saw it. 241,698 recorded so far.
Every check returns an immutable record of what was checked, when, against a corpus current to which date, and what was found. Your catalogue is never stored — only a digest you can reproduce yourself.
GTINs are check-digit validated and normalised to 14 digits, VINs upper-cased. A barcode matches regardless of the encoding it arrives in — and invalid ones are rejected rather than silently returning "no recall".
Every record names its source; every source names its licence and required attribution. All open licences permitting commercial reuse, none share-alike, no personal data anywhere.
How it works
Check a single barcode, VIN or model number against every source at once.
Submit up to 1,000 identifiers and get matches plus a receipt of the check.
Retrieve any past receipt, frozen as it stood — later amendments never rewrite it.
# One barcode, every source GET /v1/identifiers/gtin/00012345678905 Authorization: Bearer $KEY
# Up to 1,000 identifiers per check POST /v1/checks Authorization: Bearer $KEY
{
"data": [{
"title": "novaloa sachet 10gr past…",
"jurisdiction": "FR",
"match": { "confidence": "exact" },
"revision": 2
}],
"meta": { "data_as_of": "2026-09-11" }
}
{
"check_id": "186948a03f7c4eec…",
"submitted_count": 1,
"submitted_digest": "644639bfbbd0…",
"match_count": 1,
"corpus_as_of": "2026-09-11",
"corpus_size": 177613
}
An invalid barcode is rejected outright, never returned as “no recall found”.
Re-hash your own list to reproduce
submitted_digest — verifiable without trusting us.
Live from the corpus
Read from the database when this page was rendered — not a screenshot.
Pricing
Seven source integrations, identifier extraction and a twenty-year backfill is roughly eighty engineer-hours. The middle tier costs about what one of them does.
Need the archive rather than a live feed? The complete corpus — 177,613 recalls, 251,802 identifiers and full amendment history — is available as a dated, checksummed export with all attribution obligations documented. Enquire.
Questions
Every source is checked daily, and the response tells you exactly how fresh it is —
data_as_of on every payload is the oldest upstream freshness stamp among the
sources backing it, so the claim is conservative rather than flattering. We poll once a
day by design: these are public services run on public money, and hammering them for a
latency figure nobody needs would be rude. What matters for compliance is that you checked
and can prove it, not that you checked within fifteen minutes.
You can, and for one source it may be the right call. The work here is the other 6: reconciling incompatible schemas, extracting and validating product identifiers from prose, backfilling 53 years of history past pagination limits that cap at a few thousand records, and detecting the amendments agencies make without announcing them. None of the upstream APIs offer any of that.
An immutable record that a given catalogue was checked on a given date against a corpus of known freshness, with the matches frozen at that moment. We do not store your catalogue — the receipt carries a SHA-256 over your normalised identifiers, so you can reproduce it independently and neither side can forge it alone.
The EU (Safety Gate) and France (RappelConso) in depth, plus United States federal sources — CPSC, NHTSA and three openFDA datasets. Coverage is EU-first because that is where GPSR obligations bite and where product identifiers actually link across sources.
Yes. Every source is under an open licence permitting commercial reuse and none is share-alike, so your product can be licensed on your own terms. Each source does require attribution, and those obligations pass to you — they are published at /v1/sources and included with every corpus export.
No. Contact names published by some agencies are dropped at normalisation time and never stored. There is no column anywhere in the corpus holding a natural person.