FDA Orange Book Drug Patents & Exclusivity API avatar

FDA Orange Book Drug Patents & Exclusivity API

Pricing

from $1.00 / 1,000 delivered rows

Go to Apify Store
FDA Orange Book Drug Patents & Exclusivity API

FDA Orange Book Drug Patents & Exclusivity API

Search FDA Orange Book drug products, patents and exclusivity. Normalized records with product context, source hashes and QA. Filter by drug, applicant, application and expiration; export JSON or CSV.

Pricing

from $1.00 / 1,000 delivered rows

Rating

0.0

(0)

Developer

Myworkingmemory

Myworkingmemory

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

Get analysis-ready FDA Orange Book drug-product, patent and exclusivity records. Search by drug name, ingredient, applicant, application number, patent number or exclusivity code; filter source-reported expiration dates; export the matching records as JSON or CSV.

Use the API to build an applicant’s listed drug-patent or exclusivity research table, screen the current FDA download for source-reported expirations in a date range, or refresh a saved drug or ingredient query. Matching product details are already linked to each patent or exclusivity record.

Patent and exclusivity results can include the corresponding drug-product details in the same row. Each result keeps source identifiers, raw dates, normalized dates, duplicate occurrence counts and source hashes. The run manifest includes acquisition evidence and measured source quality checks.

Independently produced by Myworkingmemory from public FDA files; not endorsed by FDA.

Pricing

Each run costs $0.01 to start plus $0.001 per delivered row ($1 per 1,000 rows). Platform execution is included in these event prices. For example, one run returning 100 rows costs $0.11; 1,000 rows cost $1.01. The startup fee applies after the Actor starts, including no-match queries and runs that later fail. Each pagination request starts another run. The current prices are also shown in the Apify pricing panel before you run it.

The default customer spending cap is $0.25. You can set a lower or higher cap, subject to the $0.011 minimum. A cap can reduce the number of delivered rows; inspect MANIFEST for the actual count and continuation offset. API usage is purchased through Apify separately from any one-time CSV snapshot package.

Quick examples

Patents with drug-product context:

{"table":"patents","drugName":"ACTHAR","limit":10}

Example output excerpt from the query retrieved October 30, 2026. A full patent-context row has 44 fields:

{
"application_number": "008372",
"product_number": "003",
"patent_number": "11752199",
"patent_expiration_date_iso": "2041-07-18",
"product_trade_name": "ACTHAR GEL (AUTOINJECTOR)",
"product_ingredient": "CORTICOTROPIN",
"source_release_id": "fda-ob-sha256-c2088c7a36db1930a152b63db23e7a995c471bf4b18c960b1d28190580984e4d",
"retrieved_at_utc": "2026-10-30T22:27:33.132769+00:00"
}

These are source-reported values from that dated example. Download free CSV samples and see the query guide before running your own query.

Exclusivity records for an ingredient:

{"table":"exclusivity","ingredient":"SITAGLIPTIN","limit":10}

Products for an application:

{"table":"products","applicationNumber":"008372","limit":100}

The default is up to 100 patent records with product context. A run queries one table. To obtain patent and exclusivity data, run each table separately; this avoids multiplying patent rows by exclusivity rows.

Inputs

FieldMeaning
tableproducts, patents or exclusivity; default patents.
includeProductContextDefault true. Appends product_ fields to patent/exclusivity records. Product records already contain their own context.
drugNameCase-insensitive substring of the FDA trade name.
ingredientCase-insensitive substring of active-ingredient text.
applicantCase-insensitive substring of either the full or abbreviated applicant name.
applicationNumberExact 1–6 digit JSON string, left-padded to six digits.
patentNumberExact source patent identifier, including any suffix; patents only.
exclusivityCodeExact FDA exclusivity code; exclusivity only.
expiresFrom, expiresToInclusive YYYY-MM-DD source expiration-date range; patents/exclusivity only.
limitRequested page size, 1–10,000; default 100. Apify spending limits can reduce delivery.
offsetSkip this many matching records; default 0.
expectedSourceReleaseIdOptional source hash ID from an earlier run. If the current source differs, the run fails before writing records.

Filters combine with AND. Empty text filters have no effect. Unknown fields, invalid dates, unsupported table/filter combinations and invalid bounds fail before source retrieval.

Output

  • Default dataset: the selected records. Export JSON or CSV through Apify's normal dataset API or Console.
  • MANIFEST: source ZIP/member hashes, retrieval timestamp, actual input, source quality counts, matched/returned record counts, pagination and delivery status.
  • QA: source row counts, exact duplicate accounting, date precision counts and product-link checks.
  • DATA_DICTIONARY: the fields for the selected table and context option.

Examples of retained fields include application_number, product_number, application_product_key, source_record_fingerprint, source_release_id, retrieved_at_utc and source_occurrence_count. Patent records add patent identifiers/dates/flags; exclusivity records add exclusivity codes/dates. Product context is prefixed with product_. Identifiers remain strings, including leading zeros and patent suffixes. Occurrence counts are JSON integers.

The source_release_id is a provider-created hash identifier, not an FDA-issued release number. Retrieval time, HTTP timestamps and ZIP timestamps do not establish an FDA coverage month. MANIFEST.pagination.returned_rows records what was actually saved, including any spending-limit truncation. A no-match query returns an empty dataset with zero matches in the manifest.

Pagination without mixing snapshots

Results are ordered by application/product key and source-record fingerprint. Take source_release_id from the first run's MANIFEST and supply it as expectedSourceReleaseId on later offset requests. Also keep the filters unchanged. If FDA updates the source between runs, the pin check fails visibly rather than mixing two releases. Restart from offset zero for the new release. This API does not retrieve earlier snapshots by hash.

The next_offset in MANIFEST advances by the number of records actually delivered. A user spending limit is per run; review that limit before starting another page. Start a new run for each page. This version does not resume a previous run: a nonempty default dataset is rejected before FDA retrieval to prevent duplicate or mixed-snapshot results.

Calling through the Apify API

Actor identifier: sKjpMW1IXVbhX7cMg. Set your Apify token in your own environment; do not place it in request bodies or shared URLs.

curl --request POST \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header "Content-Type: application/json" \
--data '{"table":"patents","drugName":"ACTHAR","limit":10}' \
"https://api.apify.com/v2/acts/sKjpMW1IXVbhX7cMg/run-sync-get-dataset-items?format=json&clean=true"

For an asynchronous workflow, POST the same JSON to /v2/acts/sKjpMW1IXVbhX7cMg/runs, wait for that run to succeed, then read /v2/datasets/DEFAULT_DATASET_ID/items?format=json or ?format=csv. Read /v2/key-value-stores/DEFAULT_KEY_VALUE_STORE_ID/records/MANIFEST for source and paging details. Apify supplies the storage IDs in the run response.

Use from an AI assistant

This Actor can be selected through Apify’s MCP server in a compatible AI client. Use the scoped server URL https://mcp.apify.com?tools=myworkingmemory/fda-orange-book-drug-patents-exclusivity-api and authenticate with your own Apify account using the client’s supported connection flow. A prompt such as “Find FDA Orange Book patent records for ACTHAR, maximum ten rows” should map to the same input shown above. Review the proposed input and spending limit before approving a run. Official Apify MCP setup.

Reuse a focused query

Save your input as an Apify Task or reusable API request and rerun it when you refresh your research. Every run retrieves the currently available FDA download and is charged separately. Keep the source-release pin and spending-limit instructions when paginating. Saving a query does not create a recurring delivery service.

Source and freshness

Every normal run retrieves the currently available official FDA downloadable ZIP, validates its schema and normalizes it. FDA describes its downloadable Orange Book files as monthly updates; this Actor does not claim a new release exists each month or run a background acquisition schedule. Source or schema failures fail the run. Old bundled data is not silently substituted for a failed live request.

This version provides one source snapshot per run. Expiration searches cover only records present in that download, not an exhaustive historical record set. Historical change feeds and recurring delivery services are outside its scope. Source-reported patent/exclusivity dates are preserved as data, rather than converted into an independent conclusion about enforceability or market-entry timing.

Sources: FDA Orange Book overview, FDA data-file definitions.

Developer verification

Python 3.12 and the official pinned Apify SDK are used. Core parsing/query code uses the Python standard library. No browser, paid proxy, AI model or separate supplier API key is needed.

python -m pip install -r requirements.txt
python -m unittest discover -s tests -v
python -m src.main --offline-source tests/fixtures/source --input examples/patents-input.json --output validation/local/patents

The offline command makes no network requests. Its manifest explicitly says preserved_fixture and retains the fixture's original retrieval date; it is not evidence of current FDA data or an Apify cloud run. See MAINTENANCE.md for source/schema changes, SDK updates and release checks.