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

NameTypeRequiredDescription
qstringnoDrug name (generic or brand). Omit for the most recently updated shortages. e.g. lidocaine
statusstring: current, to_be_discontinued, resolved, allnoStatus filter. Default current without q, all with q. e.g. current
limitintegernoEntries 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.