FDA drug shortages API
FDA drug shortage records from openFDA, most recently updated first, with optional drug-name and status filters (current, to be discontinued, resolved). Name filters match every word in generic name, brand or presentation, plus RxNorm ingredients for brand names. Entries give generic name, presentation, dosage form, status, availability, related info, reason, therapeutic category, company, ISO dates and package NDC, plus counts by status and an in_shortage flag.
$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://api.kit-rx.com/v1/rx/shortages
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
q | string | no | Drug name (generic or brand). Omit for the most recently updated shortages. e.g. lidocaine |
status | string: current, to_be_discontinued, resolved, all | no | Status filter. Default current without q, all with q. e.g. current |
limit | integer | no | Entries to return, 1 to 50 (default 25). e.g. 10 |
Example request
https://api.kit-rx.com/v1/rx/shortages?q=lidocaine&status=current&limit=5
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://api.kit-rx.com/v1/rx/shortages?q=lidocaine&status=current&limit=5"
Pay from an agent
AgentCash: fetch the URL. OpenDexter MCP: x402_fetch. Kit Rx MCP server: https://api.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://api.kit-rx.com/v1/rx/shortages?q=lidocaine&status=current&limit=5");
console.log(await res.json());
Example response
{
"query": {
"q": "lidocaine",
"status": "current",
"limit": 5
},
"result": {
"status_filter": "current",
"total_matching": 87,
"returned": 5,
"counts_by_status": {
"current": 87,
"to_be_discontinued": 0,
"resolved": 0
},
"in_shortage": true,
"match_basis": "all words of \"lidocaine\" …",
"entries": [
{
"generic_name": "Lidocaine Hydrochloride …",
"presentation": "Lidocaine Hydrochloride …",
"dosage_form": "Injection",
"status": "Current",
"availability": "Available",
"related_info": null,
"shortage_reason": null,
"therapeutic_category": [
"Cardiovascular"
],
"company_name": "B. Braun Medical Inc.",
"initial_posting_date": "2017-10-25",
"update_date": "2026-11-10",
"discontinued_date": null,
"package_ndc": "0264-9598-20"
}
]
},
"sources": [
{
"name": "openFDA Drug Shortages API",
"url": "https://open.fda.gov/apis/drug/drugshortages/"
}
],
"notes": [
"Matching is text based on …"
],
"attribution": [
"Data provided by the U.S. …"
],
"generated_at": "2026-11-13T21:50:08.100Z"
}
Kit Rx: Composed public-data reports for AI agents, paid per call in USDC over x402. Machine-readable: OpenAPI, llms.txt, /.well-known/x402, agent skills.