Health Canada Drug Product Database API
Free Health Canada Drug Product Database API with no key: look up any drug authorised for sale in Canada by DIN, brand name or company, with status and ingredient data.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the Health Canada Drug Product Database API?
The Health Canada Drug Product Database API is a free, key-free service covering every drug product authorised for sale in Canada. Queries by Drug Identification Number, brand name or company return the product record with its class, company, active ingredient group and last update date.
Canada requires every marketed drug to carry an eight-digit Drug Identification Number, printed on the package, and the DPD is the register behind it. That makes the API a direct route from something a person is physically holding to an authoritative regulatory record: the brand name, whether it is a human, veterinary or radiopharmaceutical product, the company responsible, and how many active ingredients it contains.
The parameter to get right is `din`. There is also an `id` parameter, but it takes the database's internal `drug_code`, and supplying anything else returns HTTP 200 with a skeleton object of nulls rather than an error — a silent failure that is easy to miss in testing. Related endpoints hang off the same base for active ingredients, dosage forms, packaging, therapeutic class and product status, all keyed by `drug_code` from the initial lookup, so the usual pattern is one query by DIN followed by several by drug code. The database records what is authorised, not what is clinically appropriate; it carries no dosing or prescribing content.
Quick facts
- Base URL
https://health-products.canada.ca/api/drug- Authentication
- No API key or account. The data is published by Health Canada under the Open Government Licence – Canada, which permits reuse including commercially with attribution.
- Rate limit
- No published limit. Health Canada also publishes full database extracts for bulk use.
- Pricing
- Free. Open Government Licence – Canada, attribution required.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the Health Canada Drug Product Database API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Look up a Canadian drug product by its DIN
GET https://health-products.canada.ca/api/drug/drugproduct/?lang=en&din=00326925
curl 'https://health-products.canada.ca/api/drug/drugproduct/?lang=en&din=00326925' \
-H 'Accept: application/json'const res = await fetch("https://health-products.canada.ca/api/drug/drugproduct/?lang=en&din=00326925", {
headers: {
"Accept": "application/json",
},
});
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
headers = {
"Accept": "application/json",
}
res = requests.get("https://health-products.canada.ca/api/drug/drugproduct/?lang=en&din=00326925", headers=headers, timeout=20)
res.raise_for_status()
print(res.json())[
{
"drug_code": 2049,
"class_name": "Human",
"drug_identification_number": "00326925",
"brand_name": "SINEQUAN",
"descriptor": "",
"number_of_ais": "1",
"ai_group_no": "0107703005",
"company_name": "AA PHARMA INC",
"last_update_date": "2025-03-22"
}
]Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
din | query | Optional | Eight-digit Drug Identification Number, as printed on Canadian drug packaging. 00326925 |
id | query | Optional | Internal `drug_code`, not the DIN. Passing a DIN here returns an all-null record rather than an error. 2049 |
brandname | query | Optional | Brand name search. Matches partially, so one query can return many products. TYLENOL |
lang | query | Optional | `en` or `fr`. Canadian regulatory data is published bilingually. en |
status | query | Optional | Filter by marketing status, such as approved or cancelled. 1 |
(endpoint) /activeingredient | path | Optional | Active ingredients for a drug code, with strengths and units. /api/drug/activeingredient/?id=2049 |
(endpoint) /drugproduct | path | Optional | The main product record endpoint used in this example. /api/drug/drugproduct/ |
Response fields
drug_codeinteger- Health Canada's internal identifier. The key for every related endpoint.
drug_identification_numberstring- The DIN as an eight-digit string, with leading zeros preserved. Do not cast it to an integer.
brand_namestring- Marketed brand name of the product.
class_namestring- `Human`, `Veterinary`, `Radiopharmaceutical` or `Disinfectant`. Filter on this — veterinary products share the same namespace.
company_namestring- The market authorisation holder.
number_of_aisstring- Count of active ingredients, as a string. Fetch the ingredients themselves from the related endpoint.
ai_group_nostring- Active ingredient group number, which groups products sharing the same ingredient combination.
last_update_datestring- When the record last changed in the register.
descriptorstring- Additional product descriptor. Frequently an empty string.
What you can build with the Health Canada Drug Product Database API
- Resolve a DIN from a medicine package to a product record
- Check whether a drug is authorised for sale in Canada
- Find every product marketed by a company
- Distinguish human from veterinary products in a dataset
- Look up the active ingredient group shared by generic equivalents
Common errors and how to fix them
200 with an all-null record
A DIN was passed to the `id` parameter.
Fix: `id` expects the internal `drug_code`. Use `din` for Drug Identification Numbers — the API returns a null skeleton rather than an error, so this fails quietly.
Leading zeros lost
The DIN was treated as a number.
Fix: DINs are fixed-width strings. `00326925` becomes `326925` if cast to an integer and no longer matches.
Unexpected veterinary products
Human and animal drugs share one register.
Fix: Filter on `class_name`. A brand-name search will happily return veterinary formulations alongside human ones.
Empty array
No product matches, or the product was never authorised in Canada.
Fix: Brand names differ between countries; the same molecule may be marketed under another name in Canada entirely.
Health Canada Drug Product Database API — frequently asked questions
Is the Health Canada drug API free?
Yes, free with no key or registration. The data is published under the Open Government Licence – Canada, permitting commercial reuse with attribution to Health Canada.
What is a DIN?
A Drug Identification Number, the eight-digit code Health Canada assigns to every drug authorised for sale in Canada. It is printed on the package, which makes it the practical link between a physical product and its regulatory record.
Why did my lookup return a record full of nulls?
Because the DIN went into the `id` parameter, which expects the internal `drug_code` instead. The API responds with HTTP 200 and an empty skeleton rather than an error, so it looks like a successful query for a nonexistent product.
Does the database include dosing information?
No. It records what Health Canada has authorised — product identity, company, ingredients, form and status. Prescribing and dosing information belongs to the product monograph and to clinicians, not to this register.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
JSON to CSV Converter
Convert a JSON array of objects to CSV online. Automatic column headers from the union of all keys, delimiter choice and proper quoting — all in-browser.
CSV Viewer & Table
View CSV as a clean HTML table online. Live search filter, row and column counts, delimiter and header options — all processed locally in your browser.
Health Canada Drug Product Database is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.