Discover/EWG API
live

EWG APIewg.org

Search EWG's Skin Deep database and retrieve hazard scores, health concerns, synonyms, and regulatory data for cosmetic ingredients via 2 REST endpoints.

This API takes change requests — .
Endpoint health
verified 7d ago
search_ingredients
get_ingredient
2/2 passing latest checkself-healing
Endpoints
2
Updated
21d ago

What is the EWG API?

The EWG Skin Deep API gives developers access to safety data for cosmetic ingredients across 2 endpoints. Use search_ingredients to find ingredients by name and retrieve hazard scores and data availability ratings, then call get_ingredient to pull full detail: a 1–10 hazard score, common health concern categories with severity levels, alternative chemical names, regulatory data sources, and EWG VERIFIED criteria — all keyed to EWG's Skin Deep database.

This call costs1 credit / call— charged only on success
Try it
Page number for pagination (1-based).
Search query for ingredient name. Use '*' to list all ingredients.
api.parse.bot/scraper/47ae178e-a2f8-4985-9dac-c800f6eeabae/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/47ae178e-a2f8-4985-9dac-c800f6eeabae/search_ingredients?page=1&search=retinol' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace ewg-org-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: EWG Skin Deep SDK — bounded, re-runnable; every call capped."""
from parse_apis.ewg_org_api import EWGSkinDeep, IngredientNotFound

client = EWGSkinDeep()

# Search for ingredients matching "retinol", cap at 3 results
for ingredient in client.ingredient_summaries.search(query="retinol", limit=3):
    print(ingredient.name, ingredient.score, ingredient.data_availability)

# Drill down into the first result's full details
item = client.ingredient_summaries.search(query="glycerin", limit=1).first()
if item:
    try:
        detail = item.details()
        print(detail.name, detail.score, detail.data_availability)
        print(detail.description)
        for concern in detail.common_concerns:
            print(concern.name, concern.level)
    except IngredientNotFound as e:
        print(f"Not found: {e.ingredient_id}")

print("exercised: ingredient_summaries.search, ingredient_summaries.details")
All endpoints · 2 totalmissing one? ·

Search the EWG Skin Deep database for cosmetic ingredients by name. Returns a paginated list of matching ingredients with their hazard scores and data availability ratings. Results are auto-iterated; use limit to cap total items fetched.

Input
ParamTypeDescription
pageintegerPage number for pagination (1-based).
searchstringSearch query for ingredient name. Use '*' to list all ingredients.
Response
{
  "type": "object",
  "fields": {
    "page": "current page number",
    "total": "total number of matching ingredients",
    "ingredients": "array of ingredient summaries with id, name, slug, score, score_min, data_availability, and url",
    "total_pages": "total number of pages available"
  },
  "sample": {
    "data": {
      "page": 1,
      "total": 74,
      "ingredients": [
        {
          "id": "705545",
          "url": "https://www.ewg.org/skindeep/ingredients/705545-RETINYL_PALMITATE_VITAMIN_A_PALMITATE/",
          "name": "RETINYL PALMITATE (VITAMIN A PALMITATE)",
          "slug": "RETINYL_PALMITATE_VITAMIN_A_PALMITATE",
          "score": 9,
          "score_min": 1,
          "data_availability": "Fair"
        },
        {
          "id": "706889",
          "url": "https://www.ewg.org/skindeep/ingredients/706889-RETINOL_VITAMIN_A/",
          "name": "RETINOL (VITAMIN A)",
          "slug": "RETINOL_VITAMIN_A",
          "score": 9,
          "score_min": 1,
          "data_availability": "Good"
        }
      ],
      "total_pages": 7
    },
    "status": "success"
  }
}

About the EWG API

Searching Ingredients

The search_ingredients endpoint accepts a search string and an optional page integer. Pass a partial or full ingredient name to get a paginated list of matches. Each result includes a numeric id, name, slug, score, score_min, data_availability, and a direct url to the Skin Deep listing. Passing '*' as the search term iterates across all available ingredients. The response also surfaces total and total_pages so you can walk the full result set programmatically.

Ingredient Detail

get_ingredient takes an ingredient_id (e.g. '702620' for Glycerin) and an ingredient_slug (e.g. 'GLYCERIN') — both obtainable from search_ingredients results. The response includes the ingredient's score (1–10, higher indicating greater hazard), score_min for context-dependent lower-bound scores, score_notes explaining variability, and a description field. Health concerns are broken out in common_concerns as an array of categories each tagged with a severity level: low, moderate, or high.

Regulatory and Reference Data

The get_ingredient response includes a data_sources array listing the regulatory and scientific sources referenced in the safety assessment, along with synonyms — an array of alternative chemical names that can be useful for ingredient cross-referencing and label parsing. The data_availability field classifies how much safety data exists for the ingredient across five tiers: Robust, Good, Fair, Limited, and None. An other_concerns text summary captures concerns that don't fit the structured categories.

Identifiers and Pagination

Ingredient IDs are numeric strings internal to Skin Deep. Slugs are uppercase versions of the ingredient name (e.g. 'SODIUM-LAURYL-SULFATE'). Both are returned by search_ingredients, making it straightforward to build a lookup pipeline: search first, then fetch detail by ID and slug. Pagination in search_ingredients is 1-based via the page parameter.

Reliability & maintenanceVerified

The EWG API is a managed, monitored endpoint for ewg.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ewg.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official ewg.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
7d ago
Latest check
2/2 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Screen cosmetic product formulations against EWG hazard scores before launch
  • Build a consumer-facing ingredient scanner that flags high-severity health concerns
  • Enrich an internal ingredient database with synonyms for label normalization
  • Generate regulatory compliance reports citing EWG data sources for each ingredient
  • Filter product catalogs by data_availability tier to surface under-researched ingredients
  • Cross-reference ingredient IDs to track score changes over time
  • Power an autocomplete search for ingredient names using the paginated search_ingredients endpoint
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does EWG offer an official developer API for Skin Deep?+
EWG does not publish a documented public developer API for the Skin Deep database. This Parse API provides structured programmatic access to ingredient data that is otherwise only browsable through their website at ewg.org/skindeep.
What does the score field in get_ingredient represent, and how does score_min differ?+
The score field is EWG's hazard rating on a 1–10 scale, where higher numbers indicate greater concern. score_min represents the lower bound of the score range, which can vary depending on the ingredient's usage concentration or formulation context. The score_notes array explains the specific factors driving any variability between these two values.
Does the API return product-level data, such as specific cosmetics that contain an ingredient?+
Not currently. The API covers ingredient-level data: hazard scores, health concerns, synonyms, regulatory sources, and data availability. Product listings and brand-specific formulations are not returned by either endpoint. You can fork this API on Parse and revise it to add a product lookup endpoint if that data is accessible on Skin Deep.
Are there any limitations on which ingredients are covered?+
Coverage is limited to ingredients indexed in EWG's Skin Deep database. Ingredients with no Skin Deep entry will not appear in search_ingredients results. Data availability for individual ingredients varies widely — the data_availability field reflects this, ranging from 'Robust' to 'None', so some entries will have minimal detail in get_ingredient responses.
Can I retrieve EWG VERIFIED product certifications through this API?+
The get_ingredient response includes EWG VERIFIED criteria as part of the ingredient detail, but full product-level EWG VERIFIED certification listings are not a separate endpoint. You can fork this API on Parse and revise it to add an endpoint covering the EWG VERIFIED product directory if that scope is needed.
Page content last updated . Spec covers 2 endpoints from ewg.org.
Related APIs in HealthcareSee all →
incidecoder.com API
Search cosmetic products and ingredients, get detailed analysis of their safety and composition, and decode ingredient lists to understand what's in your beauty products. Find similar products and explore comprehensive ingredient databases to make informed decisions about the cosmetics you use.
paulaschoice.com API
Search and explore Paula's Choice skincare products with detailed ingredient lists, allergen information, and skin type recommendations all in one place. Find best sellers, look up specific ingredient details, and discover products organized by category to build your perfect skincare routine.
world.openbeautyfacts.org API
Search and discover cosmetic and beauty products by name or ingredient, accessing detailed information like INCI ingredient lists, product categories, and full product specifications. Browse beauty product categories and find exactly what you're looking for with comprehensive data on thousands of cosmetic items.
incibeauty.com API
Search cosmetic ingredients and products to discover detailed formulation data, safety ratings, and usage statistics. Browse expert editorial dossiers on cosmetic topics, explore the most popular ingredients used across the beauty industry, and retrieve recently referenced items for quick lookup.
cosdna.com API
Search cosmetic products and ingredients to view detailed safety information, supplier data, and community reviews all in one place. Analyze ingredient lists to understand product composition and access the latest cosmetics forum discussions and user feedback.
ecco-verde.it API
Browse and search the Ecco Verde natural beauty catalogue. Retrieve full product details including ingredients (INCI), variants, and attributes; search by keyword; explore products by category or brand; and fetch personalised product recommendations.
theordinary.com API
Browse and search The Ordinary's complete product catalog by category or ingredients. View detailed product information including formulas and key actives, apply filters by product type, concern, or ingredient, and read customer reviews to compare and evaluate products.
drunkelephant.com API
Search and browse Drunk Elephant's full product catalog by category or collection, view detailed product information including ingredients and specifications, and access customer ratings and reviews. Find the perfect skincare and beauty products for your needs with comprehensive product details and authentic customer feedback.