180,000 Products · 24,000 Brands · 22,000 Ingredients

The Most Comprehensive Beauty Products API

Query normalized beauty products and ingredient records with exact on-label ingredient order, research-backed irritancy and comedogenicity ratings, chemical identifiers, and clean product images.

Data updated as at 17 August 2026. See what changed.

Free testing tier · Paid plans from $40/month · 10,000 calls included · Cancel anytime

Example
GEThttps://api.thebeautyapi.com/v1/products/search?q=the+ordinary+niacinamide&page=1
Complete responseAPI reference
For coding agents

Paste this into your CLAUDE.md, AGENTS.md or editor rules and your agent calls the API correctly without reading the docs. Also at https://thebeautyapi.com/agent.md.

Show the 23 lines ▾
# The Beauty API: instructions for coding agents
Base URL: https://api.thebeautyapi.com/v1 (JSON over HTTPS)
Auth: send the header x-api-key: $BEAUTY_API_KEY on every /v1 request. Keep the key in an environment variable, never in code or in this file.
Reference: https://thebeautyapi.com/docs.md | Spec: https://api.thebeautyapi.com/openapi.json | Keys: https://thebeautyapi.com/dashboard

## Endpoints
- Health: GET /health (no key)
- Search products: GET /v1/products/search?q=&page=
- Filter products: GET /v1/products?category=&brand=&origin=&fragrance_free=&alcohol_free=&paraben_free=&sulfate_free=&silicone_free=&has_ingredient=&excludes_ingredient=&page=
- Get a product: GET /v1/products/{id}
- Barcode lookup: GET /v1/products/barcode/{barcode} (barcode plans only)
- Batch products: POST /v1/products/batch (body {"ids": [uuid, ...]}, max 50)
- Search ingredients: GET /v1/ingredients/search?q=&page=
- Get an ingredient: GET /v1/ingredients/{id}

## Rules
1. Find a product with search, then fetch the full record with GET /v1/products/{id}. Search and filter return slim records (id, brand, name, category, image_url); detail, batch and barcode return the full record with the ingredient list in on-label order.
2. Every word in q must appear in the product's brand or name, in any order. Send the brand plus the distinctive part of the name ("CeraVe Moisturizing Cream"), never a full retail title. Case, accents and punctuation are ignored; the last word may be partial.
3. When pagination.total is 0 the response carries a no_match object: drop the word no_match.hint names and retry. An empty result does not mean the brand is missing.
4. Pages hold 20 results; page runs 1 to 51 and anything higher returns 400. Read pagination.total and pagination.has_more; above 1,020 matches, narrow with filters instead of paging.
5. Batch takes up to 50 ids and is billed per item (50 ids = 50 calls); unknown ids come back as null in the same positions.
6. Errors are JSON {statusCode, error, message} and message says what to change. 403 is a missing or revoked key, or a plan without barcode lookup. 429 is the rate limit; no rate-limit headers are sent, so back off exponentially.
7. Barcodes are a lookup key, not a field: no response lists a product's codes. image_url can be null.
180,000
Products
24,000
Brands
deepest in skincare
22,000
Ingredient records
4.8M
Product–ingredient links
avg 26.8 per product, on-label order

The API

Structured Access to the Entire Catalog

A uniform JSON interface over our INCI-mapped catalog with API key auth and versioned paths. No vendor SDK required.

GET /v1/products/search

Search

Search across brand and product names, returning slim records built for result lists.

GET /v1/products

Filter & Discover

Filter using product category, brand, origin, five formulation flags, and ingredient inclusion/exclusion in a single request.

GET /v1/products/{id}

Full Product Record

The complete ingredient list in exact on-label order, with functional classes, irritancy and comedogenicity ratings, and CAS, EC, IUPAC, and Ph. Eur. identifiers.

POST /v1/products/batch

Batch Retrieval

Up to 50 complete records in one request, returned in the same order as the ids you sent.

GET /v1/ingredients/{id}

Ingredient Science

22,000 normalized ingredient records: functional classes, irritancy and comedogenicity ratings, and CAS, EC, IUPAC, and Ph. Eur. identifiers.

GET image_url

Clean Product Images

Professional, white-background product photographs. Reference them directly in your UI.

Trusted by data scientists across the world

Hugging FaceHugging Face
KaggleDatarade

Integration

How It Works

Create a key from your developer dashboard. Pass it in the header on your requests. Fuss-free integration.

01

Pick a plan, get your key

Subscribe from the dashboard and provision an API key in minutes. Up to 2 active keys per account. Create, reveal, and revoke at any time.

Your dashboard
Subscription   Pro · 100,000 calls/month
API key        ····························9xYz · active
Send it as     x-api-key: <your key>
02

Call it from anything

Plain HTTPS and JSON from whatever stack you already run. Filters combine to answer real product questions in a single request, with pagination built in.

Fragrance-free skincare, one request
$ curl "https://api.thebeautyapi.com/v1/products?\
category=skincare&fragrance_free=true&page=1" \
    -H "x-api-key: $BEAUTY_API_KEY"

{
  "results": [ …20 products… ],
  "pagination": { "page": 1, "has_more": true, "total": 44208 }
}
03

Build what your users see

Render the response as live product UI with safety badges, ingredient ratings, conflict checks. The presentation layer is yours.

The Ordinary

Niacinamide 10% + Zinc 1%

alcohol-freefragrance-free
Niacinamide10%direct actives
Zinc PCA1%supporting actives
irritancy0/5
comedogenicity0/5

Example UI rendered from one API response. The presentation layer is yours to design.

Coverage

Is Your Brand Covered?

We track more than 24,000 brands across 180,000 products, deepest in skincare. Check a brand and see what we hold, instantly.

Try:

Category mix

Approximate share of the catalog
Skincare58%
Haircare13%
Body & bath10%
Suncare8%
Makeup8%
Other3%

Field-level fill rates (ratings, CAS/EC numbers, barcodes) are on the dataset page.

Who it’s for

Built For Teams That Ship Beauty Products

From recommendation models to formulation experts, teams use the same clean reference to skip months of data wrangling.

E-commerce & Retail

Enrich your storefront and search results using our beauty products data. Boost conversion and lower return rates with expert ingredient tooltips and safety badges.

What you'd build:

  • Ingredient-rich product pages to generate free organic leads
  • Meaningful product page with ingredient lists to increase conversions
  • Comedogenicity & irritancy filtering for sensitive skin
  • Trust signals & clean-beauty safety badges

Beauty-Tech Founders

Stop wasting months gathering data. Launch your routine-builder or skin-checker app on day one.

What you'd build:

  • Ingredient conflict logic based on comprehensive INCI ingredients list
  • Personalized routine builders using comedogenic & irritancy ratings
  • Skin-type matching engines
  • Filter-by-ingredient systems for 180,000 products

Market Research & R&D

Benchmark global formulations. Track ingredient trends across 180,000 beauty products and identify market gaps over the API or the licensed dataset.

What you'd build:

  • Global competitor product benchmarking
  • Ingredient & formulation trend analysis across 180,000 products
  • AI & Machine Learning training to decode packaging-to-ingredient correlations
  • High-accuracy computer vision models for automated retail audits
Bestiemybestie.io

Beauty, decoded. Scan any cosmetic instantly for a clear safety score, personalized ingredient insights, and the evidence behind every finding. Know exactly what touches your skin.

The Beauty API provided a portion of the cosmetics product data used in Bestie. Their clean, well-structured product data helped broaden our catalog coverage. Grateful for their support!
Pavan KFounder, Bestie

API plans

Simple Monthly Pricing

Every plan includes the full catalog. Plans differ in included calls, rate limits, and barcode access.

Billed at the end of each month · Allowances reset at the start of each billing month · Cancel anytime

Sandbox

$0/month

Testing and evaluation with barcode lookups.

  • 100 API calls / month included
  • Full product & ingredient data
  • Barcode lookup (GTIN/UPC/EAN → product)
  • Hard cap, no overage charges ever
Most Popular

Starter

$60/month

Starter volume with barcode lookups.

  • 10,000 API calls / month included
  • Full product & ingredient data
  • Barcode lookup (GTIN/UPC/EAN → product)
  • Overage $0.02/call (batch: per item)

Pro

$300/month

Production scale with barcode lookups.

  • 100,000 API calls / month included
  • Full product & ingredient data
  • Barcode lookup (GTIN/UPC/EAN → product)
  • Higher rate limits
  • Overage $0.02/call (batch: per item)

The dataset

Get the Underlying Dataset

The same catalog is available as a one-time dataset snapshot in SQLite, CSV, and JSONL, with the full image archive, to host, query, and train on.

180,000 products · 180,000 images

The Complete Archive

180,000 normalized products, a full ingredient dictionary with functions and comedogenicity, and the complete product-image archive.

$1,500
one-time dataset snapshot
  • 180,000 products, including brand, name, category, origin & safety flags
  • Label-order ingredient list for every product, linked to the dictionary
  • Normalized ingredient dictionary, including irritancy, comedogenicity, ratings, functions
  • 180,000 product images (~18GB), ID-matched to product records
  • GTIN barcodes (UPC/EAN, GTIN-14 form) on ~44% of products
  • JSONL, SQLite and CSV formats
  • Full schema documentation

Evaluate first

Try the data before you commit

Download a 1,000-product sample pack with the full schema, or check brand coverage on the dataset page.

CSV + JSONL + 1,000 images · No payment required

Not sure which fits? Read: Dataset vs API

Questions

Frequently Asked Questions

The essentials below. See the full FAQ for coverage, usage, and dataset details.

How do I get access to the API?

Sign up on the dashboard, pick a plan, and create an API key. The whole thing takes a few minutes and every request then authenticates with an x-api-key header. The free Sandbox plan gives you 100 calls a month to evaluate the API against the full catalog. It is hard-capped and never auto-charges (a card is kept on file so you can upgrade in one click). Paid plans start at $40/month with 10,000 calls included, billed at the end of each month, cancel anytime. Endpoints, parameters and examples are in the docs.

How do API limits and overage work?

Every plan has a monthly call allowance: 100 calls on Sandbox, 10,000 on Starter and 100,000 on Pro. On paid plans, calls beyond the allowance are metered at $0.02 per call, so passing your allowance doesn't cut your traffic off (only an extreme-abuse ceiling of several times your allowance ever blocks requests). Your billing month starts on the day you subscribe; the plan fee and any overage are billed together at the end of each billing month, and the allowance resets at the start of each billing month. Usage is reported daily, so calls made on the last day of a billing month can occasionally land on the next month's invoice instead, where they count against that month's allowance first. On Sandbox, requests return 429 once you reach the cap, and nothing is ever charged. Rate limits are 5 requests/sec (burst 10) on Sandbox, 10 requests/sec (burst 20) on Starter plans and 25 requests/sec (burst 50) on Pro plans. Batch requests are billed per item, so a batch of 50 products counts as 50 calls towards your allowance and overage; rate limits and the Sandbox cap count requests, so that same batch is one request against those.

What is included in the dataset?

One snapshot, the whole catalog: 180,000 products with brand, product category, country of origin and formulation flags (fragrance, drying alcohol, parabens, sulfates, silicones); a label-order ingredient list for every product, linked through a product-to-ingredient link table to a normalized ingredient dictionary (functions, irritancy, comedogenicity, safety rating, chemical identifiers); GTIN barcodes where known; and the full product-image archive (~18GB, 180,000 images). Delivered as CSV, JSONL and SQLite with a complete data dictionary and schema guide.

What can I do with the dataset?

A dataset purchase is a snapshot of the catalog you can use indefinitely, including commercially. Load it into your own systems, build products and analyses on it, and show the product information to your end users, with product images ID-matched to every record for your own use. You may not redistribute, resell or publicly host the raw files (CSV, JSONL, SQLite, images) for third parties to download. Future versions are sold separately as differential refreshes.

Get started

The Definitive Beauty Products API

One key unlocks 180,000 normalized products, 22,000 ingredient records, and clean product images. Test free, or go to production from $40/month. Prefer the raw files? The dataset is available as a one-time snapshot, above.