Solution · Switzerland drug API

Switzerland Drug Database API — BAG-SL, Swissmedic, EPha.

A single REST surface over the Swiss drug market: reimbursement, dispensing category, Pharmacode and ATC, stitched from the authoritative registers.

GET /api/v1/drugs?country=CH

What you get

The job, end to end

A single REST surface over the Swiss drug market, stitched from the authoritative registers: BAG Spezialitätenliste for reimbursement and price, Swissmedic AIPS for authorisation and dispensing category, oddb for Pharmacode and pack data, and EPha for interactions. Pass country=CH and search by name or ATC prefix.

Every CH product comes back with the fields Swiss healthcare apps actually need: is_reimbursed (on the SL or not), dispensing_cat (Swissmedic A–E), atc_code, the Swissmedic-No, and the Pharmacode via the lookup endpoint.

Reimbursement

is_reimbursed built in

Reflects the BAG Spezialitätenliste on every CH product — no separate SL lookup, just a boolean on the row.
Dispensing

Swissmedic category A–E

dispensing_cat from Swissmedic AIPS, so you can gate prescription-only flows directly off the field.
Identifiers

Pharmacode + ATC

Resolve packs by Pharmacode and traverse the WHO ATC tree from the same dataset.

In code

A representative call

Search the Swiss market with country=CH and get reimbursement, dispensing category and identifiers on every row.

GET /api/v1/drugs?country=CH
curl 'https://drug-database.com/api/v1/drugs\
?country=CH&q=aspirin&limit=2' \
  -H 'Authorization: Bearer dd_live_…'
response
{
  "results": [
    {
      "id": "3f8a1c2d-1b4e-4c7a-9d2f-0a1b2c3d4e5f",
      "swissmedic_no": "65187",
      "product_name": "Aspirin Cardio 100 mg",
      "atc_code": "B01AC06",
      "manufacturer": "Bayer (Schweiz) AG",
      "dispensing_cat": "B",
      "is_reimbursed": true,
      "country_code": "CH",
      "last_synced_at": "2026-06-27T02:14:00Z"
    }
  ],
  "_meta": { "sources": ["bag_sl", "aips", "oddb", "atc"] }
}

Swiss sources & freshness

  • BAG Spezialitätenliste — reimbursement and price.
  • Swissmedic AIPS — authorisation, dispensing category, monographs.
  • oddb — Pharmacode, packs, prices. EPha — interactions. WHO ATC — classification.
  • Every row carries last_synced_at; we are not affiliated with or endorsed by these sources.
Good to know
  • · Search needs the drugs:read scope.
  • · Filter by ATC prefix with &atc= — see the docs.

FAQ

Common questions

is_reimbursed reflects whether the product is on the BAG Spezialitätenliste (SL) — the list of medicines reimbursed by Swiss mandatory health insurance. It is a boolean on every CH drug row.
The Swissmedic dispensing category (A, B, C, D or E) that governs how a product may be sold — from A (single dispensation on prescription) through E (general sale). It is sourced from Swissmedic AIPS.
BAG Spezialitätenliste (reimbursement and price), Swissmedic AIPS (authorisation, dispensing category, monographs), oddb (Pharmacode, packs, prices), EPha (interactions) and WHO ATC.

Ready when you are

Ship switzerland drug api on data that stays fresh.

Free to test — 100 requests/day, no card. Upgrade only when you need the throughput.

Free tier · 100 requests/day · No card required