Licensed Natural Health Products Database (LNHPD) API Guide

Table of contents

Introduction

The Licensed Natural Health Products Database (LNHPD) contains information about natural health products (NHPs) that have been issued a product licence by Health Canada.

This Application Programming Interface (API) allows developers to access that information in JSON and XML format for reuse in their own applications. The base URI for the Licensed Natural Health Products Database is https://health-products.canada.ca/api/natural-licences/ and you can add parameters to it. Any requests are made relative to this URI.

Medicinal Ingredient

Contributes to the therapeutic activity associated with the recommended use or purpose.

Parameters

There are three parameters in the request: id, lang and type.

Request parameters
Parameter Meaning Value Required? Note
api/natural-licences/medicinalingredient/?id= Returns medicinal ingredient(s) according to the unique product identifier specified in the request.
    Product identifier
No If no ID is provided, a paginated response of all medicinal ingredients is returned beginning at page 1.
api/natural-licences/medicinalingredient/?page= Returns a given page of the paginated results.
    1-n
No Parameter can only be used if not searching by ID.
api/natural-licences/medicinalingredient/?lang=en Changes the language of the response.
  • en - English
  • fr - French
No, but defaults to English if not specified. Determines whether the response is in English or French.
api/natural-licences/medicinalingredient/?type=json Changes the format of the result.
  • json - JSON
  • xml - XML
No, but defaults to JSON if not specified. Determines whether the format of the result will be in JSON or XML.

Medicinal Ingredients can be accessed via these URIs:

Contents of the response

The response consists of a result that contains one or multiple objects.

Each medicinal ingredient object consists of the following values:

Medicinal Ingredient object values
Key Value
lnhpd_id Unique product identifier.
ingredient_name The name of the Medicinal Ingredient.
potency_amount The amount per dosage unit of the standardized component that further characterizes the quantity of the ingredient.
potency_unit of_measure Unit of measurement describing the potency-amount.
potency_constituent Active component of the Medicinal Ingredient.
quantity Quantity of Medicinal Ingredient/dosage unit.
quantity_minimum Minimum quantity if range.
quantity_maximum Maximum quantity if range.
quantity_unit_of_measure Unit of measurement describing the quantity.
ratio_numerator Extract ratio numerator.
ratio_denominator Extract ratio denominator.
dried_herb_equivalent The amount of crude ingredient used in an extract, expressed per dosage unit.
dhe_unit of_measure Unit of measurement describing quantity.
extract_type_desc Extract type.
source_material The substance from which the medicinal ingredient was derived. There may be multiple sources for a medicinal ingredient.

Sample responses

  • https://health-products.hres.ca/api/natural-licences/medicinalingredient?lang=en&type=json
    {
            "metadata":{
                "pagination":{
                    "limit":100,
                    "page":1,
                    "total":467758,
                    "next":"medicinalingredient?page=2&lang=en&type=json",
                    "previous":null
                },
                "dateReceived":"2018-11-28"
            },
            "data":[
                {
                    "lnhpd_id":3894657,
                    "ingredient_name":"Valeriana officinalis","ingredient_Text":null,
                    "potency_amount":0.0,
                    "potency_constituent":"",
                    "potency_unit_of_measure":"",
                    "quantity":80.0,
                    "quantity_minimum":0,
                    "quantity_maximum":0,
                    "quantity_unit_of_measure":"mg",
                    "ratio_numerator":"5",
                    "ratio_denominator":"1",
                    "dried_herb_equivalent":"400",
                    "dhe_unit_of_measure":"mg",
                    "extract_type_desc":"",
                    "source_material":"Root"
                },
                ...
            }
        ]
    }
  • https://health-products.hres.ca/api/natural-licences/medicinalingredient?lang=en&type=json&id=3894657
    {
            "metadata":{
                "pagination": null,
                "dateReceived":"2018-11-28"
            },
            "data":[
                {
                    "lnhpd_id":3894657,
                    "ingredient_name":"Valeriana officinalis","ingredient_Text":null,
                    "potency_amount":0,
                    "potency_constituent":"",
                    "potency_unit_of_measure":"",
                    "quantity":80,"quantity_minimum":0,
                    "quantity_maximum":0,
                    "quantity_unit_of_measure":"mg",
                    "ratio_numerator":"5",
                    "ratio_denominator":"1",
                    "dried_herb_equivalent":"400",
                    "dhe_unit_of_measure":"mg",
                    "extract_type_desc":"",
                    "source_material":"Root"
                },
                ...
            }
        ]
    }

Non-Medicinal Ingredient

Any substance added to a NHP to confer suitable consistency or form to the medicinal ingredients.

Parameters

There are three parameters in the request: id, lang and type.

Request parameters
Parameter Meaning Value Required? Note
api/natural-licences/nonmedicinalingredient/?id= Returns non-medicinal ingredient(s) according to the unique product identifier specified in the request.
    ##### - unique product identifier
Yes
api/natural-licences/nonmedicinalingredient/?lang=en Changes the language of the response.
  • en - English
  • fr - French
No, but defaults to English if not specified. Determines whether the response is in English or French.
api/natural-licences/nonmedicinalingredient/?type=json Changes the format of the result.
  • json - JSON
  • xml - XML
No, but defaults to JSON if not specified. Determines whether the format of the result will be in JSON or XML.

Non-Medicinal Ingredients can be accessed via these URIs:

Contents of the response

The response consists of a result that contains one or multiple objects.

Each non-medicinal ingredient object consists of the following values:

Non-Medicinal Ingredient object values
Key Value
lnhpd_id Unique product identifier.
ingredient_name The name of the Non-Medicinal Ingredient.

Sample response

[{"lnhpd_id":3894852,"ingredient_name":"Annatto"},
    {"lnhpd_id":3894852,"ingredient_name":"Artificial Orange Flavor"},
    {"lnhpd_id":3894852,"ingredient_name":"Cellulose"},
    {"lnhpd_id":3894852,"ingredient_name":"Dextrose"},
    {"lnhpd_id":3894852,"ingredient_name":"Fructose"},
    {"lnhpd_id":3894852,"ingredient_name":"Magnesium Stearate"},
    {"lnhpd_id":3894852,"ingredient_name":"Stearic Acid"}]

jQuery example

Example of a function that search for non-medicinal ingredient(s) given a unique product identifier and language selection:

function getNonIngredient(id, lang) {
	var base = 'https://health-products.canada.ca';
	var uri = base + '/api/natural-licences/nonmedicinalingredient/?lang=' + lang + '&id=' + id;
	$.ajax({
		url: uri,
		type: 'GET',
		Accept: "application/json",
		dataType: 'json',
		success: function(data) {
			console.log(data.ingredient_name);
			var frag = document.createDocumentFragment();
			var h2 = document.createElement("h2");
			var NonIngredientName = document.createTextNode(data.ingredient_name);
			var p = document.createElement("p");
			var text = document.createTextNode(data.panels[0].text);
			h2.appendChild(NonIngredientName);
			p.appendChild(text);
			frag.appendChild(h2);
			frag.appendChild(p);
			$("#responses")[0].appendChild(frag);
		},
		error: function(error) {},
	});
	return;
};			

Product Dose

The amount of finished product in dosage form used for the recommended purpose, including any directions of use. The dose is represented as the amount of dosage units, the frequency of use, and directions for use, if any, by a sub-population group.

Parameters

There are three parameters in the request: id, lang and type.

Request parameters
Parameter Meaning Value Required? Note
api/natural-licences/productdose/?id= Returns product dose according to the unique product identifier specified in the request.
    ##### - unique product identifier
Yes
api/natural-licences/productdose/?lang=en Changes the language of the response.
  • en - English
  • fr - French
No, but defaults to English if not specified. Determines whether the response is in English or French.
api/natural-licences/productdose/?type=json Changes the format of the result.
  • json - JSON
  • xml - XML
No, but defaults to JSON if not specified. Determines whether the format of the result will be in JSON or XML.

Product Doses can be accessed via these URIs:

Contents of the response

The response consists of a result that contains one or multiple objects.

Each product dose object consists of the following values:

Product Dose object values
Key Value
lnhpd_id Unique product identifier.
dose_id Unique identifier for Dose.
population_type_desc Sub-population The group to which the NHP is targeted (may be more than one) that may require different dosing from the standard.
age Age recommended.
age_minimum Minimum age if range.
age_maximum Maximum age if range.
uom_type_desc_age Unit of measurement for age.
quantity_dose Quantity of Medicinal Ingredient/dosage unit.
quantity_dose_minimum Minimum quantity of Medicinal Ingredient/dosage unit if range.
quantity_dose_maximum Maximum quantity of Medicinal Ingredient/dosage unit if range.
uom_type_desc_quantity_dose Unit of measurement describing dose.
frequency How often the product is to be taken in a given time or time interval.
frequency_minimum Minimum frequency if range.
frequency_maximum Maximum frequency if range.
uom_type_desc_frequency Unit of measurement describing frequency.

Sample response

{"lnhpd_id":3908931,"dose_id":5884617,"population_type_desc":"Adults","age":0,"age_minimum":0.0,"age_maximum":0.0,"uom_type_desc_age":"",
    "quantity_dose":2.0,"quantity_dose_minimum":0.0,"quantity_dose_maximum":0.0,"uom_type_desc_quantity_dose":"tablet","frequency":1.0,
    "frequency_minimum":0.0,"frequency_maximum":0.0,"uom_type_desc_frequency":"daily"}

jQuery example

Example of a function that search for a product dose given a unique product identifier and language selection:

function getProductDose(id, lang) {
	var base = 'https://health-products.canada.ca';
	var uri = base + '/api/natural-licences/productdose/?lang=' + lang + '&id=' + id;
	$.ajax({
		url: uri,
		type: 'GET',
		Accept: "application/json",
		dataType: 'json',
		success: function(data) {
			console.log(data.quantity_dose);
			var frag = document.createDocumentFragment();
			var h2 = document.createElement("h2");
			var ProductDose = document.createTextNode(data.quantity_dose);
			var p = document.createElement("p");
			var text = document.createTextNode(data.panels[0].text);
			h2.appendChild(ProductDose);
			p.appendChild(text);
			frag.appendChild(h2);
			frag.appendChild(p);
			$("#responses")[0].appendChild(frag);
		},
		error: function(error) {},
	});
	return;
};			

Product Licence

An eight (8) digit numerical code assigned to each natural health product approved to be marketed under the Natural Health Product Regulation (NHPR).

Parameters

There are three parameters in the request: id, lang and type.

Request parameters
Parameter Meaning Value Required? Note
api/natural-licences/productlicence/?id= Returns product licence according to the licence number specified in the request.
    ##### - number of the licence
Yes
api/natural-licences/productlicence/?lang=en Changes the language of the response.
  • en - English
  • fr - French
No, but defaults to English if not specified. Determines whether the response is in English or French.
api/natural-licences/productlicence/?type=json Changes the format of the result.
  • json - JSON
  • xml - XML
No, but defaults to JSON if not specified. Determines whether the format of the result will be in JSON or XML.

Product Licences can be accessed via these URIs:

Contents of the response

The response consists of a result that contains one or multiple objects.

Each product licence object consists of the following values:

Product Licence object values
Key Value
lnhpd_id Unique product identifier.
licence_number An eight (8) digit numerical code assigned to each natural health product approved to be marketed under the NHPR.
licence_date Date of original issuance.
revised_date Date last revised.
time_receipt Date submission received at Natural and Non-prescription Health Products Directorate.
date_start Date processing begins.
product_name_id Brand Name key value identifier.
product_name Brand Name.
dosage_form The final physical form of the natural health product which may be used by the consumer without requiring any further manufacturing.
company_id Company key value identifier.
company_name_id Company name key value identifier.
company_name Licence holder.
sub_submission_type_code Submission sub type identifier.
sub_submission_type_desc Text value or the submission sub-type.
flag_primary_name Flag on - primary brand name.
flag_product_status Product active/non-active.
flag_attested_monograph Attested to a monograph Yes/No.

Sample response

{"lnhpd_id":3894930,"licence_number":"02096870","licence_date":"2004-10-15","revised_date":null,"time_receipt":"2004-01-13",
    "date_start":"2004-01-19","product_name_id":170030,"product_name":"Primanol","dosage_form":"Capsule","company_id":10152,"company_name_id":9141709,"company_name":"Jamieson Laboratories Ltd.",
    "sub_submission_type_code":5,"sub_submission_type_desc":"Transitional DIN","flag_primary_name":1,"flag_product_status":1,"flag_attested_monograph":0}

jQuery example

Example of a function that search for a product licence given a licence number and language selection:

function getProductLicence(id, lang) {
	var base = 'https://health-products.canada.ca';
	var uri = base + '/api/natural-licences/productlicence/?lang=' + lang + '&id=' + id;
	$.ajax({
		url: uri,
		type: 'GET',
		Accept: "application/json",
		dataType: 'json',
		success: function(data) {
			console.log(data.licence_number);
			var frag = document.createDocumentFragment();
			var h2 = document.createElement("h2");
			var ProductLicence = document.createTextNode(data.licence_number);
			var p = document.createElement("p");
			var text = document.createTextNode(data.panels[0].text);
			h2.appendChild(ProductLicence);
			p.appendChild(text);
			frag.appendChild(h2);
			frag.appendChild(p);
			$("#responses")[0].appendChild(frag);
		},
		error: function(error) {},
	});
	return;
};			

Product Purpose

Statement that indicates the intended beneficial effect of a NHP when used according to the recommended dose, duration of use and route of administration.

Parameters

There are three parameters in the request: id, lang and type.

Request parameters
Parameter Meaning Value Required? Note
api/natural-licences/medicinalingredient/?id= Returns purpose(s) according to the unique product identifier specified in the request.
    Product identifier
No If no ID is provided, a paginated response of all product purposes is returned beginning at page 1.
api/natural-licences/productpurpose/?page= Returns a given page of the paginated results.
    1-n
No Parameter can only be used if not searching by ID.
api/natural-licences/productpurpose/?lang=en Changes the language of the response.
  • en - English
  • fr - French
No, but defaults to English if not specified. Determines whether the response is in English or French.
api/natural-licences/productpurpose/?type=json Changes the format of the result.
  • json - JSON
  • xml - XML
No, but defaults to JSON if not specified. Determines whether the format of the result will be in JSON or XML.

Product Purposes can be accessed via these URIs:

Contents of the response

The response consists of a result that contains one or multiple objects.

Each product purpose object consists of the following values:

Product Purpose object values
Key Value
text_id Unique identifier for purpose.
lnhpd_id Unique product identifier.
purpose Purpose statement(s).

Sample response

Product Risk

Any cautions and warnings, adverse reactions and contraindications associated with the use of the NHP.

Parameters

There are three parameters in the request: id, lang and type.

Request parameters
Parameter Meaning Value Required? Note
api/natural-licences/productrisk/?id= Returns product risk according to the unique product identifier specified in the request.
    Product identifier
No If no ID is provided, a paginated response of all product risks is returned beginning at page 1.
api/natural-licences/productrisk/?page= Returns a given page of the paginated results.
    1-n
No Parameter can only be used if not searching by ID.
api/natural-licences/productrisk/?lang=en Changes the language of the response.
  • en - English
  • fr - French
No, but defaults to English if not specified. Determines whether the response is in English or French.
api/natural-licences/productrisk/?type=json Changes the format of the result.
  • json - JSON
  • xml - XML
No, but defaults to JSON if not specified. Determines whether the format of the result will be in JSON or XML.

Product Risks can be accessed via these URIs:

Contents of the response

The response consists of a result that contains one or multiple objects.

Each product risk object consists of the following values:

Product Risk object values
Key Value
lnhpd_id Unique product identifier.
risk_id Risk type key value identifier.
risk_type_desc Cautions and warnings; contraindications; known adverse reactions.
sub_risk_type_desc Risk sub-types if applicable.
risk_text Risk label statement.

Sample response

  • https://health-products.hres.ca/api/natural-licences/productrisk?lang=en&type=json
    {
        "metadata": {
            "pagination": {
                "limit": 100,
                "page": 1,
                "total": 130334,
                "next": "productrisk?page=2&lang=en&type=json",
                "previous": null
            },
            "dateReceived": "2018-11-28"
        },
        "data": [
            {
                "lnhpd_id": 3898401,
                "risk_id": 12855,
                "risk_type_desc": "Cautions and Warnings",
                "sub_risk_type_desc": "",
                "risk_text": "Consult a health care provider prior to use if: you ..."
            },
            ...
        ]
    }
  • https://health-products.hres.ca/api/natural-licences/productrisk?lang=en&type=json&id=3894657
    {
        "metadata": {
            "pagination": null,
            "dateReceived": "2018-11-28"
        },
        "data": [
            {
                "lnhpd_id": 3898401,
                "risk_id": 12855,
                "risk_type_desc": "Cautions and Warnings",
                "sub_risk_type_desc": "",
                "risk_text": "Consult a health care provider prior to use if: you ..."
            },
            {
                "lnhpd_id": 3898401,
                "risk_id": 12861,
                "risk_type_desc": "Contra-Indications",
                "sub_risk_type_desc": "",
                "risk_text": "Do not use if pregnant or breastfeeding.  Do not ..."
            }
        ]
    }

Product Route

The method by which the NHP is to be delivered to the body.

Parameters

There are three parameters in the request: id, lang and type.

Request parameters
Parameter Meaning Value Required? Note
api/natural-licences/productroute/?id= Returns product route according to the unique product identifier specified in the request.
    ##### - unique product identifier
Yes
api/natural-licences/productroute/?lang=en Changes the language of the response.
  • en - English
  • fr - French
No, but defaults to English if not specified. Determines whether the response is in English or French.
api/natural-licences/productroute/?type=json Changes the format of the result.
  • json - JSON
  • xml - XML
No, but defaults to JSON if not specified. Determines whether the format of the result will be in JSON or XML.

Product Routes can be accessed via these URIs:

Contents of the response

The response consists of a result that contains one or multiple objects.

Each product route object consists of the following values:

Product Route object values
Key Value
lnhpd_id Unique product identifier.
route_id Route type key value identifier.
route_type_desc The method by which the NHP is to be delivered to the body.

Sample response

{"lnhpd_id":3894930,"route_id":170060,"route_type_desc":"Oral"}

jQuery example

Example of a function that search for a product route given a unique product identifier and language selection:

function getProductRoute(id, lang) {
	var base = 'https://health-products.canada.ca';
	var uri = base + '/api/natural-licences/productroute/?lang=' + lang + '&id=' + id;
	$.ajax({
		url: uri,
		type: 'GET',
		Accept: "application/json",
		dataType: 'json',
		success: function(data) {
			console.log(data.route_type_desc);
			var frag = document.createDocumentFragment();
			var h2 = document.createElement("h2");
			var ProductRouteName = document.createTextNode(data.route_type_desc);
			var p = document.createElement("p");
			var text = document.createTextNode(data.panels[0].text);
			h2.appendChild(ProductRouteName);
			p.appendChild(text);
			frag.appendChild(h2);
			frag.appendChild(p);
			$("#responses")[0].appendChild(frag);
		},
		error: function(error) {},
	});
	return;
};