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

# Search FDA Purple Book

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

## Request

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

Search the FDA Purple Book: every licensed biological product (CDER and CBER) with its license type (351(a) reference or standalone, 351(k) biosimilar, 351(k) interchangeable), reference product, approval, interchangeability and first licensure dates, and reference product, first interchangeable and orphan exclusivity expiry dates. Use it for biosimilar and interchangeable landscape questions (which biosimilars reference Humira, which are interchangeable, when reference product exclusivity ends), licensure history, and whether a patent list was provided. Data comes from FDA's monthly Purple Book download, not the live site: each record's version is the edition (YYYY-MM). State that edition. The download carries no patent numbers; for those, send the user to the patent list page named in the read result. Cite each product by its BLA number (for example BLA 761118). Read a product to see its reference product or the biosimilars that reference it. 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 proprietary name, proper name, applicant or reference product, e.g. "adalimumab".
- `proprietaryName` string: Brand name, substring match, e.g. "Humira".
- `properName` string: Proper (nonproprietary) name, substring match, e.g. "adalimumab-afzb" or "adalimumab".
- `applicant` string: License holder, substring match.
- `blaNumber` string: BLA number, e.g. 125057 or BLA 761118.
- `licenseTypes` string[]: 351(a) (reference or standalone BLA), biosimilar (351(k)), interchangeable (351(k) interchangeable). Omit for all.
- `referenceProduct` string: Reference product brand or proper name, e.g. "Humira": returns the 351(k) products that reference it.
- `centers` string[]: CDER or CBER.
- `licensureStatuses` string[]: licensed, revoked, voluntarily revoked. Omit for all.
- `marketingStatuses` string[]: RX, OTC, DISC (discontinued). A BLA matches when any presentation has the status.
- `approvedFrom` string: Earliest original approval date, YYYY-MM-DD.
- `approvedTo` string: Latest original approval date, YYYY-MM-DD.
- `exclusivityExpiryFrom` string: Any exclusivity (reference product, first interchangeable, orphan) expiring on or after this date, YYYY-MM-DD.
- `exclusivityExpiryTo` string: Any exclusivity expiring on or before this date, YYYY-MM-DD.
- `hasPatentList` boolean: true: only BLAs for which a patent list was provided.
- `sort` 'relevance' | 'newest' | 'oldest': relevance (default: licensed 351(a) products first, then newest), newest or oldest approval first.
- `limit` integer: How many BLAs 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)
