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 2026-08-19
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 2026-08-19, 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.
RxNorm is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.