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.
curl 'https://drug-database.com/v1/atc/M01AE01' \
-H 'Authorization: Bearer dd_live_…'{
"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
- L1CCardiovascular systemAnatomical group · 10 sub-groups
- L2C10Lipid modifying agentsTherapeutic subgroup · 2 sub-groups
- L3C10ALipid modifying agents, plainPharmacological subgroup · 6 sub-groups
- L4C10AAHMG CoA reductase inhibitorsChemical subgroup · 8 sub-groups
- L5C10AA05AtorvastatinSubstance · DDD 20 mg, O
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
- RxNavReference
- BDPM CIS_COMPO (ATC bridge)Reference
- ChEBIReference
- WIdO ATCReference
- FDA UNIIReference
FAQ
Common questions, answered plainly.
What does GET /v1/atc/{code} return?
How do I walk the tree?
Where does the classification come from?
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.