NDC product lookup with price and recalls API
Full product record for one package NDC: normalized NDC forms; RxNav status, RxCUI, concept name and history; labeler, marketing category, status and dates, application number, DEA schedule, imprint, color, shape and size from RxNav; brand and generic name, dosage form, route, active ingredients with strengths and package description from the openFDA NDC Directory; latest CMS NADAC unit cost; openFDA recall enforcement reports from the last 36 months.
$0.02 per call USDC over x402 v2 on Base, Polygon, Arbitrum, Avalanche or Sei. No signup, no API key. Requests that fail or match nothing are not charged.
Endpoint
GET https://rx.kit-rx.com/v1/rx/ndc
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
ndc | string | yes | Package NDC, 10-digit dashed, 11-digit dashed or undashed, or undashed 10-digit e.g. 0003-0894-21 |
Example request
https://rx.kit-rx.com/v1/rx/ndc?ndc=0003-0894-21
Without payment the server answers 402 Payment Required with the price (20000 atomic USDC) in the PAYMENT-REQUIRED header. Any x402 v2 client pays and retries automatically. A request with no parameters runs this example.
curl -i "https://rx.kit-rx.com/v1/rx/ndc?ndc=0003-0894-21"
Pay from an agent
AgentCash: fetch the URL. OpenDexter MCP: x402_fetch. Kit Rx MCP server: https://rx.kit-rx.com/mcp. Code:
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { wrapFetchWithPayment } from "@x402/fetch";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client();
registerExactEvmScheme(client, { signer: privateKeyToAccount(process.env.BUYER_KEY) });
const pay = wrapFetchWithPayment(fetch, client);
const res = await pay("https://rx.kit-rx.com/v1/rx/ndc?ndc=0003-0894-21");
console.log(await res.json());
Example response
{
"query": {
"ndc": "0003-0894-21"
},
"result": {
"ndc": {
"input": "0003-0894-21",
"input_format": "10-digit dashed (4-4-2)",
"ndc11": "00003089421",
"ndc11_dashed": "00003-0894-21",
"ndc10": "0003-0894-21",
"product_ndc": "0003-0894",
"segment_format": "4-4-2"
},
"rxnav": {
"status": "ACTIVE",
"active": "YES",
"rxcui": "1364447",
"concept_name": "apixaban 5 MG Oral Tablet [Eliquis]",
"concept_status": "ACTIVE",
"history": [
{
"rxcui": "1364447",
"original_rxcui": "1364447",
"start": "2013-02",
"end": "2026-11"
}
]
},
"product": {
"brand_name": "ELIQUIS",
"generic_name": "apixaban",
"labeler": "E.R. Squibb & Sons, L.L.C.",
"product_type": "HUMAN PRESCRIPTION DRUG",
"dosage_form": "TABLET, FILM COATED",
"route": [
"ORAL"
],
"active_ingredients": [
{
"name": "APIXABAN",
"strength": "5 mg/1"
}
],
"dea_schedule": null,
"marketing_category": "NDA",
"application_number": "NDA202155",
"marketing_status": "ACTIVE",
"marketing_start_date": "2012-12-28",
"marketing_end_date": null,
"listing_expiration_date": "2027-12-31",
"pharm_class_epc": [
"Factor Xa Inhibitor [EPC]"
],
"spl_set_id": "e9481622-7cc6-418a-acb6-c5450daae9b0"
},
"package": {
"description": "60 TABLET, FILM COATED in 1 BOTTLE, PLASTIC (0003-0894-21)",
"level": "package",
"outer_package_ndc": null,
"marketing_start_date": "2012-12-28",
"marketing_end_date": null,
"sample": false,
"listed_in_fda_ndc_directory": true
},
"physical": {
"imprint": "894;5",
"color": "PINK",
"shape": "OVAL",
"size": "10 mm",
"score_segments": 1
},
"nadac": {
"ndc11": "00003089421",
"ndc11_dashed": "00003-0894-21",
"ndc_description": "ELIQUIS 5 MG TABLET",
"nadac_per_unit": 5.52144,
"pricing_unit": "EA",
"effective_date": "2026-10-21",
"as_of_date": "2026-11-11",
"classification_for_rate_setting": "B",
"classification": "brand rate",
"otc": false,
"corresponding_generic_nadac_per_unit": null,
"dataset_year": 2026
},
"recalls": {
"window": {
"from": "2023-11-13",
"to": "2026-11-13",
"basis": "report_date"
},
"count": 0,
"named_in_recall_text_count": 0,
"items": []
}
},
"sources": [
{
"name": "NLM RxNav getNDCStatus",
"url": "https://lhncbc.nlm.nih.gov/RxNav/APIs/api-RxNorm.getNDCStatus.html"
},
{
"name": "NLM RxNav getNDCProperties",
"url": "https://lhncbc.nlm.nih.gov/RxNav/APIs/api-RxNorm.getNDCProperties.html"
}
],
"notes": [
"NADAC (CMS National Average Drug Acquisition Cost) is an average of retail community …"
],
"generated_at": "2026-11-13T21:31:00.218Z"
}
Kit Rx Drug Data: FDA Labels, NDC, Shortages & NADAC: Drug data for AI agents: FDA drug labels, NDC lookup and conversion, drug shortages and recalls, CMS NADAC acquisition prices, paid per call over x402. Machine-readable: OpenAPI, llms.txt, /.well-known/x402, agent skills.