FDA Food & Supplement Adverse Event Search (CAERS)
Search the FDA's **CAERS database of 148,000+ adverse event reports** for foods, dietary supplements, and cosmetics. Find reports by product name, reaction/symptom, industry type, outcome severity, consumer demographics, or date range. Each result includes the full list of suspect and concomitant products, reported reactions, patient outcomes, and consumer demographics.
Maintenance Pulse
90/100Cost Estimate
How many results do you need?
Pricing
Pay Per Event model. You only pay for what you use.
| Event | Description | Price |
|---|---|---|
| result-returned | Charged per result returned. Includes data transformation and structured output. | $0.03 |
Example: 100 events = $3.00 · 1,000 events = $30.00
Documentation
Search the FDA's CAERS database of 148,000+ adverse event reports for foods, dietary supplements, and cosmetics. Find reports by product name, reaction/symptom, industry type, outcome severity, consumer demographics, or date range. Each result includes the full list of suspect and concomitant products, reported reactions, patient outcomes, and consumer demographics.
No API key required. Just enter a product like protein powder or a reaction like liver injury and get structured adverse event data in seconds.
Why Use FDA Food & Supplement Adverse Event Search?
The CAERS (Center for Food Safety and Applied Nutrition Adverse Event Reporting System) is the FDA's surveillance database for adverse events related to foods, dietary supplements, and cosmetics. Unlike drugs and medical devices, dietary supplements don't require FDA pre-approval — making CAERS the primary safety signal mechanism for a $60B+ industry. This actor handles query construction, pagination, product array flattening, deduplication of suspect vs. concomitant products, date formatting, and summary statistics — giving you clean, structured JSON ready for safety analysis.
Features
- Product name search — find reports by brand name (e.g., "protein powder", "energy drink", "hair dye", "prenatal vitamin")
- Reaction/symptom search — search by reported reaction using MedDRA terms (e.g., "liver injury", "nausea", "hair loss", "rash")
- Industry type filtering — narrow by category: dietary supplements, cosmetics, nuts, vegetables, seafood, dairy, baby food, and more
- Outcome severity filtering — filter by Death, Hospitalization, Life Threatening, Disability, ER Visit, or Healthcare Provider Visit
- Consumer demographics — filter by gender; results include age and gender when reported
- Date range filtering — search by report creation date in YYYY-MM-DD format
- Product role separation — distinguishes suspect products (primary suspects) from concomitant products (also consumed/used)
- Industry classification — each product tagged with FDA industry code and name
- Summary statistics — automatic outcome tallies, top 15 reactions, industry breakdown, and gender distribution
- Retry with backoff — built-in exponential backoff for API rate limits and transient errors
How to Use
-
Enter search criteria — provide at least one filter: product name, reaction, industry type, outcome, gender, or date range.
-
Set the result limit — choose how many reports to return (1–1,000). Default is 100.
-
Run and download — click "Start" and wait for the run to complete. Download the structured JSON dataset.
-
Review summary stats — check the run log for outcome tallies, top reactions, industry breakdown, and gender distribution.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
productName | String | No* | — | Product brand name search |
reaction | String | No* | — | Reaction/symptom (MedDRA term, e.g., "nausea", "liver injury") |
industryType | Select | No | All | FDA industry category (supplements, cosmetics, foods, etc.) |
outcome | Select | No | All | Outcome severity: Death, Hospitalization, Life Threatening, etc. |
gender | Select | No | All | Consumer gender: Female or Male |
dateFrom | String | No | — | Start of date range (YYYY-MM-DD) |
dateTo | String | No | — | End of date range (YYYY-MM-DD) |
maxResults | Integer | No | 100 | Maximum reports to return (1–1,000) |
*At least one search parameter is required.
Input Examples
Supplement-related liver injuries requiring hospitalization:
{
"reaction": "liver injury",
"outcome": "Hospitalization",
"maxResults": 100
}
Cosmetics-related deaths:
{
"industryType": "Cosmetics",
"outcome": "Death",
"maxResults": 500
}
Energy drink adverse events:
{
"productName": "energy drink",
"maxResults": 200
}
All supplement adverse events in 2024:
{
"industryType": "Vit/Min/Prot/Unconv Diet(Human/Animal)",
"dateFrom": "2024-01-01",
"dateTo": "2024-12-31",
"maxResults": 1000
}
Hair loss reactions from cosmetics in women:
{
"reaction": "hair loss",
"industryType": "Cosmetics",
"gender": "Female",
"maxResults": 200
}
Baby food adverse events:
{
"industryType": "Baby Food Products",
"maxResults": 500
}
Input Tips
- Reaction terms use MedDRA (Medical Dictionary for Regulatory Activities) terminology. Common terms: "nausea", "vomiting", "diarrhoea" (British spelling), "liver injury", "rash", "hair loss", "death".
- Use
industryTypefor the most precise category filtering — "Vit/Min/Prot/Unconv Diet(Human/Animal)" covers all dietary supplements. - Combine
outcome: "Death"withindustryTypeto identify the most serious safety signals in a product category. - Product name searches are case-insensitive and match partial names within the
name_brandfield.
Output
Each adverse event report includes:
{
"reportNumber": "168270",
"dateCreated": "2013-07-19",
"dateStarted": "2013-06-17",
"outcomes": ["Other Serious or Important Medical Event"],
"reactions": ["DIARRHOEA", "DYSGEUSIA", "NAUSEA", "STOMACH DISCOMFORT"],
"consumerAge": "69 year(s)",
"consumerAgeUnit": "year(s)",
"consumerGender": "Female",
"productCount": 3,
"suspectProducts": ["PHILLIPS' COLON HEALTH (BIFIDOBACTERIUM + LACTOBACILLUS) CAPSULE"],
"concomitantProducts": ["PHILLIPS' LAXATIVE DIETARY SUPPLEMENT", "PHILLIPS' MILK OF MAGNESIA"],
"industryNames": ["Vit/Min/Prot/Unconv Diet(Human/Animal)"],
"products": [
{
"role": "SUSPECT",
"name": "PHILLIPS' COLON HEALTH (BIFIDOBACTERIUM + LACTOBACILLUS) CAPSULE",
"industryCode": "54",
"industryName": "Vit/Min/Prot/Unconv Diet(Human/Animal)"
}
]
}
Output Fields
| Field | Type | Description |
|---|---|---|
reportNumber | String | Unique CAERS report number |
dateCreated | String | Report creation date (YYYY-MM-DD) |
dateStarted | String | Date the adverse event started (YYYY-MM-DD), if reported |
outcomes | String[] | Outcome severity categories (Death, Hospitalization, etc.) |
reactions | String[] | Reported reactions/symptoms (MedDRA terms) |
consumerAge | String | Consumer age with unit (e.g., "69 year(s)") |
consumerAgeUnit | String | Age unit (year(s), month(s), etc.) |
consumerGender | String | Consumer gender (Female, Male, or empty) |
productCount | Integer | Total products listed in the report |
suspectProducts | String[] | Products identified as the primary suspects |
concomitantProducts | String[] | Other products the consumer was also using |
industryNames | String[] | Unique FDA industry categories for all products |
products | Object[] | Full product details with role, name, industry code/name |
Outcome Types
| Outcome | Count | Description |
|---|---|---|
| Other Serious or Important Medical Event | 82,941 | Serious event not fitting other categories |
| Other Outcome | 27,297 | Non-serious outcome |
| Hospitalization | 23,146 | Required hospitalization |
| Visited a Health Care Provider | 20,565 | Required medical visit |
| Death | 16,980 | Consumer death |
| Visited Emergency Room | 14,065 | Required ER visit |
| Life Threatening | 6,007 | Life-threatening event |
| Disability | 4,672 | Resulted in disability |
| Required Intervention | 2,162 | Required medical intervention |
Industry Categories
| Industry | Reports | Examples |
|---|---|---|
| Dietary Supplements | 53,636 | Vitamins, minerals, protein powder, herbal supplements |
| Cosmetics | 52,210 | Hair products, skin care, makeup, personal care |
| Nuts & Seeds | 5,674 | Peanuts, tree nuts, seeds |
| Vegetables | 4,966 | Fresh, frozen, and canned vegetables |
| Bakery Products | 3,836 | Bread, pastries, cake mixes |
| Soft Drinks & Water | 3,822 | Energy drinks, bottled water, sodas |
| Fruit Products | 3,576 | Fresh, frozen, and canned fruit |
| Seafood | 3,133 | Fish, shellfish, seafood products |
Use Cases
- Dietary supplement companies monitoring adverse events for their products and competitors to detect emerging safety signals
- Cosmetics manufacturers tracking safety reports to inform product reformulation and risk assessment
- Food safety professionals identifying outbreak patterns by product type, reaction, and date range
- Healthcare attorneys building product liability cases with evidence of reported adverse events and outcomes
- Consumer advocacy groups investigating safety patterns in dietary supplements, cosmetics, or food categories
- FDA regulatory consultants analyzing CAERS trends to advise clients on compliance and voluntary recall decisions
- Healthcare investors assessing safety risk for companies in the supplement and cosmetics industries
- Academic researchers studying adverse event epidemiology across food, supplement, and cosmetic product categories
- Journalists investigating product safety stories with data-backed evidence from FDA reports
How to Use the API
Python
import requests
import time
run = requests.post(
"https://api.apify.com/v2/acts/ryanclinton~fda-food-adverse-events/runs",
params={"token": "YOUR_APIFY_TOKEN"},
json={
"reaction": "liver injury",
"outcome": "Hospitalization",
"maxResults": 100
},
timeout=30,
).json()
run_id = run["data"]["id"]
while True:
status = requests.get(
f"https://api.apify.com/v2/actor-runs/{run_id}",
params={"token": "YOUR_APIFY_TOKEN"},
timeout=10,
).json()
if status["data"]["status"] in ("SUCCEEDED", "FAILED", "ABORTED"):
break
time.sleep(3)
dataset_id = status["data"]["defaultDatasetId"]
items = requests.get(
f"https://api.apify.com/v2/datasets/{dataset_id}/items",
params={"token": "YOUR_APIFY_TOKEN"},
timeout=30,
).json()
for item in items:
print(f"{item['reportNumber']} | {item['suspectProducts']} | {item['outcomes']} | {item['consumerAge']}")
JavaScript
const response = await fetch(
"https://api.apify.com/v2/acts/ryanclinton~fda-food-adverse-events/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
reaction: "liver injury",
outcome: "Hospitalization",
maxResults: 100,
}),
}
);
const events = await response.json();
events.forEach(e =>
console.log(`${e.reportNumber} | ${e.suspectProducts.join(", ")} | ${e.outcomes.join(", ")}`)
);
cURL
curl -X POST "https://api.apify.com/v2/acts/ryanclinton~fda-food-adverse-events/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"reaction": "liver injury",
"outcome": "Hospitalization",
"maxResults": 100
}'
How It Works
Input (productName, reaction, industryType, outcome, gender, dates)
|
v
+--------------------------------------------------+
| Step 1: Build Search Query |
| Construct openFDA query from input parameters. |
| Industry type uses .exact field for precise |
| matching. Date ranges to YYYYMMDD format. |
| Terms joined with +AND+ conjunction. |
+--------------------------------------------------+
|
v
+--------------------------------------------------+
| Step 2: Paginated Fetch |
| Fetch up to 100 results per request using |
| skip/limit pagination. Continue until |
| maxResults reached or no more results. |
| Retry with exponential backoff on 429/errors. |
+--------------------------------------------------+
|
v
+--------------------------------------------------+
| Step 3: Transform & Flatten Products |
| Separate products by role (SUSPECT vs |
| CONCOMITANT). Deduplicate product names. |
| Extract unique industry categories. |
| Format consumer age with unit. |
+--------------------------------------------------+
|
v
+--------------------------------------------------+
| Step 4: Summary Statistics |
| Tally outcomes, top 15 reactions, industry |
| breakdown, gender distribution. |
| Log summary to run output. |
+--------------------------------------------------+
|
v
Structured adverse event records pushed to dataset
Data Sources
| Source | API Endpoint | Auth Required | Records |
|---|---|---|---|
| FDA openFDA CAERS | https://api.fda.gov/food/event.json | No | 148K+ |
How Much Does It Cost?
| Scenario | Results | Est. Time | Est. Cost |
|---|---|---|---|
| Reaction search (100 results) | 100 | 10 sec | < $0.01 |
| Industry + outcome (500 results) | 500 | 25 sec | ~$0.01 |
| Full category search (1,000 results) | 1,000 | 30 sec | ~$0.02 |
The actor uses 256 MB memory and makes lightweight API calls with no browser rendering.
Tips
- Use MedDRA terms for reactions — the CAERS database uses Medical Dictionary for Regulatory Activities terms. Common ones: "nausea", "vomiting", "diarrhoea" (not "diarrhea"), "liver injury", "rash", "alopecia" (hair loss), "death".
- Supplements dominate the database — dietary supplements account for ~36% of all CAERS reports, followed by cosmetics at ~35%.
- Check suspect vs. concomitant — the
suspectProductsarray shows products identified as the likely cause.concomitantProductsare other products the consumer was using but not suspected of causing the event. - Combine outcome + industry for safety signals — searching
outcome: "Death"+industryType: "Vit/Min/Prot/Unconv Diet(Human/Animal)"reveals the most serious supplement safety signals. - Partition large searches by date — the openFDA API caps at 1,000 results per query.
- Cross-reference with FDA recalls — use the FDA Food Recall Monitor actor to check if products from adverse event reports have been recalled.
Limitations
- 1,000 result cap — the openFDA API limits results to 1,000 per query. Use date partitioning for larger datasets.
- Reporting bias — CAERS is a passive surveillance system. Not all adverse events are reported, and reporting rates vary by product type and severity.
- Product name quality varies — brand names may include full ingredient lists, dosage info, or abbreviated names. Product name search matches within the full name string.
- No causal confirmation — a CAERS report means a product was used before an adverse event occurred. It does not confirm the product caused the event.
- Consumer demographics often missing — age and gender are not always reported, especially for cosmetics events.
- Cosmetics data note — many cosmetics death reports relate to talc/asbestos litigation filings, not necessarily direct causation.
- Rate limiting — the openFDA API enforces rate limits. The actor handles this with exponential backoff.
Responsible Use
- All data is public domain — FDA CAERS data is published by the US government without restrictions.
- Respect openFDA rate limits — avoid launching dozens of concurrent runs.
- Context matters — CAERS reports describe associations, not confirmed causal relationships. Always consider the full clinical context.
- Verify critical decisions — for regulatory or legal purposes, verify data against the official FDA CAERS database.
FAQ
Is an API key required? No. The openFDA API is free and requires no authentication.
What products does CAERS cover? CAERS covers foods, dietary supplements (vitamins, minerals, herbs, protein), cosmetics, and food additives. It does NOT cover drugs (see FAERS/openFDA drug events) or medical devices (see MAUDE).
How current is the data? The database is updated regularly. Reports typically appear within weeks to months of submission.
What is the difference between SUSPECT and CONCOMITANT? A SUSPECT product is the one the reporter believes caused the adverse event. A CONCOMITANT product was also being used but is not believed to be the primary cause.
Why are there so many cosmetics death reports? Many cosmetics-related death reports in CAERS are associated with talc-based products and ovarian cancer claims submitted during product liability litigation. These reflect legal filings, not necessarily direct product causation.
Can I search by specific brand name?
Yes. Use the productName field. Note that product names in CAERS often include full ingredient lists and dosage forms, so partial name matching works best.
How far back does the data go? The CAERS database contains reports from 2004 to present.
Integrations
- Apify API — trigger runs programmatically for food safety surveillance pipelines
- Zapier — automatically search for new adverse events when a product is added to your watch list
- Make (Integromat) — build workflows that monitor new supplement safety signals weekly
- Google Sheets — export adverse event data for trend analysis
- Webhooks — receive event data as soon as the run completes
- Scheduled Runs — run weekly to monitor new adverse events for your product category
Related Actors
| Actor | What it does | Use with CAERS |
|---|---|---|
| FDA Food Recall Monitor | FDA food recalls | Cross-reference adverse events with food recall actions |
| openFDA Drug Event Monitor | Drug adverse events (FAERS) | Companion for drug safety analysis |
| FDA Device Adverse Event Search (MAUDE) | Device adverse events | Complete FDA adverse event coverage |
| FDA Drug Approval Search | Drug approvals | Check if a supplement ingredient has drug interactions |
| CPSC Product Recall Monitor | Consumer product recalls | Companion for consumer product safety |
How it works
Configure
Set your parameters in the Apify Console or pass them via API.
Run
Click Start, trigger via API, webhook, or set up a schedule.
Get results
Download as JSON, CSV, or Excel. Integrate with 1,000+ apps.
Use cases
Sales Teams
Build targeted lead lists with verified contact data.
Marketing
Research competitors and identify outreach opportunities.
Data Teams
Automate data collection pipelines with scheduled runs.
Developers
Integrate via REST API or use as an MCP tool in AI workflows.
Related actors
GitHub Repository Search
Search GitHub repositories by keyword, language, topic, stars, forks. Sort by stars, forks, or recently updated. Returns metadata, topics, license, owner info, URLs. Free API, optional token for higher limits.
Website Content to Markdown
Convert any website to clean Markdown for RAG pipelines, LLM training, and AI apps. Crawls pages, strips boilerplate, preserves headings, tables, and code blocks. GFM support.
Weather Forecast Search
Get weather forecasts for any location worldwide using the free Open-Meteo API. Returns current conditions, daily and hourly forecasts with temperature, precipitation, wind, UV index, and more. No API key needed.
EUIPO EU Trademark Search
Search EU trademarks via official EUIPO database. Find registered and pending trademarks by name, Nice class, applicant, or status. Returns full trademark details and filing history.
Ready to try FDA Food & Supplement Adverse Event Search (CAERS)?
Start for free on Apify. No credit card required.
Open on Apify Store