BYTETOOLS

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.

No API key requiredCORS enabledHTTPSFree tier

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
curl 'https://health-products.canada.ca/api/drug/drugproduct/?lang=en&din=00326925' \
  -H 'Accept: application/json'
JavaScript (fetch)
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);
Python (requests)
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())
Response — HTTP 200
[
  {
    "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

ParameterTypeRequiredDescription
dinqueryOptionalEight-digit Drug Identification Number, as printed on Canadian drug packaging. 00326925
idqueryOptionalInternal `drug_code`, not the DIN. Passing a DIN here returns an all-null record rather than an error. 2049
brandnamequeryOptionalBrand name search. Matches partially, so one query can return many products. TYLENOL
langqueryOptional`en` or `fr`. Canadian regulatory data is published bilingually. en
statusqueryOptionalFilter by marketing status, such as approved or cancelled. 1
(endpoint) /activeingredientpathOptionalActive ingredients for a drug code, with strengths and units. /api/drug/activeingredient/?id=2049
(endpoint) /drugproductpathOptionalThe 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

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.