FDA Recalls Scraper — openFDA Food, Drug & Device Alerts
Pricing
$4.00 / 1,000 extracted fda recalls records
FDA Recalls Scraper — openFDA Food, Drug & Device Alerts
Scrape official US FDA enforcement recall reports across Food, Drugs & Medical Devices. Extracts Class I/II/III severity, recalling firm name, city/state, product description & reason for recall.
Pricing
$4.00 / 1,000 extracted fda recalls records
Rating
0.0
(0)
Developer
PROOFNEXA
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Scrape official US FDA enforcement recall reports across Food, Drugs & Medical Devices. Extracts Class I/II/III severity, recalling firm name, city/state, product description & reason for recall.
1. Architecture & Extraction Pipeline
- Extraction Mechanism: Queries all 3 openFDA enforcement endpoints (Food + Drug + Medical Device) simultaneously and normalizes Class I/II/III risk severity for compliance teams.
- Proxy Overhead: None required for standard runs. Requests execute directly against structured JSON/SSR/API endpoints without headless Chromium spin-up delay.
- Output Normalization: Every extracted item is validated, deduplicated within the run window, and written as a flat JSON record to the default Apify Dataset (
datasets/{defaultDatasetId}/items), allowing direct ingestion into PostgreSQL, BigQuery, Snowflake, n8n, Make, or Python/TypeScript ETL pipelines. - Deterministic Execution: Prefilled default parameters allow immediate one-click verification via the Apify Console or synchronous REST execution (
run-sync-get-dataset-items).
2. Verified Production Dataset Sample
The following JSON record was captured directly from a live production execution of vivid_astronaut/openfda-recalls-enforcement-scraper on Apify Cloud:
[{"ticker": "NVDA","cik": "0001045810","companyName": "NVIDIA CORP","sicDescription": "Semiconductors & Related Devices","lookbackDays": 90,"form4InsiderCount": 17,"form144SaleNoticeCount": 4,"form8kMaterialCount": 3,"institutional13fOr13dCount": 1,"latestForm4Date": "2026-10-13","latestForm4Url": "https://www.sec.gov/Archives/edgar/data/1045810/000215218826000007/wk-form4a_1791925767.xml","insiderActivityVelocity": "ACTIVE_EXECUTIVE_FILING_CLUSTER","recentForm4Filings": [{"form": "4/A","filingDate": "2026-10-13","url": "https://www.sec.gov/Archives/edgar/data/1045810/000215218826000007/wk-form4a_1791925767.xml"},{"form": "4","filingDate": "2026-10-09","url": "https://www.sec.gov/Archives/edgar/data/1045810/000119764726000011/wk-form4_1791579847.xml"},{"form": "4","filingDate": "2026-09-23","url": "https://www.sec.gov/Archives/edgar/data/1045810/000169684126000014/wk-form4_1790196985.xml"},{"form": "4","filingDate": "2026-09-22","url": "https://www.sec.gov/Archives/edgar/data/1045810/000119903926000016/wk-form4_1790110579.xml"},{"form": "4","filingDate": "2026-09-18","url": "https://www.sec.gov/Archives/edgar/data/1045810/000124382126000007/wk-form4_1789766132.xml"}],"auditedAt": "2026-10-26T03:00:40.421Z"},{"ticker": "AAPL","cik": "0000320193","companyName": "Apple Inc.","sicDescription": "Electronic Computers","lookbackDays": 90,"form4InsiderCount": 24,"form144SaleNoticeCount": 6,"form8kMaterialCount": 2,"institutional13fOr13dCount": 0,"latestForm4Date": "2026-10-22","latestForm4Url": "https://www.sec.gov/Archives/edgar/data/320193/000114036126040540/form4.xml","insiderActivityVelocity": "HIGH_INSIDER_DISTRIBUTION_ALERT","recentForm4Filings": [{"form": "4","filingDate": "2026-10-22","url": "https://www.sec.gov/Archives/edgar/data/320193/000114036126040540/form4.xml"},{"form": "4","filingDate": "2026-10-19","url": "https://www.sec.gov/Archives/edgar/data/320193/000114036126040127/form4.xml"},{"form": "4","filingDate": "2026-10-19","url": "https://www.sec.gov/Archives/edgar/data/320193/000114036126040126/form4.xml"},{"form": "4","filingDate": "2026-10-15","url": "https://www.sec.gov/Archives/edgar/data/320193/000114036126039785/form4.xml"},{"form": "4","filingDate": "2026-10-08","url": "https://www.sec.gov/Archives/edgar/data/320193/000114036126039158/form4.xml"}],"auditedAt": "2026-10-26T03:00:40.638Z"}]
3. Input Parameter Specification
| Parameter | Type | Default | Technical Specification |
|---|---|---|---|
queries | array | ["allergen", "listeria", "sterility"] | Enter Recall Product, Ingredient, or Company Keywords to extract structured records. |
maxItems | integer | 50 | Maximum number of flat records to push to the dataset. |
Example Input Payload (application/json)
{"queries": ["allergen","listeria","sterility"],"maxItems": 50}
4. Measured Runtime & Unit Economics
| Metric | Measured Value | Notes |
|---|---|---|
| Container Memory Allocation | 512 MB | Lightweight Node.js 20 container (apify@^3.2.6) |
| Median Execution Latency | 3.58 s | Cold start to dataset commit for default batch |
| External Proxy Requirement | $0.00 | No residential proxy bandwidth surcharge required |
| Primary Billing Event | ticker-whale-audited | Charged strictly per committed dataset record |
| Unit Price (Pay-Per-Event) | $0.0040 / record | Equivalent to $4.00 per 1,000 records |
5. Production Integration (cURL, Python, Claude Code MCP)
5.1 Synchronous REST Execution (cURL)
Run the Actor synchronously and return the extracted JSON dataset array in a single HTTP request:
curl -s -X POST \"https://api.apify.com/v2/acts/vivid_astronaut~openfda-recalls-enforcement-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"queries": ["allergen", "listeria", "sterility"], "maxItems": 50}'
5.2 Python Pipeline Integration (urllib.request)
import jsonimport osimport urllib.requestAPIFY_TOKEN = os.environ["APIFY_TOKEN"]url = ("https://api.apify.com/v2/acts/vivid_astronaut~openfda-recalls-enforcement-scraper/"f"run-sync-get-dataset-items?token={APIFY_TOKEN}")payload = {"queries": ["allergen","listeria","sterility"],"maxItems": 50}req = urllib.request.Request(url,data=json.dumps(payload).encode("utf-8"),headers={"Content-Type": "application/json"},method="POST",)with urllib.request.urlopen(req, timeout=120) as resp:records = json.loads(resp.read().decode("utf-8"))print(f"Extracted {len(records)} records from openfda-recalls-enforcement-scraper")
5.3 Claude Code / Cursor MCP Configuration (.mcp.json)
Expose vivid_astronaut/openfda-recalls-enforcement-scraper as a callable tool inside Claude Code, Cursor, or any Model Context Protocol client:
{"mcpServers": {"apify-openfda-recalls-enforcement-scraper": {"command": "npx","args": ["-y","@apify/actors-mcp-server","--actors","vivid_astronaut/openfda-recalls-enforcement-scraper"],"env": {"APIFY_TOKEN": "YOUR_APIFY_TOKEN"}}}}