⚖️ FDA Warning Letters Scraper avatar

⚖️ FDA Warning Letters Scraper

Pricing

from $10.00 / 1,000 results

Go to Apify Store
⚖️ FDA Warning Letters Scraper

⚖️ FDA Warning Letters Scraper

Extract public FDA warning letters to discover actionable legal and consulting leads. Build targeted watchlists for compliance subjects and track enforcement dates.

Pricing

from $10.00 / 1,000 results

Rating

0.0

(0)

Developer

太郎 山田

太郎 山田

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Share

FDA Warning Letters Digest | Summary-First Feed

Monitor public FDA warning letters with one summary-first digest row per configured feed. Import alerts and GovDelivery remain optional advanced sources but stay off by default in v1.

Store Quickstart

  • Leave feeds empty to use the default FDA Warning Letters feed.
  • Keep lookbackDays=30, delivery=dataset, and reuse the same snapshotKey on recurring runs.
  • Add watchTerms when you want action_needed only for matched companies, subjects, or offices.

Key Features

  • 🏛️ Government-sourced — Pulls directly from official agency feeds — no third-party aggregators
  • ⏱️ Timely digests — Daily/weekly rollups of new filings, rulings, or actions
  • 🔍 Keyword watchlists — Flag items matching your compliance/legal watch terms
  • 📊 Structured metadata — Agency, date, docket, document type, link — all dataset-ready
  • 📡 Webhook alerts — Push to legal/compliance teams the moment new items match watchlist

Use Cases

WhoWhy
DevelopersAutomate recurring data fetches without building custom scrapers
Data teamsPipe structured output into analytics warehouses
Ops teamsMonitor changes via webhook alerts
Product managersTrack competitor/market signals without engineering time

Input

FieldTypeDefaultDescription
feedsarrayOne entry per monitored feed or watchlist. Leave empty to use the default public warning_letters_latest feed. import_ale
watchTermsstringApplied to every feed in addition to any feed-level watchTerms. Matching new/changed items trigger action_needed.
lookbackDaysinteger30How far back to look for warning-letter posting dates, import-alert publish dates, or bulletin send dates.
maxItemsPerFeedinteger50Upper bound on normalized items per feed. Lower values keep recurring runs maintenance-light.
maxPagesPerFeedinteger5Only used for warning_letters feeds. Stop after this many public datatables requests even if the lookback window is broa
maxDetailFetchesPerFeedinteger25Cap on detail-page enrichment for import_alerts feeds.
deliverystring"dataset"dataset writes digest rows to the Apify dataset; webhook POSTs the digest payload to webhookUrl.
webhookUrlstringPOST target for the digest payload.

Input Example

{
"feeds": [
{
"id": "cder-warning-letters",
"name": "CDER Warning Letters",
"source": "warning_letters",
"issuingOffices": ["Center for Drug Evaluation and Research"],
"maxItems": 25
}
],
"watchTerms": "Acme, sterile, cGMP",
"lookbackDays": 30,
"delivery": "dataset",
"datasetMode": "all",
"snapshotKey": "fda-warning-letters-prod",
"dryRun": false
}

Output

FieldTypeDescription
metaobject
errorsarray
digestsarray
digests[].feedIdstring
digests[].feedNamestring
digests[].sourcestring
digests[].checkedAttimestamp
digests[].windowStarttimestamp
digests[].lookbackDaysnumber
digests[].isInitialboolean
digests[].statusstring
digests[].changedItemCountnumber
digests[].newItemCountnumber
digests[].updatedItemCountnumber
digests[].totalItemCountnumber
digests[].watchTermHitCountnumber
digests[].changedSinceLastRunboolean
digests[].actionNeededboolean
digests[].recommendedActionstring
digests[].signalTagsarray
digests[].changeTypeBreakdownobject
digests[].topIssuingOfficesarray
digests[].watchTermHitsarray
digests[].changedItemsarray
digests[].itemsarray
digests[].errornull

Output Example

{
"digests": [
{
"feedId": "cder-warning-letters",
"status": "action_needed",
"changedItemCount": 1,
"watchTermHitCount": 1,
"recommendedAction": "Review 1 changed warning letter item(s) matching watch terms (Acme Sterile)."
}
]
}

API Usage

Run this actor programmatically using the Apify API. Replace YOUR_API_TOKEN with your token from Apify Console → Settings → Integrations.

cURL

curl -X POST "https://api.apify.com/v2/acts/taroyamada~fda-warning-letter-digest/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "feeds": [ { "id": "cder-warning-letters", "name": "CDER Warning Letters", "source": "warning_letters", "issuingOffices": ["Center for Drug Evaluation and Research"], "maxItems": 25 } ], "watchTerms": "Acme, sterile, cGMP", "lookbackDays": 30, "delivery": "dataset", "datasetMode": "all", "snapshotKey": "fda-warning-letters-prod", "dryRun": false }'

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("taroyamada/fda-warning-letter-digest").call(run_input={
"feeds": [
{
"id": "cder-warning-letters",
"name": "CDER Warning Letters",
"source": "warning_letters",
"issuingOffices": ["Center for Drug Evaluation and Research"],
"maxItems": 25
}
],
"watchTerms": "Acme, sterile, cGMP",
"lookbackDays": 30,
"delivery": "dataset",
"datasetMode": "all",
"snapshotKey": "fda-warning-letters-prod",
"dryRun": false
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript / Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('taroyamada/fda-warning-letter-digest').call({
"feeds": [
{
"id": "cder-warning-letters",
"name": "CDER Warning Letters",
"source": "warning_letters",
"issuingOffices": ["Center for Drug Evaluation and Research"],
"maxItems": 25
}
],
"watchTerms": "Acme, sterile, cGMP",
"lookbackDays": 30,
"delivery": "dataset",
"datasetMode": "all",
"snapshotKey": "fda-warning-letters-prod",
"dryRun": false
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Tips & Limitations

  • Run daily for active watchlists; weekly for passive monitoring.
  • Webhook delivery works well for compliance team Slack channels — include docket URL for 1-click access.
  • Use watchKeywords generously — false positives are cheap to triage, false negatives miss filings.
  • Pair with regulatory-change-monitor for cross-agency coverage.
  • Archive Dataset rows weekly for long-term compliance evidence retention.

FAQ

How far back does history go?

This actor monitors forward-only — new items since first run. For historical data, use the agency's own search tool.

What timezones are used?

All timestamps are UTC. Use your downstream pipeline to convert to agency-local time if needed.

Does it translate non-English content?

No — original language is preserved. Use downstream translation services if needed.

Is the data official?

Yes — sourced directly from official government websites and feeds. Not a third-party aggregator.

Can I use this for legal research?

For alerting and monitoring, yes. For litigation research, cross-verify with primary sources (agency websites) — this actor is a monitoring tool, not a legal database.

Government & Regulatory cluster — explore related Apify tools:

Cost

Pay Per Event:

  • actor-start: $0.01 (flat fee per run)
  • dataset-item: $0.003 per output item

Example: 1,000 items = $0.01 + (1,000 × $0.003) = $3.01

No subscription required — you only pay for what you use.