# ATC Drug Classification API
> The WHO ATC (Anatomical Therapeutic Chemical) drug classification as an API — 6,400+ codes organising every medicine into a 5-level hierarchy: anatomical main group → therapeutic subgroup → pharmacological subgroup → chemical subgroup → chemical substance. Look up any ATC code (e.g. A10BA02 → metformin, N02BE01 → paracetamol, J01CA04 → amoxicillin) with its full ancestor chain, direct children and WHO Defined Daily Doses (DDD); search drugs by name; or navigate the tree from the 14 anatomical main groups. Ideal for e-prescribing, pharmacy, clinical decision support, drug databases and health analytics.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/atc-api/..."
```

## Pricing
- **Free** (Free) — 4,000 calls/Mo, 2 req/s
- **Starter** ($5/Mo) — 55,000 calls/Mo, 8 req/s
- **Pro** ($14/Mo) — 280,000 calls/Mo, 20 req/s
- **Mega** ($36/Mo) — 1,400,000 calls/Mo, 50 req/s

## Endpoints

### ATC

#### `GET /v1/children` — Direct children of a code (or the 14 main groups)

**Parameters:**
- `code` (query, optional, string) — Parent code, e.g. A10 (omit to list main groups) Example: `A10`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/atc-api/v1/children?code=A10"
```

**Response:**
```json
{
    "data": {
        "code": "A10",
        "name": "DRUGS USED IN DIABETES",
        "count": 3,
        "level": "therapeutic_subgroup",
        "children": [
            {
                "code": "A10A",
                "name": "INSULINS AND ANALOGUES",
                "level": "pharmacological_subgroup"
            },
            {
                "code": "A10B",
                "name": "BLOOD GLUCOSE LOWERING DRUGS, EXCL. INSULINS",
                "level": "pharmacological_subgroup"
            },
            {
                "code": "A10X",
                "name": "OTHER DRUGS USED IN DIABETES",
                "level": "pharmacological_subgroup"
            }
        ]
    },
    "meta": {
        "timestamp": "2026-05-31T06:28:01.079Z",
        "request_id": "12220544-7b7c-4370-b668-d452865d5fe8"
    },
    "status": "ok",
    "message": "Children listed",
    "success": true
}
```

#### `GET /v1/code` — An ATC code with ancestors, children & DDDs

**Parameters:**
- `code` (query, required, string) — ATC code, e.g. A10BA02 (metformin) Example: `A10BA02`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/atc-api/v1/code?code=A10BA02"
```

**Response:**
```json
{
    "data": {
        "code": "A10BA02",
        "ddds": [
            {
                "ddd": "2",
                "uom": "g",
                "route": "O"
            }
        ],
        "name": "metformin",
        "level": "chemical_substance",
        "parent": "A10BA",
        "children": [],
        "ancestors": [
            {
                "code": "A",
                "name": "ALIMENTARY TRACT AND METABOLISM",
                "level": "anatomical_main_group"
            },
            {
                "code": "A10",
                "name": "DRUGS USED IN DIABETES",
                "level": "therapeutic_subgroup"
            },
            {
                "code": "A10B",
                "name": "BLOOD GLUCOSE LOWERING DRUGS, EXCL. INSULINS",
                "level": "pharmacological_subgroup"
            },
            {
                "code": "A10BA",
                "name": "Biguanides",
                "level": "chemical_subgroup"
            }
        ],
        "level_num": 5,
        "children_count": 0
    },
    "meta": {
        "timestamp": "2026-05-31T06:28:01.155Z",
        "request_id": "f8e50b3a-5d73-4f30-8bb0-2419e16b83e2"
    },
    "status": "ok",
    "message": "ATC code retrieved",
    "success": true
}
```

#### `GET /v1/search` — Search drugs / groups by name

**Parameters:**
- `q` (query, required, string) — Name search, e.g. metformin Example: `metformin`
- `level` (query, optional, string) — anatomical_main_group | therapeutic_subgroup | pharmacological_subgroup | chemical_subgroup | chemical_substance
- `limit` (query, optional, string) — Results per page (1-100, default 20) Example: `20`
- `offset` (query, optional, string) — Pagination offset Example: `0`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/atc-api/v1/search?q=metformin&limit=20&offset=0"
```

**Response:**
```json
{
    "data": {
        "count": 19,
        "level": null,
        "limit": 20,
        "query": "metformin",
        "total": 19,
        "offset": 0,
        "results": [
            {
                "code": "A10BA02",
                "ddds": [
                    {
                        "ddd": "2",
                        "uom": "g",
                        "route": "O"
                    }
                ],
                "name": "metformin",
                "level": "chemical_substance",
                "parent": "A10BA",
                "level_num": 5
            },
            {
                "code": "A10BD02",
                "name": "metformin and sulfonylureas",
                "level": "chemical_substance",
                "parent": "A10BD",
                "level_num": 5
            },
            {
                "code": "A10BD03",
                "name": "metformin and rosiglitazone",
                "level": "chemical_substance",
                "parent": "A10BD",
                "level_num": 5
            },
            {
                "code": "A10BD05",
                "name": "metformin and pioglitazone",
                "level": "chemical_substance",
                "parent": "A10BD",
                "level_num": 5
            },
            {
                "code": "A10BD07",
                "name": "metformin and sitagliptin",
                "level": "chemical_substance",
                "parent": "A10BD",
                "level_num": 5
    
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Totals & level breakdown

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/atc-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "note": "5 levels by code length (1/3/4/5/7 chars). DDD = WHO Defined Daily Dose (uom unit, route O=oral/P=parenteral/…).",
        "total": 6440,
        "fields": [
            "code",
            "name",
            "level",
            "level_num",
            "parent",
            "ddds",
            "ancestors",
            "children"
        ],
        "levels": [
            {
                "count": 14,
                "level": "anatomical_main_group",
                "level_num": 1
            },
            {
                "count": 94,
                "level": "therapeutic_subgroup",
                "level_num": 2
            },
            {
                "count": 269,
                "level": "pharmacological_subgroup",
                "level_num": 3
            },
            {
                "count": 909,
                "level": "chemical_subgroup",
                "level_num": 4
            },
            {
                "count": 5154,
                "level": "chemical_substance",
                "level_num": 5
            }
        ],
        "source": "WHO ATC/DDD classification (2021)"
    },
    "meta": {
        "timestamp": "2026-05-31T06:28:01.313Z",
        "request_id": "1d0d75f3-f2c7-416f-93a5-103edc38fc27"
    },
    "status": "ok",
    "message": "Meta retrieved",
    "success": true
}
```


---
Marketplace page: https://www.oanor.com/api/atc-api
OpenAPI spec: https://www.oanor.com/api/atc-api/openapi.json
