FDA Supplier & Competitor Risk Monitor avatar

FDA Supplier & Competitor Risk Monitor

Pricing

Pay per usage

Go to Apify Store
FDA Supplier & Competitor Risk Monitor

FDA Supplier & Competitor Risk Monitor

Monitors public FDA/openFDA enforcement records for watched suppliers, competitors, brands, products and risk terms.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Влад

Влад

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Monitor public FDA/openFDA enforcement records for suppliers, competitors, brands, products and risk terms that matter to your compliance or market intelligence workflow.

This Actor is designed for regulatory consultants, food safety teams, medical device teams, pharma operations, supplier-risk analysts and competitive intelligence teams that need a compact feed of relevant FDA enforcement events instead of a broad raw export.

What It Does

  • Fetches public enforcement records from official openFDA food, drug and device enforcement APIs.
  • Matches records against a watch list of suppliers, competitors, brands, products or risk terms.
  • Scores each matched event using FDA classification, status, distribution pattern and serious-risk keywords.
  • Emits only matched, data-minimized regulatory event rows.
  • Supports scheduled monitoring with emitOnlyNew.
  • Supports pay-per-event monetization with matched_regulatory_event.

Sources

The Actor uses official public openFDA endpoints:

  • https://api.fda.gov/food/enforcement.json
  • https://api.fda.gov/drug/enforcement.json
  • https://api.fda.gov/device/enforcement.json

No login, proxy, browser automation, CAPTCHA bypass or private data source is used.

Example Input

{
"watchList": [
"salmonella",
{
"name": "Example Supplier",
"aliases": ["example brand"]
}
],
"sourceTypes": ["food", "drug", "device"],
"classifications": ["Class I", "Class II"],
"statuses": ["Ongoing"],
"riskKeywords": ["sterility", "undeclared allergen"],
"lookbackDays": 365,
"maxRecordsPerSource": 100,
"maxResults": 50,
"minRiskScore": 20,
"emitOnlyNew": false
}

Output Fields

Each dataset row includes:

  • eventId
  • eventType
  • sourceType
  • riskScore
  • riskLevel
  • matchedWatchTerms
  • matchedFields
  • riskSignals
  • classification
  • status
  • recallNumber
  • reportDate
  • recallInitiationDate
  • recallingFirm
  • productDescription
  • reasonForRecall
  • distributionPattern
  • country
  • state
  • sourceUrl
  • summary
  • observedAt

The output avoids personal data and keeps the fields focused on business, product, recall and source attribution.

Risk Scoring

The score is deterministic and explainable:

  • Class I, ongoing events score higher.
  • Nationwide distribution increases the score.
  • Serious terms such as death, serious injury, sterility, salmonella, listeria, e. coli, undeclared allergen, contamination and foreign material increase the score.
  • Matches in recalling_firm, product fields or openFDA manufacturer/brand fields increase confidence.

Risk levels:

  • critical: 80-100
  • high: 60-79
  • medium: 35-59
  • low: 1-34

Local Development

npm install
npm run check
'{"watchList":["unapproved colors"],"sourceTypes":["food"],"lookbackDays":3650,"maxRecordsPerSource":1,"maxResults":1,"minRiskScore":1,"emitOnlyNew":false}' | C:\Users\User\.apify\bin\apify.exe run --purge --input-file -

The source adapter first tries the openFDA query API with native Node fetch. In this Windows development environment, openFDA can reject Node clients with HTTP 403 even when the same public URL works through .NET/PowerShell. For that local case, the Actor falls back to PowerShell's Invoke-RestMethod with the URL passed through an environment variable. On non-Windows runtimes, it falls back to a Playwright browser-backed fetch for the same official API query. ZIP downloads from download.open.fda.gov are retained as an opt-in emergency fallback through ALLOW_OPENFDA_DOWNLOAD_FALLBACK=1.

Monetization Hypothesis

Suggested Apify Store model:

  • Pricing model: pay per event
  • Event name: matched_regulatory_event
  • Initial test price: $0.10 per matched regulatory event

The final price should be set only after cloud cost measurement and Store comparison. The Actor already calls:

await Actor.charge({ eventName: 'matched_regulatory_event' });

before writing monetized rows when monetization is enabled.

Compliance Notes

This Actor is for B2B compliance monitoring, supplier risk review, market intelligence and internal workflow triage.

It is not medical advice, legal advice, a patient-facing recall alert system or a substitute for official FDA communications. Users should verify important events against the FDA/openFDA source records and their own regulatory process.

This Actor is not affiliated with or endorsed by the FDA.