> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rhizomeai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# FDA Orange Book

> Search filters and result fields of fda_orange_book.

* **Dataset id:** `fda_orange_book`
* **Jurisdiction:** US · FDA
* **Date field:** `approval_date`. The search's top-level `date_from` and `date_to` filter on it.
* **Access:** any API key.

## Filters

Send these under `filters.fda_orange_book` in a [search](/api-reference/v3/search) request. A filter not listed here, or a value of the wrong type, is a 400. The top-level `date_from` and `date_to` set `approval_date_from` and `approval_date_to` below, so give a date in one place only.

<ParamField body="ingredient" type="string">
  BM25 keyword match on the active-ingredient string (uppercase, FDA-canonical). For single-ingredient drugs this is one word (e.g. "SEMAGLUTIDE"); for combos it is semicolon-separated ("AMOXICILLIN; CLAVULANATE POTASSIUM"). This is NOT the marketed brand name — use trade\_name for that.
</ParamField>

<ParamField body="trade_name" type="string">
  BM25 keyword match on the brand name (e.g. "OZEMPIC"). NULL on products marketed under the ingredient name.
</ParamField>

<ParamField body="applicant" type="string">
  BM25 keyword match on the FDA-canonical applicant/holder name (e.g. "NOVO NORDISK"). Prefer the company root over the legal suffix ("INC", "LP", "PHARMACEUTICALS LTD") since BM25 will tokenize either way.
</ParamField>

<ParamField body="appl_no" type="string">
  Exact 6-digit FDA application number (e.g. "209637"). Zero-pad shorter numbers.
</ParamField>

<ParamField body="product_no" type="string">
  Exact 3-digit FDA product number within an application (e.g. "003"). Only meaningful when combined with appl\_no — the same product\_no recurs across thousands of applications, so this filter alone matches too broadly.
</ParamField>

<ParamField body="appl_type" type="string">
  Exact application type: "N" = NDA (brand/new drug); "A" = ANDA (generic).

  Values: `N`, `A`.
</ParamField>

<ParamField body="therapeutic_equivalence_code" type="string">
  BM25 keyword match on the TE Code. Common values: "AB", "AB1", "AB2", "AN", "AO", "AP", "AT" (A-prefix = therapeutically equivalent / substitutable), "BC", "BD", "BE", "BN", "BP", "BR", "BS", "BT", "BX" (B-prefix = NOT considered equivalent). NULL when unrated.
</ParamField>

<ParamField body="marketing_status" type="string">
  Exact marketing status: "RX" (prescription), "OTC" (over-the-counter), "DISCN" (discontinued).

  Values: `RX`, `OTC`, `DISCN`.
</ParamField>

<ParamField body="license_type" type="string">
  Exact license category: "patent" = an Orange Book patent listing; "exclusivity" = an exclusivity grant; "none" = a product with no patent AND no exclusivity in the current Orange Book.

  Values: `patent`, `exclusivity`, `none`.
</ParamField>

<ParamField body="patent_number" type="string">
  Exact US patent number, digits only (e.g. "8129343"). NULL when license\_type != "patent".
</ParamField>

<ParamField body="patent_use_code" type="string">
  Exact FDA Patent Use Code (e.g. "U-3355") identifying a specific method-of-use claim. The same patent can be listed multiple times under different use codes. NULL when license\_type != "patent".
</ParamField>

<ParamField body="exclusivity_code" type="string">
  Exact FDA Exclusivity Code. Examples: "NP" (new product), "NCE" (new chemical entity), "I-961" (new indication), "PED" (pediatric), "GAIN" (antibacterial), "D-193" (orphan or other designation). NULL when license\_type != "exclusivity".
</ParamField>

<ParamField body="approval_date_from" type="string (date)">
  Inclusive lower bound on the product's FDA approval date (YYYY-MM-DD). Rows with NULL approval\_date (pre-1982 approvals) are excluded by this filter.
</ParamField>

<ParamField body="approval_date_to" type="string (date)">
  Inclusive upper bound on the product's FDA approval date (YYYY-MM-DD).
</ParamField>

<ParamField body="license_expire_from" type="string (date)">
  Inclusive lower bound on the license expiry (license\_expire\_date = patent\_expire OR exclusivity\_expire; NULL for license\_type="none").
</ParamField>

<ParamField body="license_expire_to" type="string (date)">
  Inclusive upper bound on the license expiry. Use with license\_expire\_from to find IP expiring in a window (e.g. patents expiring 2027-2029).
</ParamField>

## Fields

Each result from this dataset has these in `fields`:

`appl_no`, `appl_type`, `applicant_full`, `approval_date`, `dosage_form`, `drug_product_flag`, `drug_substance_flag`, `exclusivity_code`, `exclusivity_expire_date`, `id`, `ingredient`, `is_reference_listed_drug`, `is_reference_standard`, `license_expire_date`, `license_type`, `marketing_status`, `patent_delist_requested`, `patent_expire_date`, `patent_no`, `patent_submission_date`, `patent_use_code`, `product_no`, `route`, `strength`, `therapeutic_equivalence_code`, `trade_name`, `url`


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.