# Search FDA Orange Book

Search and read FDA Orange Book records through the Assyro API: approved drug products, therapeutic equivalence codes, patents and exclusivities.

Source: https://www.assyro.com/docs/sources/orange-book

`GET https://api.assyro.com/v1/sources/orange-book/search`

> **Note:** Preview: `api.assyro.com` is not serving production data yet. This page follows the API's published description and may change before launch.

Search and read FDA Orange Book records from your own code: approved drug products, therapeutic equivalence codes, patents and exclusivities. Published by U.S. Food and Drug Administration ([www.accessdata.fda.gov/scripts/cder/ob/index.cfm](https://www.accessdata.fda.gov/scripts/cder/ob/index.cfm)); answered from Assyro's copy, refreshed daily 12:00 UTC.

Licence: public domain (see the [terms](https://open.fda.gov/terms/)). Each record links to its page at the source.

Example: "Which Eliquis products have listed patents?"

## Search

`GET https://api.assyro.com/v1/sources/orange-book/search` with any of these query parameters. Repeat a parameter for a list (`?phase=PHASE2&phase=PHASE3`). An unknown parameter is refused by name.

### Search parameters

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

Each result is a record; read one in full with [Get a record](https://www.assyro.com/docs/sources/orange-book/records).

## What a record holds

- `id`, `title`, `url`: the source's identifier, its title and its page at the source, to verify it.
- `authority`, `publishedDate`, `version`: who published it, when, and the edition read.
- `snippet` and `fields`: the matching text and the source's own fields.
- `asOf`: the day Assyro's copy of the source was read.

## Example request

curl:

```bash
curl "https://api.assyro.com/v1/sources/orange-book/search?tradeName=Eliquis&hasPatents=true"
```

Python:

```python
import requests

response = requests.get(
    "https://api.assyro.com/v1/sources/orange-book/search",
    params={
        "tradeName": "Eliquis",
        "hasPatents": True
    },
)
response.raise_for_status()
print(response.json())
```

JavaScript:

```javascript
const response = await fetch("https://api.assyro.com/v1/sources/orange-book/search?tradeName=Eliquis&hasPatents=true");
const result = await response.json();
```
