Find an API

Search public APIs with auth details & Postman guides

← All APIs

NLM RxNorm API

National Library of Medicine · Health

Health No Auth Free & Open Healthcare Life Sciences RxNorm Drugs Medication

RxNorm provides normalized drug names and identifiers for clinical drugs. Look up drugs by name, RxCUI, NDC, or ingredient. Critical for medication reconciliation, drug interaction checks, and HL7/FHIR medication resources.

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET Find drug by name

Get the RxCUI identifier for a drug by its name

https://rxnav.nlm.nih.gov/REST?name=metformin&search=1

Hover any highlighted part to learn what it does

curl -X GET "https://rxnav.nlm.nih.gov/REST?name=metformin&search=1"
import requests
params = {
    "name": "metformin",
    "search": "1"
}
response = requests.get(
    "https://rxnav.nlm.nih.gov/REST",
    params=params,
)
print(response.json())
const url = new URL('https://rxnav.nlm.nih.gov/REST');
url.searchParams.set('name', 'metformin');
url.searchParams.set('search', '1');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://rxnav.nlm.nih.gov/REST")
	q := baseURL.Query()
	q.Set("name", "metformin")
	q.Set("search", "1")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://rxnav.nlm.nih.gov/REST")
uri.query = URI.encode_www_form({
  "name" => "metformin",
  "search" => "1"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://rxnav.nlm.nih.gov/REST?" . http_build_query([
    "name" => "metformin",
    "search" => "1"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. No API key required — fully public NIH service
  2. Find a drug's RxCUI: GET https://rxnav.nlm.nih.gov/REST/rxcui.json?name=metformin
  3. Get drug details by RxCUI: GET /REST/rxcui/{rxcui}/properties.json
  4. Find related drugs: GET /REST/rxcui/{rxcui}/related.json?tty=IN+BN
  5. Response is JSON — append .json to any endpoint URL for JSON format

What can you build with NLM RxNorm API?

NLM RxNorm API is a Health API. Developers commonly use health APIs for:

  • accessing medical reference data and drug information
  • building patient-facing health tracking apps
  • integrating with EHR and telemedicine platforms
  • looking up ICD codes and clinical terminology
  • powering wellness and fitness applications

No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. NLM RxNorm API is free to use, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide · Learn about API keys · What is REST?

Open documentation ↗