# RxAtlas Drug Product Search API

> RxAtlas Drug Product Search API is a paid API for AI agents from api.rxatlas.dev, paid per call via x402 or MPP, $0.1/call, status unknown (last checked 2026-09-13).

Search and retrieve US drug product records by NDC, brand/generic name, ingredient, manufacturer, dosage form, route, DEA schedule, shortage status, or identifier across multiple FDA data sources.

## Facts

- Endpoint: GET https://api.rxatlas.dev/v1/drugs
- Price: $0.1/call
- Payment: x402, MPP
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/rxatlas-drug-product-search-api-6bcd56d5
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_IHV48qQPT0UxLdjRoumB-

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability rxatlas-drug-product-search-api-6bcd56d5
```

Example prompt: Search RxAtlas for all US drug products that contain metformin as an ingredient, show me up to 50 results from the openfda-ndc source, and include the total count.

## When to prefer this

Use this endpoint when you need structured, multi-source US drug product data searchable by pharmaceutical identifiers (NDC, RxCUI, SPL set ID), drug names, ingredients, manufacturer, DEA schedule, dosage form, route, or shortage status. Prefer this over raw FDA APIs when you need aggregated data across OpenFDA, DailyMed, NADAC, Orange Book, and RxNorm in a single interface with pagination support.

## Known failure modes

- Invalid or malformed NDC code returns empty results or 400 error
- Unsupported source enum value returns validation error
- Cursor from a different query context causes unexpected results
- Rate limiting or payment failure returns 402 or 429 error
- Query string too long (>160 chars) rejected by schema validation
- No matching records returns empty data array with has_more false

## How this service works

Search US drug products by NDC, brand, generic name, ingredient, manufacturer, dosage form, route, source, or identifier.

## Output

A paginated list of drug product records matching the query, each with a unique ID and provenance metadata from the underlying data source. The response includes a has_more flag, an optional next_cursor for keyset pagination, and an optional total count of matching records.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "properties": {
      "q": {
       "type": "string",
       "maxLength": 160
      },
      "ndc": {
       "type": "string",
       "maxLength": 32
      },
      "count": {
       "type": "boolean",
       "description": "Include the total matching-record count."
      },
      "limit": {
       "type": "integer",
       "default": 20,
       "maximum": 100,
       "minimum": 1
      },
      "route": {
       "type": "string",
       "maxLength": 80
      },
      "rxcui": {
       "type": "string",
       "pattern": "^[0-9]+$",
       "maxLength": 16
      },
      "cursor": {
       "type": "string",
       "description": "Opaque keyset cursor from a previous response."
      },
      "source": {
       "enum": [
        "openfda-ndc",
        "dailymed",
        "nadac",
        "openfda-enforcement",
        "orange-book",
        "rxnorm",
        "openfda-unii",
        "openfda-shortages"
       ],
       "type": "string"
      },
      "brand_name": {
       "type": "string",
       "maxLength": 160
      },
      "ingredient": {
       "type": "string",
       "maxLength": 160
      },
      "spl_set_id": {
       "type": "string",
       "format": "uuid",
       "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      },
      "dosage_form": {
       "type": "string",
       "maxLength": 120
      },
      "dea_schedule": {
       "enum": [
        "CI",
        "CII",
        "CIII",
        "CIV",
        "CV"
       ],
       "type": "string"
      },
      "generic_name": {
       "type": "string",
       "maxLength": 160
      },
      "shortage_status": {
       "enum": [
        "Current",
        "To Be Discontinued",
        "Resolved"
       ],
       "type": "string"
      },
      "manufacturer_name": {
       "type": "string",
       "maxLength": 160
      }
     },
     "additionalProperties": false
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "r
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/rxatlas-drug-product-search-api-6bcd56d5/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.rxatlas.dev](https://www.zero.xyz/host/api.rxatlas.dev/llms.txt)
