Discover/Openbeautyfacts API
live

Openbeautyfacts APIworld.openbeautyfacts.org

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.

This API takes change requests — .
Endpoint health
monitored
get_product_detail
list_categories
search_by_ingredient
search_products
Checks pendingself-healing
Endpoints
4
Updated
2h ago
This call costs2 credits / call— charged only on success
Try it
Page number for paginated results (1-based).
Search term matching product name, brand, or keyword.
api.parse.bot/scraper/fb148a2a-3597-417d-9698-45cd8da23b99/<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/fb148a2a-3597-417d-9698-45cd8da23b99/search_products?page=1&query=shampoo' \
  -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 world-openbeautyfacts-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: Open Beauty Facts SDK — bounded, re-runnable; every call capped."""
from parse_apis.world_openbeautyfacts_org_api import OpenBeautyFacts, ProductNotFound

client = OpenBeautyFacts()

# Search for products by keyword
for product in client.product_summaries.search(query="shampoo", limit=3):
    print(product.product_name, product.brand, product.categories)

# Search by INCI ingredient
for product in client.product_summaries.search_by_ingredient(inci_name="aqua", limit=3):
    print(product.product_name, product.brand)

# Navigate from summary to full detail
item = client.product_summaries.search(query="coconut", limit=1).first()
try:
    detail = item.details()
    print(detail.product_name, detail.ingredients_text, detail.labels)
except ProductNotFound as e:
    print("not found:", e.barcode)

# List categories
for cat in client.categories.list(limit=3):
    print(cat.name, cat.products)

print("exercised: product_summaries.search / product_summaries.search_by_ingredient / ProductSummary.details / categories.list")
All endpoints · 4 totalmissing one? ·

Full-text search over beauty and cosmetic products by name, brand, or keyword. Results are paginated; each product includes name, brand, categories, country, INCI ingredient list, and product URL.

Input
ParamTypeDescription
pageintegerPage number for paginated results (1-based).
queryrequiredstringSearch term matching product name, brand, or keyword.
Response
{
  "type": "object",
  "fields": {
    "page": "integer current page number",
    "count": "integer total number of matching products",
    "products": "array of product summaries",
    "page_size": "integer products per page",
    "page_count": "integer total number of pages"
  },
  "sample": {
    "data": {
      "page": 1,
      "count": 2438,
      "products": [
        {
          "url": "https://world.openbeautyfacts.org/product/8001090662231/coconut-milk-herbal-essences",
          "brand": "Herbal Essences",
          "barcode": "8001090662231",
          "countries": "Maroc",
          "categories": "Soins cheveux, Shampoings",
          "product_name": "Coconut Milk",
          "ingredients_text": "Aqua, Sodium Laureth Sulfate"
        }
      ],
      "page_size": 24,
      "page_count": 24
    },
    "status": "success"
  }
}

About the Openbeautyfacts API

The Openbeautyfacts API on Parse exposes 4 endpoints for the publicly available data on world.openbeautyfacts.org. Calls return JSON over HTTPS and are billed per successful response.

Pin a release with the API-Snapshot-Version header so canonical updates don't silently change your contract.