Capability · ATC classification

The WHO ATC tree, as clean REST.

Resolve any ATC code to its node, full parent chain, multilingual labels and DDD — then descend with /children or list the subtree with /drugs.

GET /api/v1/atc/{code}

What you get

Built for production drug data

The complete WHO Anatomical Therapeutic Chemical classification as a clean REST tree. GET /api/v1/atc/{code} returns the node with its level, multilingual labels (EN/DE/FR/IT) and Defined Daily Dose, plus the full chain of parents up to its level-1 anatomical group.

Because ATC is a prefix tree, /children gives the direct descendants of a node and /drugs lists every product in the subtree — a single query on M01 covers everything under it.

Lookup

Node + full parent chain

Every lookup returns the node plus its ancestors to the level-1 root, so you reconstruct the path without repeated calls.
Traversal

/children and /drugs

/children returns direct descendants; /drugs lists every product whose ATC falls anywhere under the node, using the prefix-tree structure.
Labels

Multilingual + DDD

EN/DE/FR/IT labels and the Defined Daily Dose (value, unit, route) where the WHO publishes them, on each node.
Caching

ETag-cached, yearly cadence

The ATC tree updates roughly yearly, so reads are ETag-cached and cheap to revalidate against the changes feed.

Try it

A real call, end to end

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

GET /api/v1/atc/M01AE01
curl 'https://drug-database.com/api/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": ["atc"] }
}

Coverage & sourcing

  • The full WHO ATC classification across all five levels, with multilingual labels.
  • Defined Daily Doses (value, unit, route) wherever the WHO publishes them.
  • GET /api/v1/atc/{code}/drugs joins the tree to the 610k-drug catalog by ATC prefix.
  • Data sourced from the WHO Collaborating Centre for Drug Statistics Methodology; we are not affiliated with the WHO.
Good to know
  • · ATC reads need the atc:read scope.
  • · Reads are ETag-cached; the tree changes on a yearly cadence.

FAQ

Common questions

The ATC node — code, level (1–5), parent_code, EN/DE/FR/IT labels and DDD (value, unit, route) — plus the full chain of parents from the node up to its anatomical-group root.
GET /api/v1/atc/{code}/children returns the direct children of a node. Because ATC is a prefix tree, GET /api/v1/atc/{code}/drugs lists every product whose ATC code falls anywhere under the node.
The full WHO ATC classification across all five levels, with multilingual labels and Defined Daily Doses where the WHO publishes them.
English, German, French and Italian on every node, covering the major European markets.

Ready when you are

Put atc classification in production this afternoon.

Spin up a key in minutes. The free tier covers prototyping and low-volume production.

Free tier · 100 requests/day · No card required