TL;DR
openFDA Cosmetics endpoint provides adverse event reports for cosmetic products marketed in the United States — including skincare, makeup, hair care, nail products, deodorants, and fragrances. Each report contains the product brand, manufacturer, ingredients (when available), adverse reactions reported, and consumer outcomes. This data helps manufacturers, regulators, and consumers understand the safety profile of cosmetic products.
Quick start: https://api.fda.gov/cosmetics/event.json
No API key needed — just make a request!
How to Use This API
1. Recent Cosmetic Adverse Events
https://api.fda.gov/cosmetics/event.json?limit=5
Returns the most recently submitted cosmetic adverse event reports including product details and reaction descriptions.
2. Search by Brand Name
https://api.fda.gov/cosmetics/event.json?search=products.brand_name:Neutrogena
Find all adverse events associated with a specific brand of cosmetic products.
3. Search by Reaction Type
https://api.fda.gov/cosmetics/event.json?search=reactions:rash
Filter events by specific adverse reactions like rash, itching, swelling, hives, or hair loss.
4. JavaScript — Brand Safety Checker
async function checkCosmeticBrand(brand) {
const resp = await fetch(
`https://api.fda.gov/cosmetics/event.json` +
`?search=products.brand_name:${encodeURIComponent(brand)}&limit=30`
);
const data = await resp.json();
if (!data.results) return { total: 0, topReactions: [] };
const reactionCounts = {};
data.results.forEach(r => {
(r.reactions || []).forEach(rec => {
const reaction = rec.reaction || 'unknown';
reactionCounts[reaction] = (reactionCounts[reaction] || 0) + 1;
});
});
const sorted = Object.entries(reactionCounts)
.sort((a, b) => b[1] - a[1])
.slice(0, 5);
return { total: data.meta.results.total, topReactions: sorted };
}
checkCosmeticBrand('L\'Oreal').then(console.log);
5. Python — Count by Product Type
import requests
def product_type_breakdown():
resp = requests.get(
'https://api.fda.gov/cosmetics/event.json',
params={'count': 'products.brand_name.exact', 'limit': 20}
)
data = resp.json()
print("Brands with most cosmetic adverse events:")
for item in data.get('results', []):
print(f" {item['term']}: {item['count']} reports")
product_type_breakdown()
https://api.fda.gov/cosmetics/event.json?limit=3
Frequently Asked Questions
- What kind of products are covered?
- Cosmetics include skincare (moisturizers, cleansers), makeup (foundation, lipstick, eye shadow), hair care (shampoo, dye, styling), nail products (polish, remover), deodorants, fragrances, and personal cleansing products. Soap and sunscreen are regulated differently.
- What data is in each report?
- Product brand name, manufacturer, product category, adverse reactions (as text fields), consumer age/sex, outcome, and date received. Ingredient information is included when available.
- How does this relate to FDA's cosmetic authority?
- The FDA regulates cosmetics under the Federal Food, Drug, and Cosmetic Act. Adverse event reporting for cosmetics became mandatory with the Modernization of Cosmetics Regulation Act (MoCRA) in 2023.
- Is this only US data?
- Yes, these are adverse events reported to the US FDA for cosmetic products marketed in the United States. It does not include international cosmetic safety data.
- How often is the data updated?
- Cosmetic adverse event data is updated regularly as reports are submitted by manufacturers, consumers, and healthcare professionals to the FDA.
API Details
- API URL
https://api.fda.gov/cosmetics- Documentation
- open.fda.gov/apis/cosmetics
- Category
- Health
- Authentication
- Not Required
- Geographic Coverage
- US — Cosmetic products marketed in the United States
What You Can Build
- Cosmetic product safety database for consumers to look up reported reactions
- Brand monitoring dashboard tracking adverse event trends
- Ingredient safety research tool for cosmetic chemists
- Personal care product comparison by reported reaction frequency
- Skincare routine safety checker across multiple product brands