Solution · ATC code API

ATC code API — the classification tree, one GET per node.

The ATC classification as a clean REST tree — node, parent chain, labels, defined daily dose, plus /children and /drugs to walk it.

647,075

products

19

countries

50

live sources

GET /v1/atc/{code}

In code

One request. The record back.

The Anatomical Therapeutic Chemical classification as a clean REST tree. GET /v1/atc/{code} returns the node with its level, its labels (English and German, French and Italian where held) and the Defined Daily Dose, plus the full chain of parents from the code up to its level-1 anatomical group.

  • Full parent chain. Every lookup returns the node plus its ancestors to the level-1 root — no repeated calls to reconstruct the path.
  • Tree traversal. /children for direct descendants, /drugs for the whole subtree by ATC prefix.
  • Labels + DDD. English and German labels (French and Italian where held) and the Defined Daily Dose (value, unit, route) on each node.

A single GET returns the node, its multilingual labels, the DDD and the full parent chain to the anatomical root.

GET /v1/atc/M01AE01
curl 'https://drug-database.com/v1/atc/M01AE01' \
  -H 'Authorization: Bearer dd_live_…'
response
{
  "node": {
    "code": "M01AE01",
    "level": 5,
    "parent_code": "M01AE",
    "label_en": "ibuprofen",
    "label_de": "Ibuprofen",
    "label_fr": "ibuprofène",
    "label_it": "ibuprofene",
    "ddd_value": 1.2,
    "ddd_unit": "g",
    "ddd_route": "O"
  },
  "parents": [
    { "code": "M01AE", "level": 4, "label_en": "Propionic acid derivatives" },
    { "code": "M01A",  "level": 3, "label_en": "Antiinflammatory and antirheumatic products, non-steroids" },
    { "code": "M01",   "level": 2, "label_en": "Antiinflammatory and antirheumatic products" },
    { "code": "M",     "level": 1, "label_en": "Musculo-skeletal system" }
  ],
  "_meta": { "sources": { "wido_atc": { "last_synced_at": "…", "schema_state": "ok" } } }
}

Live data

One code, its whole parent chain.

Traverse the hierarchy with /children for the direct descendants of a node, or /drugs to list every product in the subtree — ATC is a prefix tree, so a query on M01 covers everything under it.

  • 647,075 products from 19 countries’ registers
  • Every row carries its source and last-checked date
  1. L1CCardiovascular systemAnatomical group · 10 sub-groups
  2. L2C10Lipid modifying agentsTherapeutic subgroup · 2 sub-groups
  3. L3C10ALipid modifying agents, plainPharmacological subgroup · 6 sub-groups
  4. L4C10AAHMG CoA reductase inhibitorsChemical subgroup · 8 sub-groups
  5. L5C10AA05AtorvastatinSubstance · DDD 20 mg, O
The parent chain and sub-group counts, read from the ATC table the API serves.Browse the ATC tree

Where it comes from

Coverage & sourcing

  • The ATC classification across all five levels, with English and German labels.
  • Defined Daily Doses (value, unit, route) wherever the index assigns one.
  • GET /v1/atc/{code}/drugs joins the tree to the whole drug catalogue by prefix.
  • Classification and DDDs from the WIdO ATC index, Germany’s official edition of the WHO system; we are not affiliated with WIdO or the WHO.
  • ATC reads need the atc:read scope and are ETag-cached (the tree updates yearly).
  • See the docs for /children and /drugs.

Reference sources, latest sync first

  • RxNav
  • BDPM CIS_COMPO (ATC bridge)
  • ChEBI
  • WIdO ATC
  • FDA UNII
Sources passing their checks, as of 3 Oct, 00:05 UTC.Every source and its status

FAQ

Common questions, answered plainly.

What does GET /v1/atc/{code} return?
The ATC node — code, level (1–5), parent_code, its labels (label_en, label_de, and label_fr / label_it where held) and DDD (value, unit, route) — plus the full chain of parents from the node up to its anatomical-group root.
How do I walk the tree?
GET /v1/atc/{code}/children returns the direct children of a node. Because ATC is a prefix tree, you can also use GET /v1/atc/{code}/drugs to list every product whose ATC code falls anywhere under the node.
Where does the classification come from?
From the WIdO ATC index — Germany’s official ATC/DDD edition, which follows the WHO system — across all five levels, with Defined Daily Doses wherever the index assigns one. We are not affiliated with WIdO or the WHO.

Ready when you are

Start building with the ATC code API. Free key, no card.

The free plan includes 10 lookups a month — enough to judge the data. Pro is $29/month when you build on it.