RxNorm API
Free NIH RxNorm API with no key: normalised drug names, ingredients, brand-generic mapping and clinical drug identifiers from the US National Library of Medicine.
Endpoint tested and returned HTTP 200 on 19 Aug 2026
What is the RxNorm API?
RxNorm is a free, key-free API from the US National Library of Medicine providing normalised drug nomenclature — mapping brand names to generics, resolving ingredients and strengths, and linking to standard clinical drug identifiers.
RxNorm solves the drug naming problem. The same medication appears under dozens of brand names, formulations and spellings across health systems, and RxNorm assigns a normalised concept identifier (RXCUI) that ties them together.
That makes it foundational for any clinical software: given 'Tylenol', 'paracetamol' and 'acetaminophen 500 MG tablet', RxNorm resolves all three to related concepts so you can reason about them as one drug rather than three strings.
Quick facts
- Base URL
https://rxnav.nlm.nih.gov/REST- Authentication
- No API key required.
- Rate limit
- 20 requests per second per IP.
- Pricing
- Free public domain US government data.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the RxNorm API
Every request below was executed against the live API on 19 Aug 2026, and the response shown is the real body it returned — not an illustration.
1. Look up a drug by name
GET https://rxnav.nlm.nih.gov/REST/drugs.json?name=aspirin
curl 'https://rxnav.nlm.nih.gov/REST/drugs.json?name=aspirin'const res = await fetch("https://rxnav.nlm.nih.gov/REST/drugs.json?name=aspirin");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://rxnav.nlm.nih.gov/REST/drugs.json?name=aspirin", timeout=20)
res.raise_for_status()
print(res.json()){
"drugGroup": {
"name": null,
"conceptGroup": [
{
"tty": "BPCK",
"conceptProperties": [
{
"rxcui": "2047428",
"name": "{100 (acetaminophen 250 MG / aspirin 250 MG / caffeine 65 MG Oral Tablet [Excedrin]) / 24 (acetaminophen 250 MG / aspirin 250 MG / diphenhydramine citrate 38 MG Oral Tablet [Excedrin PM Triple Action]) } Pack [Excedrin PM Triple Action Caplets and Excedrin Extra Strength Pain Reliever]",
"synonym": "Excedrin PM Triple Action Caplets and Excedrin Extra Strength Pain Reliever Kit",
"tty": "BPCK",
"language": "ENG",
"suppress": "N",
"umlscui": ""
}
]
},
{
"tty": "GPCK",
"conceptProperties": [
{
"rxcui": "1730187",
"name": "{1 (aspirin 325 MG / dextromethorphan hydrobromide 10 MG / phenylephrine bitartrate 7.8 MG Effervescent Oral Tablet) / 1 (aspirin 500 MG / dextromethorphan hydrobromide 10 MG / doxylamine succinate 6.25 MG / phenylephrine bitartrate 7.8 MG Effervescent Oral Tablet) } Pack",
"synonym": "1 daytime (aspirin 325 MG / dextromethorphan HBr 10 MG / phenylephrine bitartrate 7.8 MG Effervescent Oral Tablet) / 1 nighttime (aspirin 500 MG / dextromethorphan HBr 10 MG / doxylamine succinate 6.25 MG / phenylephrine bitartrate 7.8 MG Effervescent Oral Tablet) Pack",
"tty": "GPCK",
"language": "ENG",
"suppress": "N",
"umlscui": ""
},
{
"rxcui": "2047427",Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
drugs.json?name= | string | Optional | Find all drug concepts matching a name. aspirin |
rxcui/<rxcui>/related.json | path | Optional | Concepts related to a given RXCUI. 1191 |
approximateTerm.json?term= | string | Optional | Fuzzy match for misspelled drug names. aspirn |
tty | string | Optional | Restrict to term types such as SCD, SBD or IN. SCD |
Response fields
drugGroup.conceptGrouparray- Groups of concepts by term type (tty).
conceptGroup[].ttystring- Term type: IN ingredient, SCD clinical drug, SBD branded drug, BPCK pack.
conceptProperties[].rxcuistring- The normalised concept identifier — the key output.
conceptProperties[].namestring- Full normalised drug name with strength and form.
conceptProperties[].synonymstring- Alternative name for the same concept.
What you can build with the RxNorm API
- Normalise drug names across health record systems
- Map brand names to generic equivalents
- Build medication search with fuzzy matching for misspellings
- Link prescriptions to standard clinical identifiers
Common errors and how to fix them
Empty conceptGroup
The drug name was not recognised.
Fix: Try /approximateTerm.json, which handles misspellings and partial names.
Confusing term types
tty codes are dense clinical terminology.
Fix: IN is the ingredient, SCD a clinical drug with strength and form, SBD the branded equivalent. Pick the level you need.
429
More than 20 requests per second.
Fix: Throttle; RxNorm enforces this per IP.
RxNorm API — frequently asked questions
Is the RxNorm API free?
Yes, completely free with no API key. It is published by the US National Library of Medicine as public domain data.
What is an RXCUI?
The normalised concept identifier RxNorm assigns to a drug concept. It is the key output — it lets you treat different names for the same medication as one entity.
How do I handle misspelled drug names?
Use the /approximateTerm.json endpoint, which does fuzzy matching and is designed for user-entered medication names.
What do the tty codes mean?
Term types. IN is an ingredient, SCD a clinical drug with strength and dose form, SBD the branded equivalent, and BPCK a branded pack. Choose the level of specificity your application needs.
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.
Text Compare
Compare two texts online free and highlight every difference. A private text comparison tool that finds matches and changes right in your browser.
Alternatives to RxNorm API
If RxNorm does not fit, these health & medical apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.
| API | What it does | Auth | CORS | Last verified |
|---|---|---|---|---|
| openFDA | Free FDA openFDA API with no key: drug labels, adverse event reports, recalls, device and food safety data from official US regulatory records. Tested example. | No key | Yes | 19 Aug 2026 |
| ClinicalTrials.gov | Free ClinicalTrials.gov API with no key: 500,000+ clinical studies worldwide with conditions, interventions, eligibility, locations and results. Tested example. | No key | No | 19 Aug 2026 |
| WHO Global Health Observatory | Free World Health Organization API with no key: 2,000+ health indicators by country and year — life expectancy, mortality, immunisation and disease data. Tested. | No key | No | 19 Aug 2026 |
| PubChem | Free NIH PubChem API with no key: 100M+ chemical compounds with formulas, molecular weight, structures, synonyms, safety and bioactivity data. Tested. | No key | Yes | 20 Aug 2026 |
| CDC Environmental Public Health Tracking | Free CDC Environmental Public Health Tracking API with no key: asthma, air quality, drinking water, heat illness, lead poisoning and climate health measures by state and county. | No key | Yes | 21 Aug 2026 |
| CDC Open Data | Free CDC Open Data API with no key: hundreds of public health datasets — mortality, life expectancy, chronic disease, environmental health — queryable with SoQL filters. | No key | Yes | 21 Aug 2026 |
RxNorm is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 19 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.