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

NameTypeRequiredDescription
ndcstringyesPackage 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.