FDA Drug Shortage Monitor (new / status change / resolved)
Pricing
from $20.00 / 1,000 shortage changes
FDA Drug Shortage Monitor (new / status change / resolved)
Track FDA drug shortage changes (new, status change, resolved) via openFDA with snapshot delta so reverification noise is not charged.
Pricing
from $20.00 / 1,000 shortage changes
Rating
0.0
(0)
Developer
Chase Mariano
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
FDA Drug Shortage Monitor
One event per shortage change in the FDA Drug Shortages database. A change is a newly posted shortage or discontinuation, a status change (e.g. Current → Resolved), an update to availability, the reason or dates, or a listing that drops out of the feed. You choose what to watch: drug names, therapeutic categories or NDCs. Built for health-system pharmacy buyers, GPOs, distributors and pharmacy-software teams who need "tell me when something I stock changes", not a nightly re-dump of 1,600 rows.
Pricing: pay per event. shortage-change costs $0.02 per change
reported. Runs where nothing changed cost you nothing.
How it works
- First run = baseline. The first run of a watch stores a snapshot
and doesn't charge for it. The only exception is listings FDA first
posted in the last
first_run_new_daysdays (default 7), which are reported asnewso run one isn't empty. - Every later run reports only what changed since the last one. The Actor compares substantive fields: status, availability, shortage reason, notes, discontinued date, resolved note and status-change date. FDA's routine reverifications are not changes. They bump the "updated" date without changing anything, and you are never charged for them.
- Nothing is lost or charged twice. A change cut off by your max charge or the per-run limit stays pending and is reported next run, exactly once.
- Feed-gap guard. If 25 or more watched records (and over 20% of them) vanish at once, the run stops without charging and keeps the snapshot. That pattern is almost always an upstream gap, not news.
- Changing the status or change-type filters doesn't reset your
baseline. Changing keywords, categories or NDCs starts a new watch,
and so does a new
state_key.
Input
{"keywords": ["cisplatin", "carboplatin"], "therapeutic_categories": ["Oncology"],"change_types": ["new", "status_changed", "removed"]}
Example output (one dataset item per change)
{"change_type": "new", "changed_fields": [], "previous_status": null,"previous_values": {}, "generic_name": "Insulin Lispro Injection","brand_name": "INSULIN LISPRO JUNIOR KWIKPEN", "company_name": "Eli Lilly and Co.","package_ndc": "0002-7752-05","presentation": "Insulin Lispro Junior KwikPen, Injection, 100 [iU]/1 mL (NDC 0002-7752-05)","dosage_form": "Injection", "therapeutic_category": "Endocrinology/Metabolism","status": "To Be Discontinued", "availability": null, "shortage_reason": null,"related_info": "A business decision was made to discontinue manufacture of the drug. Distribution projected to end June 2027. …","discontinued_date": "2026-09-01", "resolved_note": null, "change_date": null,"initial_posting_date": "2026-09-01", "update_date": "2026-09-01","update_type": "New", "related_info_link": null,"record_key": "0002-7752-05|discontinuation", "feed_last_updated": "2026-09-23"}
A status change looks like this (trimmed):
{"change_type": "status_changed", "changed_fields": ["status", "resolved_note"],"previous_status": "Current","previous_values": {"status": "Current", "resolved_note": null},"generic_name": "Rifapentine Tablet, Film Coated", "status": "Resolved","resolved_note": "Available", "change_date": "2026-08-06"}
Output fields
One dataset item per change. Every field is always present (empty or
null when the source has no value). Defined in
.actor/dataset_schema.json. Dates are YYYY-MM-DD.
| Field | Type | Description |
|---|---|---|
change_type | string | new, status_changed, updated or removed |
changed_fields | array | Tracked fields that changed (status_changed / updated only) |
previous_status | string | Status before this change (null for new) |
previous_values | object | Old value of each changed field |
generic_name | string | Generic name and dosage form as FDA lists it |
brand_name | string | Brand name(s) from openFDA label data, '; '-joined |
company_name | string | Company reporting the shortage/discontinuation |
package_ndc | string | Package NDC |
presentation | string | Presentation (product, strength, package; max 500 chars) |
dosage_form | string | Dosage form |
therapeutic_category | string | FDA therapeutic categories, '; '-joined |
status | string | Current, To Be Discontinued or Resolved (last known, for removed) |
availability | string | Availability as FDA lists it (e.g. Available, Limited Availability, Unavailable) |
shortage_reason | string | Reason for the shortage as reported |
related_info | string | Company/FDA notes (max 1000 chars) |
discontinued_date | string | Discontinuation date, YYYY-MM-DD |
resolved_note | string | Resolution note (resolved entries) |
change_date | string | FDA status change date, YYYY-MM-DD |
initial_posting_date | string | First posted by FDA, YYYY-MM-DD |
update_date | string | Last FDA update or reverification, YYYY-MM-DD |
update_type | string | FDA's last update type: New, Revised or Reverified |
related_info_link | string | Link to the FDA Drug Shortages page for the ingredient |
record_key | string | Stable id: package NDC | list (shortage or discontinuation) |
feed_last_updated | string | openFDA dataset last_updated date at run time |
removed means FDA took the listing off the feed. Most resolved
shortages leave this way rather than switching to "Resolved", so treat
removed as "no longer listed", not as a confirmed resolution.
Runs stop cleanly at your max-charge limit: nothing is pushed past what you agreed to pay for.
The watch snapshot lives in a named key-value store in your account,
fda-drug-shortage-monitor-state.
Source: the openFDA drug shortages API (public, CC0, updated daily). It mirrors FDA's Drug Shortages database. On 2026-09-23 the ingredient lists matched FDA's own page exactly. Not affiliated with or endorsed by FDA. openFDA says: "Do not rely on openFDA to make decisions regarding medical care." Run it on a daily schedule for a standing watch. Pair it with FDA Recall Monitor for recalls in the same categories.