Notified Body Check

Notified body status, scope, and changes, as JSON.

A free API and Atom feeds over NANDO, the EU register of notified bodies. Check a body under any act in NANDO in one call, and follow suspensions and withdrawals without an account.

Reading the local register…

This service is unofficial and not affiliated with the European Commission. It serves the data as published in NANDO, with the sync time on every answer.

Procedure or product

Try 0123 under 2017/745, 1685 under 2014/33/EU, or 2744 under 2014/68/EU.

NB ----

Checking the local register…

curl ''
Show the JSON answer
{}

Endpoints

Every JSON answer carries as_of, the stale flag, the source, the CC BY 4.0 attribution, and the unofficial notice. You do not need a key or an account.

CallAnswers
GET /v1/check?body=0123&legislation=2017/745Notified or not, the status, end date, and which scope entries match a procedure or product.
POST /v1/check/batchUp to 500 checks in one call, for supplier and certificate lists.
GET /v1/bodies?country=&legislation=&status=&q=Search and filter bodies.
GET /v1/bodies/0123One body with its notifications per act and status.
GET /v1/bodies/0123/notificationsAll current notifications of a body, with scope on request.
GET /v1/notifications/{id}One notification with its scope and version history.
GET /v1/legislationEvery act in NANDO, with the number of current notifications, by the same rule as the check.
GET /v1/legislation/2017/745/bodiesBodies notified under one act. By default only the current notifications, by the same rule as the check.
GET /v1/changesThe change feed, paged, with the same filters as the Atom feed.
GET /v1/changes.atomThe same changes as an Atom feed.
GET /v1/exportsDaily snapshot files in JSONL and CSV.
GET /v1/statusLast sync, record counts, source health, and whether the data is stale.

Full schema: interactive docs or openapi.json.

Alerts without an account

Pick what to follow and paste the feed URL into any feed reader. It updates when the register changes: suspensions, withdrawals, restorations, scope and end-date changes, new notifications.

/v1/changes.atom

Latest entries

    Daily exports

    There are two files per day, one in JSONL and one in CSV. Each has every current notification, joined with its body and act. Anyone can download them for free.

    Source and limits

    Where the data comes from

    European Commission, NANDO, via the Single Market Compliance Space. This service reuses the data under the Commission's reuse policy, Commission Decision 2011/833/EU. The Commission adopted CC BY 4.0 as the open licence for that policy (Commission Decision C(2019) 1655 of 22 February 2019), and applies it to Commission content unless otherwise indicated; see the Commission's legal notice. This service is unofficial and not affiliated with or endorsed by the European Commission.

    A notification counts as notified when its status id is 1 or 3 and its end date is empty or has not passed (UTC). The check then gives notified: true, and the status shows as "Active". When the end date has passed, the status shows as "Expired", and the check gives notified: false with the reason end_date_passed. Status ids 2, 4, 5, and 6 never count as notified.

    This follows the Active and Expired lists of the NANDO site, which use the end date as well as the status id. NANDO keeps many current notifications with status id 3 ("Expired") and a future end date, and lists them under Active. When the end date decides the status shown, the answer keeps the raw status_id and adds a short status_basis note. Two cases differ from the NANDO site (checked 2026-11-06): NANDO lists a status 1 notification with a past end date under neither list, and it lists a suspended notification with a future end date under Active. This service shows the first as "Expired" and the second as "Suspended", not notified.

    This service asks NANDO for new and changed records about every 15 minutes, and reads the full register once a day, shortly after 02:00 UTC. Every JSON answer gives the time of the last successful sync in as_of, and sets stale to true when that sync is more than 6 hours old.

    Changes made: this service restructures the records into JSON and CSV, removes personal contact fields (email, phone, fax), converts update times from Brussels time to UTC, adds status names, and works out change events by comparing versions.

    Copied from NANDO

    • Body numbers, names, addresses, websites
    • Notification ids, versions, status ids, dates
    • Status names for status ids 2, 4, and 5, as the NANDO site labels them
    • Scope: procedures, products, standards, annexes
    • The acts, with their codes and names

    Worked out by this service

    • notified in the check, from the status id and the end date
    • The status names "Active" and "Expired" for status ids 1 and 3, from the end date, with status_basis when they differ from the NANDO label
    • The status name "Unknown (6)" for status id 6, which the NANDO site does not label
    • The status "Removed from source" in the check, for a notification that NANDO no longer lists
    • Change events, from content hashes between syncs
    • since, from the versions this service has stored, or the start of the day after the end date when the end date makes the status Expired (always a UTC timestamp)
    • UTC times

    The service comes with no warranty. Check NANDO itself before you rely on a result for a legal or commercial decision. Terms.