---
title: "Search FDA Orange Book"
method: GET
path: "/v1/sources/orange-book/search"
tags: ["FDA Orange Book"]
---

# Search FDA Orange Book

`GET /v1/sources/orange-book/search`

## Request

- Base URL: `https://api.assyro.com`
- URL: `https://api.assyro.com/v1/sources/orange-book/search`
- Auth: none declared

Search the FDA Orange Book (Approved Drug Products with Therapeutic Equivalence Evaluations): every NDA and ANDA drug product with its therapeutic equivalence (TE) code, Reference Listed Drug (RLD) and Reference Standard (RS) status, marketing status, listed patents and exclusivities. Use it for generic entry questions (which ANDAs reference an RLD, which are AB-rated), the patent and exclusivity landscape of a drug (patents expiring in a window, NCE/ODE/PED exclusivity end dates), and therapeutic equivalence. A TE code starting with A means FDA rates the product therapeutically equivalent; B means it does not. Data comes from FDA's monthly Orange Book data files, not the daily web site: each record's version is the edition (YYYY-MM). State that edition, and send the user to the record url for anything time-critical. Cite each product by its application and product number (for example NDA 215866 product 001, id N215866-001). Read the product before relying on patent use codes or exclusivity details. Give at least one filter; a search with sort newest and no filter lists the latest approvals.

## Query parameters

- `query` string: Words that must all appear in the ingredient, trade name or applicant, e.g. "budesonide foam".
- `ingredient` string: Active ingredient, substring match, e.g. "tirzepatide".
- `tradeName` string: Trade (brand) name, substring match, e.g. "Mounjaro".
- `applicant` string: Applicant (holder) name, substring match.
- `applicationNumber` string: NDA or ANDA number, e.g. N215866, NDA 215866, A215328, or N215866-001 for one product.
- `applicationType` 'NDA' | 'ANDA': NDA (brand, 505(b)) or ANDA (generic).
- `teCodes` string[]: TE codes. A two-letter code matches its numbered variants (AB matches AB1, AB2).
- `rld` boolean: true for Reference Listed Drugs only.
- `rs` boolean: true for Reference Standards only.
- `dosageForm` string: Dosage form, substring match, e.g. "TABLET, EXTENDED RELEASE".
- `route` string: Route, substring match, e.g. "ORAL", "SUBCUTANEOUS".
- `marketingStatuses` string[]: RX (prescription), OTC, DISCN (discontinued). Omit for all.
- `hasPatents` boolean: true: only products with listed patents; false: only products without.
- `patentExpiryFrom` string: Products with a listed patent expiring on or after this date, YYYY-MM-DD.
- `patentExpiryTo` string: Products with a listed patent expiring on or before this date, YYYY-MM-DD.
- `hasExclusivity` boolean: true: only products with listed exclusivities; false: only products without.
- `exclusivityCodes` string[]: Exclusivity codes: NCE, ODE, PED, NP, NPP, NS, I, D, M, GAIN, CGT, PC. A base code matches its numbered forms (ODE matches ODE-123).
- `exclusivityExpiryFrom` string: Exclusivity expiring on or after this date, YYYY-MM-DD.
- `exclusivityExpiryTo` string: Exclusivity expiring on or before this date, YYYY-MM-DD.
- `approvedFrom` string: Earliest approval date, YYYY-MM-DD.
- `approvedTo` string: Latest approval date, YYYY-MM-DD.
- `sort` 'relevance' | 'newest' | 'patentExpiry': relevance (default: RLDs and reference standards first, marketed before discontinued), newest approval first, or patentExpiry (earliest patent expiry in the window first).
- `limit` integer: How many products to return (default 8). total reports every match.
- `offset` integer: Skip this many results (for paging), default 0.

## Response `200`

Matching records.

- SearchResponse
  - `version` unknown, required
  - `source` SourceRef, required
    - `id` string, required
    - `label` string, required
    - `authority` string, required
  - `total` integer, nullable, required: Total matches the source reports, when it says.
  - `records` Record[], required
    - `id` string, required: The source's own identifier for the record.
    - `title` string, required
    - `url` string, required: The record's page at the source, to verify it.
    - `authority` string, required: Who published the record.
    - `snippet` string, nullable, required: The part of the record that matched; null where the licence allows only a link.
    - `publishedDate` string, nullable, required
    - `version` string, nullable, required: The edition or revision read.
    - `fields` object, nullable, required: The source's own fields; null where the licence allows only a link.
    - `asOf` string, nullable, required: The day Assyro's copy of the source was read (YYYY-MM-DD).
    - `attribution` string: The attribution the source's licence requires, on sources that require one.
  - `note` string
  - `summary` string[]

## Other responses

- `400`: The request is not valid: an unknown parameter or an argument the source refuses.
- `404`: No such source or record.
- `429`: Rate limited; retry after the Retry-After header.
- `503`: The source cannot answer from Assyro's copy right now.

---

[API](https://skmtc.dev/assyro/apis/assyro-public-data-api.md) - [All operations](https://skmtc.dev/assyro/apis/assyro-public-data-api/llms.txt) - [OpenAPI document](https://skmtc.dev/assyro/apis/assyro-public-data-api/revisions/c861290c9f47?raw)
