Search medicines
GET/v1/drugs
Searches every record of every source in one country by name, active ingredient or identifier. Names match anywhere in the text; identifiers such as AIC, CN, NDC or DIN codes match from their first character. Matching ignores accents and case. Results rank exact matches first, then prefix matches, then other matches, each by record name.
Parameters
-
countrystring Required - Two-letter ISO 3166-1 country code, lowercase. Every search is scoped to one country.
-
qstring Required - The text to search for: a name, an active ingredient or an identifier. 3 to 120 characters, matched literally.
-
limitinteger - Number of results to return, from 1 to 50. Defaults to 20.
-
offsetinteger - Number of results to skip, from 0 to 10000. Use the nextOffset of the previous page.
-
kindsstring - Keep only these record kinds, as comma-separated sourceId:kind pairs of the requested country, at most 12. Applied before pagination.
-
useDomainenum -
Keep only records whose source classifies them for this use. human and veterinary also include products the source marks for both. Applied before pagination.
Possible values:
humanveterinarybothunknownnot-applicable -
speciesstring - Keep only records with this reviewed target species, such as dog, cat, horse or cattle. Records with unknown or unmapped species are excluded. Applied before pagination.
Returns
-
countrystring - The country searched.
-
resultsRecord[] - The matching records, best matches first.
-
nextOffsetinteger | null - The offset of the next page, or null on the last page.
Errors
400 401
403
429 503 ·
Errors and rate limits
curl -G https://api.medifontis.com/v1/drugs \
-H "Authorization: Bearer $MEDIFONTIS_API_KEY" \
--data-urlencode "country=ca" \
--data-urlencode "q=metformin"const params = new URLSearchParams({ country: 'ca', q: 'metformin' })
const response = await fetch(`https://api.medifontis.com/v1/drugs?${params}`, {
headers: { Authorization: `Bearer ${process.env.MEDIFONTIS_API_KEY}` },
})
if (!response.ok) throw new Error(`Medifontis ${response.status}`)
const { results, nextOffset } = await response.json()import os
import requests
response = requests.get(
"https://api.medifontis.com/v1/drugs",
params={"country": "ca", "q": "metformin"},
headers={"Authorization": f"Bearer {os.environ['MEDIFONTIS_API_KEY']}"},
timeout=10,
)
response.raise_for_status()
results = response.json()["results"]
{
"country": "ca",
"results": [
{
"country": "ca",
"sourceId": "ca.health-canada.dpd",
"id": "ca:health-canada:products:62265",
"kind": "products",
"name": "METFORMIN · 500 MG per TAB · TABLET",
"data": {
"din": "02238827",
"form": "TABLET",
"name": "METFORMIN · 500 MG per TAB · TABLET",
"holder": "LABORATOIRES CONFAB INC",
"routes": [
"ORAL"
],
"smpcUrl": null,
"atcCodes": [
"A10BA02"
],
"drugCode": "62265",
"marketed": false,
"packages": [],
"brandName": "METFORMIN",
"updatedAt": "22-MAR-2025",
"useDomain": "human",
"descriptor": null,
"leafletUrl": null,
"statusDate": "09-APR-2021",
"biosimilars": [],
"brandNameFr": null,
"descriptorFr": null,
"productClass": "Human",
"publishedDin": "02238827",
"sourceStatus": "CANCELLED PRE MARKET",
"supplyRegime": "PRESCRIPTION",
"targetSpecies": [],
"categorization": null,
"ingredientGroup": "0101773001",
"publicationDate": "2026-10-05",
"sourcePartition": "cancelled",
"dinNotApplicable": false,
"activeIngredients": [
{
"base": "N",
"code": "10147",
"name": "METFORMIN HYDROCHLORIDE",
"unit": "MG",
"nameFr": "Chlorhydrate de metformine",
"strength": "500",
"dosageUnit": "TAB",
"dosageValue": null,
"strengthType": null,
"suppliedIndicator": "I"
}
],
"useDomainEvidence": {
"basis": "publisher-field",
"field": "class",
"value": "Human",
"version": 1,
"sourceId": "ca.health-canada.dpd"
},
"identifierWarnings": [],
"patientEligibility": "not-assessed",
"numberOfIngredients": "1",
"targetSpeciesStatus": "not-applicable",
"administrativeStatus": "cancelled",
"prescriptionCategory": "prescription-or-restricted",
"prescriptionRequired": true,
"pharmaceuticalStandards": []
},
"region": null,
"retrievedAt": "2026-10-20T06:46:39.902Z",
"sourceUrl": "https://www.canada.ca/en/health-canada/services/drugs-health-products/drug-products/drug-product-database/what-data-extract-drug-product-database.html",
"licence": {
"id": "LicenseRef-Health-Canada-DPD-Reuse-Unconfirmed",
"url": "https://healthycanadians.gc.ca/important-eng.php",
"reviewedAt": "2026-10-01",
"attribution": "Source: Health Canada, Drug Product Database (DPD).",
"documentsIncluded": false
},
"limitations": [
"This is the complete published DPD extract, not the separately licensed natural health products database, the CCDD clinical terminology dataset or provincial formulary eligibility.",
"The publisher page advertises file dates independently of the products’ own last-update dates; neither is silently replaced by collection time.",
"Record identity is DRUG_CODE. DINs are verbatim eight-digit strings and can repeat across historical observations; Not Applicable/non applicable is retained but never indexed as a DIN.",
"Veterinary and disinfectant products are collected as separate kinds and excluded from Doctofam prescriptions. Radiopharmaceuticals retain their own kind.",
"Schedules C/D, homeopathic and prescription-recommended designations alone do not establish Rx/OTC classification; missing, mixed and unrecognised classifications remain unknown. Ethical is federally non-prescription professional use.",
"Package descriptions and UPC values are publisher observations, not unique package records. No pack identifier, interchangeability, stock or patient eligibility is inferred.",
"The actual therapeutic-class export has four columns rather than the current read-me’s seven; the fourth remains raw without an inferred meaning.",
"Corporate addresses are withheld from normalized and raw records. Original source archives remain retained as evidence. No product monograph URLs are published in these extracts, and no clinical documents are copied.",
"The linked legacy copyright notice requires permission for commercial reproduction. The Open Government portal also lists this dataset, but its current licence could not be verified during review; commercial derived-data reuse remains unconfirmed and the owner accepts this documented rights gap under the country brief."
],
"names": [
"METFORMIN · 500 MG per TAB · TABLET",
"METFORMIN",
"METFORMIN HYDROCHLORIDE",
"Chlorhydrate de metformine"
],
"identifiers": [
{
"value": "02238827",
"scheme": "din"
},
{
"value": "62265",
"scheme": "dpd-drug-code"
},
{
"value": "A10BA02",
"scheme": "atc"
},
{
"value": "0101773001",
"scheme": "aig"
}
]
}
],
"nextOffset": 2
}