openFDA Cosmetics

Health API · Cosmetic adverse events · Skincare & beauty products · US data

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()
Try cosmetics events: 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