Solution · NDC & barcode lookup
NDC & Barcode to Drug API.
Scan a barcode, get a drug. Resolve a GTIN/EAN or a US NDC to the canonical product in one indexed read, across every identifier system.
GET /api/v1/drugs/lookup?system=gtin
What you get
The job, end to end
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 /api/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.
NDC in the same shape
Cross-system identity
In code
A representative call
Pass a scanned GTIN or a US NDC to the same lookup endpoint and get back the canonical drug plus the matched pack.
# Barcode scan → GTIN
curl 'https://drug-database.com/api/v1/drugs/lookup\
?system=gtin&code=7680651870019' \
-H 'Authorization: Bearer dd_live_…'
# US National Drug Code
curl 'https://drug-database.com/api/v1/drugs/lookup\
?system=ndc11&code=00071015523' \
-H 'Authorization: Bearer dd_live_…'{
"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-27T02:14:00Z"
},
"matched_alias": {
"system": "gtin",
"code": "7680651870019",
"pack_size": 30,
"is_primary": true
},
"_meta": { "sources": ["bag_sl", "oddb"] }
}Coverage & sourcing
- Identifier systems: gtin, ndc11, pharmacode, cip13, pzn, swissmedic_no, ean, dmd_amppid.
- Alias data is data sourced from oddb, BAG-SL, FDA NDC and the national registers.
- Unknown identifiers return a clean 404 identifier_not_found — no fuzzy guesses.
- We are not affiliated with or endorsed by GS1, the FDA or the national registers.
- · Lookups need the drugs:read scope.
- · Unknown identifiers return a clean 404 identifier_not_found — see the docs.
FAQ
Common questions
Ready when you are
Ship ndc & barcode lookup 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