# Barcode scan → GTIN curl 'https://drug-database.com/v1/drugs/lookup\ ?system=gtin&code=7680651870019' \ -H 'Authorization: Bearer ms_live_…' # US National Drug Code curl 'https://drug-database.com/v1/drugs/lookup\ ?system=ndc11&code=00071015523' \ -H 'Authorization: Bearer ms_live_…'
NDC & Barcode Lookup
NDC & Barcode to Drug API
Resolve the identifier on a medication pack to a drug in one call. The barcode your scanner reads is a GTIN (or EAN); a US pack carries an NDC. Pass it to GET /v1/drugs/lookup?system=gtin&code=… (or system=ndc11) and get back the canonical drug row plus the exact pack that matched.
Identifier resolution is unified: GTIN, NDC, EAN, Pharmacode, PZN, CIP13, dm+d AMPP-ID, and Swissmedic-No all hit the same endpoint and return the same shape. Resolve once, then read the full record to cross-walk between systems for the same product.
{
"drug": {
"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-08T02:14:00Z"
},
"matched_alias": {
"system": "gtin",
"code": "7680651870019",
"pack_size": 30,
"is_primary": true
},
"_meta": { "sources": [ "bag_sl", "oddb" ] }
}What you get
Barcode → product
GTIN/EAN from a scanner resolves to the canonical drug row in one indexed read.
NDC in the same shape
system=ndc11 resolves a US National Drug Code with an identical response — only the system changes.
Cross-system identity
One product, many identifiers: resolve any one, then read the full record to map to the rest.
Frequently asked
My scanner reads a GTIN/EAN barcode — what do I pass?
A linear barcode on a medication pack encodes a GTIN (or EAN). Pass system=gtin and the digits in code. The endpoint resolves it to the canonical drug row, with the matched pack returned alongside.
Can I resolve a US NDC?
Yes. Pass system=ndc11 with an 11-digit National Drug Code. The same endpoint and the same response shape — only the identifier system changes.
Which identifier systems are supported?
gtin, ndc11, pharmacode, cip13, pzn, swissmedic_no, ean, and dmd_amppid. Resolve any one to a single canonical product, then read the full record to cross-walk to the others.
Start free — 100 requests/day
Free tier: 100 requests/day, no card. Lookups need the drugs:read scope. Unknown identifiers return a clean 404 identifier_not_found — see the docs.