FDA Drug Labels Monitor (openFDA SPL JSON) avatar

FDA Drug Labels Monitor (openFDA SPL JSON)

Pricing

from $0.80 / 1,000 fda record delivereds

Go to Apify Store
FDA Drug Labels Monitor (openFDA SPL JSON)

FDA Drug Labels Monitor (openFDA SPL JSON)

Return official US FDA data from openFDA as clean JSON in one Actor: drug labels (SPL), food enforcement recalls and drug shortages. Choose dataset=labels|recalls|shortages; filter by keyword, date, classification or status. Public CC0 data, keyless API, pay per event.

Pricing

from $0.80 / 1,000 fda record delivereds

Rating

0.0

(0)

Developer

Steadfetch

Steadfetch

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Features

Limited permissions

Share

openFDA Data Extractor

This Actor returns normalized US FDA data from the official openFDA APIs in clean JSON: drug labels, food recalls, and drug shortages. Choose which dataset to extract via the dataset parameter.

Tested daily. Last verified: 2026-10-30

What it does

  • Queries the keyless public endpoints at api.fda.gov with plain HTTP: no login, no CAPTCHA, no browser, no API key required.
  • Labels (dataset: "labels"): Drug label (SPL) records with label id, set id, version, effective date, brand and generic names, manufacturers, indications and warnings text.
  • Recalls (dataset: "recalls"): FDA food enforcement recalls with recall number, event id, report date, classification, product description, recalling firm, and location.
  • Shortages (dataset: "shortages"): FDA drug shortage reports with generic/brand name, company, status, availability, therapeutic category, and dates.
  • Paginates 1,000 records per request (labels/recalls up to 5,000; shortages up to 20,000).
  • Validates every item against the output schema before pushing; nothing unvalidated is delivered.
  • Retries 429 rate limits with exponential backoff; stops gracefully if the limit persists.
  • Deduplicates for billing safety (by label version, recall number, or shortage record key).
  • The data is CC0 public domain and contains no personally identifiable information; only product-level fields are collected.

How to use

1. Extract drug labels

$apify call steadfetch/openfda-drug-labels-extractor --input='{"dataset":"labels","labels":{"search":"openfda.generic_name:\"SILICEA\""},"maxResults":10}'

2. Monitor Class I food recalls

$apify call steadfetch/openfda-drug-labels-extractor --input='{"dataset":"recalls","recalls":{"classification":"Class I","monitorMode":false},"maxResults":50}'

3. Extract current drug shortages

$apify call steadfetch/openfda-drug-labels-extractor --input='{"dataset":"shortages","shortages":{"status":["Current"],"monitorMode":false},"maxResults":50}'

Input

Required

FieldTypeDescription
datasetstring (enum)One of: labels, recalls, shortages.

Dataset-specific parameters

Labels (dataset: "labels")

Pass as the labels property:

FieldTypeDefaultDescription
searchstringn/aOpenFDA search syntax. Example: openfda.brand_name:"*aspirin*"
effective_sincedate (YYYY-MM-DD)n/aKeep labels effective on or after this date.
Recalls (dataset: "recalls")

Pass as the recalls property:

FieldTypeDefaultDescription
sincedate (YYYY-MM-DD)30 days before todayInclusive lower bound for report date.
untildate (YYYY-MM-DD)Today (UTC)Inclusive upper bound for report date.
classificationstring (select)n/aOne of: Class I, Class II, Class III.
statestringn/aTwo-letter US state code.
keywordstringn/aCase-insensitive substring in product/reason/firm.
monitorModebooleantrueOnly deliver new recalls (cross-run dedupe).
Shortages (dataset: "shortages")

Pass as the shortages property:

FieldTypeDefaultDescription
statusarray of strings[] (all)Filter by: Current, Resolved, To Be Discontinued.
therapeuticCategoryarray of strings[] (all)Filter by therapeutic category (case-insensitive).
monitorModebooleanfalseOnly deliver new/changed records. Each checked record bills one monitor-check event.

Common

FieldTypeDefaultDescription
maxResultsinteger100Maximum records per dataset. Labels: 5,000 max. Recalls: 5,000 max. Shortages: 20,000 max.

Example output

Labels example

{
"dataset": "labels",
"url": "https://api.fda.gov/drug/label.json?search=id:%22ca7bbcc8-...%22",
"title": "SILICEA",
"scrapedAt": "2026-10-20T13:00:00.000Z",
"label_id": "ca7bbcc8-2354-375c-e053-2995a90a72a0",
"set_id": "0000025c-6dbf-4af7-a741-5cbacaed519a",
"version": "2",
"effective_time": "2021-09-02",
"brand_names": ["SILICEA"],
"generic_names": ["SILICEA"],
"manufacturers": ["Rxhomeo Private Limited d.b.a. Rxhomeo, Inc"],
"indications": "INDICATIONS Condition listed above or as directed by the physician",
"warnings": "WARNINGS This product is to be used for self-limiting conditions."
}

Recalls example

{
"dataset": "recalls",
"url": "https://api.fda.gov/food/enforcement.json?search=recall_number:%22H-1407-2026%22",
"recall_number": "H-1407-2026",
"report_date": "2026-10-07",
"classification": "Class I",
"product_description": "Todd's Seeds Salad Sprouting Mixture",
"recalling_firm": "TODD'S SEEDS LLC",
"scrapedAt": "2026-10-20T08:00:00.000Z"
}

Shortages example

{
"dataset": "shortages",
"url": "https://api.fda.gov/drug/shortages.json",
"genericName": "Lisdexamfetamine Dimesylate Capsule",
"brandName": "VYVANSE",
"companyName": "Takeda Pharmaceuticals USA Inc.",
"status": "Current",
"updateDate": "2026-10-15",
"scrapedAt": "2026-10-20T04:00:00.000Z"
}

Pricing

EventCharged whenPrice
apify-actor-starta run starts0.00005 USD per run
apify-default-dataset-itema validated record is saved3.00 USD per 1,000 records
monitor-checkshortages monitor mode only0.05 USD per 1,000 checks

Works on the Apify free plan - hundreds of records for the $5 monthly credit.

FAQ

Do I need an API key? No. openFDA is keyless; the data is public domain (CC0).

Does it return personal data? No. Only product-level fields are mapped; no patient, prescriber or contact data is collected.

What is monitor mode? Monitor mode remembers records already delivered (by filter stream for recalls, by record snapshot for shortages) and only pushes new or changed ones. This prevents duplicate charges across runs.

What happens when openFDA rate-limits? 429 responses are retried with exponential backoff; if the limit persists the Actor stops pagination gracefully and returns the records already collected.

Maintenance

This Actor is tested daily against the live openFDA APIs with minimal input (labels, openfda.generic_name:"SILICEA", 10 results). A green daily test confirms the extraction pipeline -- query, pagination, and schema validation -- is working. Any break is triaged by the regulatory vertical owner and fixed before the next scheduled run.

Changelog

DateChange
2026-10-29Unified three actors (labels, recalls, shortages) into one Actor with dataset parameter (STE-557).