Niche data APIs

Public data is free.
Usable public data is not.

Oredrift takes one public source at a time, reconciles what it actually contains, and serves it as an API you can query with the information you really have - not the information the source wishes you had.

One call, one answer
# Is this product recalled anywhere in the EU?
curl -X POST https://recalls.oredrift.com/v1/match \
  -H 'Content-Type: application/json' \
  -d '{"title": "Moulinex food processor blade",
       "barcode": "8720362191049"}'

→ exact alert, confidence 0.99, with the risk,
  the batches, and what the authority ordered.
47,122alerts since 2005
31notifying countries
98%useful answers
<4 msmedian response
Available now

EU Product Recalls

Check your catalogue against the European Commission's Safety Gate. Match by barcode, brand, model, or plain product title - one call per product, or 2,000 in a single batch.

recalls.oredrift.com live

Every match carries the alert itself: product, brand, model, risk type and official severity, the batch numbers concerned, the country of origin, the official photo and the publication date. No second call per result.

The problem

Why this is not a lookup table

Safety Gate data is public and free, but it is entered by hand by authorities in 31 countries, and it is inconsistent in three ways that each break the obvious implementation.

25%

Barcodes are mostly missing

Only a quarter of alerts carry a barcode in the barcode field. Some of those hold an internal supplier reference; others hold several GTINs concatenated without a separator. A plain GTIN lookup misses three recalls out of four.

44%

They are written elsewhere

The batch-number field holds a barcode far more often than a lot code, and descriptions spell them out after the words Barcode or EAN. Reading those fields too, with check-digit validation, brings 44% within exact barcode reach.

84%

Brands need reconciling

Brand is present on 80% of alerts and a model reference on 77%, but model fields list several references in one string, and the single most common brand value in the whole archive is the literal word Unknown.

One product, one answer

A product sold across the EU is notified separately by each country that finds it, so the raw feed repeats the same recall several times. Alerts describing the same product are grouped: you get one result per product, with the number of related alerts and the list of notifying countries, instead of five rows to reconcile yourself.

Uncertainty is labelled, not hidden

Matches based on text alone are flagged lead_only. They are leads to review, not conclusions. In product safety, a confidently wrong match costs more than a flagged uncertain one - so the API says which it is, and why, in plain words.

Measured, not claimed

Quality is a number

Two measurements on the full archive, rerun on every change. The second column is the one that matters: it strips the official description - the field carrying the distinctive wording - and rebuilds a marketplace-style title from brand, commercial name, product type and reference.

Benchmark of 4 October 2026, 800 queries drawn deterministically from the full archive.
Alert textSeller title
Exact alert returned84%93%
Useful to the subscriber97%98%
Correct alert in first position-81%
Noise on off-topic queries0 / 120 / 12
Median latency3.9 ms3.9 ms
The method

How every Oredrift API is built

The first one sets the shape, and the next ones follow it.

01One public source, read properly

The work is in reconciling what the source actually contains, not in collecting it. Anyone can download the feed; the value is in making it answer a real question.

02Original and derived stay separate

Official fields are returned verbatim under source. Everything we derive is returned under enriched, never in place of the original.

03Quality is published, not promised

Every API states how often it returns the right answer, measured on its full archive and rerun on every change.

04Weak matches say so

A guess is labelled a guess, with a confidence score and a plain explanation of why it matched.

05REST and MCP, one engine

Agents get the Model Context Protocol over the same data and the same code. Never a second implementation to reconcile.

06Refreshed on the source's own clock

Collection follows the publisher's schedule, automatically, and the extraction date travels with every response.

For AI agents

Model Context Protocol

The recalls API speaks MCP at https://recalls.oredrift.com/mcp. Same engine, same data, four tools. Nothing to install: point your client at the URL.

Tools exposed
check_product    one item against every recall
check_catalogue  up to 200 items in one call
get_alert        one alert by official case number
list_alerts      browse by category, risk, country
Regulatory context

Why sellers need this

Under Regulation (EU) 2023/988 on general product safety, applicable since 13 December 2024, online sellers and marketplaces addressing the EU must operate a process to detect unsafe products. Safety Gate is the reference public source.

This service helps you find relevant alerts. It does not determine your legal obligations, and it is not legal advice. Matches flagged lead_only require human review before you act on them.

Data, source and attribution

Where this comes from

Recall data originates from the European Commission Safety Gate portal and is reused under Commission Decision 2011/833/EU. Every response carries the attribution below, the extraction date and the language, and every alert links to the official record. Alerts are refreshed weekly, following the Commission's publication.

Alerts from the Rapid Alert System for dangerous non-food products, published free of charge on the Safety Gate website, © European Union.

Oredrift is not affiliated with, endorsed by, or acting on behalf of the European Commission.