Drug acquisition cost (CMS NADAC) API
Latest CMS NADAC (National Average Drug Acquisition Cost) per-unit prices for a drug name, brand name or NDC, from data.medicaid.gov (monthly pharmacy invoice survey, weekly files). Groups by NADAC description, pricing unit (EA, ML, GM), generic or brand rate class and OTC flag, each with min, median and max unit cost across NDCs, effective date, NDC count, sample NDCs, and a 30-unit acquisition cost for per-dose EA items. Single-source generics map to RxNorm brand names.
$0.01 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/price
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
q | string | yes | Drug name, brand name or NDC, optionally with strength (e.g. metformin, Lipitor 20 mg, 00003-0894-21) e.g. atorvastatin |
strength | string | no | Strength filter text matched against NADAC descriptions, e.g. 20 MG, 500 MG/5 ML, 100 UNIT/ML |
Example request
https://rx.kit-rx.com/v1/rx/price?q=atorvastatin
Without payment the server answers 402 Payment Required with the price (10000 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/price?q=atorvastatin"
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/price?q=atorvastatin");
console.log(await res.json());
Example response
{
"query": {
"q": "atorvastatin",
"strength": null
},
"result": {
"dataset": {
"id": "fbb83258-11c7-47f5-8b18-5f8e79f7e704",
"year": 2026
},
"latest_as_of_date": "2026-11-11",
"match": {
"mode": "name",
"description_prefix": "ATORVASTATIN",
"required_terms": [],
"optional_terms_applied": [],
"strength": null
},
"group_count": 4,
"groups": [
{
"ndc_description": "ATORVASTATIN 10 MG TABLET",
"nadac_per_unit": {
"min": 0.02301,
"median": 0.02301,
"max": 0.02301
},
"pricing_unit": "EA",
"classification_for_rate_setting": "G",
"classification": "generic rate",
"otc": false,
"effective_date": "2026-10-21",
"as_of_date": "2026-11-11",
"in_latest_file": true,
"ndc_count": 70,
"sample_ndcs": [
"00093505610",
"00093505698"
],
"est_cost_30_units": {
"min": 0.69,
"median": 0.69,
"max": 0.69,
"basis": "pharmacy acquisition cost for 30 units (NADAC per unit x 30), not a retail or patient price and not a days-supply estimate"
}
},
{
"ndc_description": "ATORVASTATIN 20 MG TABLET",
"nadac_per_unit": {
"min": 0.02858,
"median": 0.02858,
"max": 0.02858
},
"pricing_unit": "EA",
"classification_for_rate_setting": "G",
"classification": "generic rate",
"otc": false,
"effective_date": "2026-10-21",
"as_of_date": "2026-11-11",
"in_latest_file": true,
"ndc_count": 69,
"sample_ndcs": [
"00093505910",
"00093505998"
],
"est_cost_30_units": {
"min": 0.86,
"median": 0.86,
"max": 0.86,
"basis": "pharmacy acquisition cost for 30 units (NADAC per unit x 30), not a retail or patient price and not a days-supply estimate"
}
},
{
"ndc_description": "ATORVASTATIN 40 MG TABLET",
"nadac_per_unit": {
"min": 0.03688,
"median": 0.03688,
"max": 0.03688
},
"pricing_unit": "EA",
"classification_for_rate_setting": "G",
"classification": "generic rate",
"otc": false,
"effective_date": "2026-10-21",
"as_of_date": "2026-11-11",
"in_latest_file": true,
"ndc_count": 69,
"sample_ndcs": [
"00093505810",
"00093505898"
],
"est_cost_30_units": {
"min": 1.11,
"median": 1.11,
"max": 1.11,
"basis": "pharmacy acquisition cost for 30 units (NADAC per unit x 30), not a retail or patient price and not a days-supply estimate"
}
},
{
"ndc_description": "ATORVASTATIN 80 MG TABLET",
"nadac_per_unit": {
"min": 0.06804,
"median": 0.06804,
"max": 0.06804
},
"pricing_unit": "EA",
"classification_for_rate_setting": "G",
"classification": "generic rate",
"otc": false,
"effective_date": "2026-10-21",
"as_of_date": "2026-11-11",
"in_latest_file": true,
"ndc_count": 67,
"sample_ndcs": [
"00093505705",
"00093505798"
],
"est_cost_30_units": {
"min": 2.04,
"median": 2.04,
"max": 2.04,
"basis": "pharmacy acquisition cost for 30 units (NADAC per unit x 30), not a retail or patient price and not a days-supply estimate"
}
}
]
},
"sources": [
{
"name": "CMS NADAC 2026 (data.medicaid.gov)",
"url": "https://data.medicaid.gov/dataset/fbb83258-11c7-47f5-8b18-5f8e79f7e704"
}
],
"notes": [
"NADAC (CMS National Average Drug Acquisition Cost) is an average of retail community pharmacy invoice costs from a monthly CMS survey, published in weekly files. It is an acquisition cost, not a retail, cash, insurance or 340B price."
],
"attribution": [
"Source: CMS National Average Drug Acquisition Cost (NADAC), data.medicaid.gov, U.S. public domain. Not endorsed by CMS."
],
"generated_at": "2026-11-15T00:16:27.622Z"
}
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.