Discover/The Ordinary API
live

The Ordinary APItheordinary.com

Access The Ordinary's full product catalog via API. Retrieve product details, INCI ingredient lists, category filters, keyword search, and customer reviews.

Endpoint health
verified 7d ago
get_product_details
search_products
get_product_ingredients
get_all_products
get_products_filtered
7/7 passing latest checkself-healing
Endpoints
7
Updated
22d ago

What is the The Ordinary API?

The Ordinary API covers 7 endpoints for querying The Ordinary's skincare catalog, returning product names, prices, full INCI ingredient lists, inventory status, and customer reviews. The get_product_ingredients endpoint isolates the complete INCI formula and key actives for any product by ID, while get_products_filtered lets you narrow results by concern, active ingredient, format, or regimen step — useful for building ingredient-aware skincare tools.

Try it
Sort rule. Accepted values: top-sellers, new-arrivals.
Number of products to return per page.
Pagination offset (0-based index of first result).
api.parse.bot/scraper/40173335-04fa-432e-90d9-cdea5deb7cd7/<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/40173335-04fa-432e-90d9-cdea5deb7cd7/get_all_products?sort=top-sellers&limit=5&start=0' \
  -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 theordinary-com-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.

from parse_apis.the_ordinary_api import TheOrdinary, Category, Sort

client = TheOrdinary()

# Browse bestselling products
for product in client.products.by_category(category=Category.BESTSELLERS, limit=5):
    print(product.name, product.price, product.currency)

# Search for vitamin C products
for product in client.products.search(query="vitamin c", limit=3):
    print(product.name, product.c_product_type, product.short_description)

# Get full product details and check ingredients
details = client.products.get(product_id="rdn-niacinamide-10pct-zinc-1pct-30ml")
print(details.name, details.price, details.brand)
ingredients_info = details.ingredients()
print(ingredients_info.product_name, ingredients_info.key_ingredients)

# Filter products by type with sorting
for product in client.products.filtered(filters={"product_type": "Serums"}, sort=Sort.NEW_ARRIVALS, limit=4):
    print(product.name, product.price)

# Read customer reviews via sub-resource
product = client.products.get(product_id="rdn-niacinamide-10pct-zinc-1pct-30ml")
for review in product.reviews.list(limit=5):
    print(review.title, review.rating, review.user_nickname)
All endpoints · 7 totalmissing one? ·

Retrieve all products from The Ordinary's main listing. Returns a single page of results with full product details including name, price, currency, ingredients, images, and inventory. Use the start and limit parameters to manually control pagination offset.

Input
ParamTypeDescription
sortstringSort rule. Accepted values: top-sellers, new-arrivals.
limitintegerNumber of products to return per page.
startintegerPagination offset (0-based index of first result).
Response
{
  "type": "object",
  "fields": {
    "sz": "integer page size used",
    "start": "integer pagination offset used",
    "products": "array of product detail objects with name, price, currency, ingredients, images, inventory",
    "total_on_page": "integer count of products returned"
  },
  "sample": {
    "data": {
      "sz": 3,
      "start": 0,
      "products": [
        {
          "id": "769915234053",
          "name": "Glycolic Acid 7% Exfoliating Toner",
          "brand": "The Ordinary",
          "price": 9,
          "master": {
            "master_id": "100418"
          },
          "currency": "USD",
          "inventory": {
            "orderable": true,
            "stock_level": 17169
          },
          "c_ingredients": "Aqua (Water), Glycolic Acid...",
          "c_productType": "Toners",
          "c_keyIngredients": "Glycolic Acid, Aloe Barbadensis Leaf Water",
          "short_description": "A daily glycolic acid toner."
        }
      ],
      "total_on_page": 3
    },
    "status": "success"
  }
}

About the The Ordinary API

Product Catalog and Search

The get_all_products endpoint returns paginated product objects with fields including name, price, currency, c_ingredients, c_keyIngredients, inventory, and image data. You can sort by top-sellers or new-arrivals and control pagination with limit and start. The get_products_by_category endpoint accepts a category parameter with values like skincare, body+hair, sets-collections, bestsellers, and new-featured, returning the same full product detail shape. For keyword-based lookup, search_products accepts a query string — for example 'niacinamide' or 'vitamin c' — and returns matching products with all detail fields.

Filtering and Product Detail

get_products_filtered is a POST endpoint that accepts a filters object supporting keys: product_type, concern, active_ingredient, format, regimen_step, and prefer. This allows precise catalog queries such as finding all serums targeting hyperpigmentation that contain a specific active. The get_product_details endpoint accepts either a slug-style product_id (e.g. rdn-niacinamide-10pct-zinc-1pct-30ml) or a numeric UPC, returning the full record including short_description, brand, inventory availability object, and the complete ingredients fields.

Ingredients and Reviews

get_product_ingredients returns the ingredients (full INCI string) and key_ingredients for a product in a lightweight response, without the overhead of the full detail object — useful when you only need formula data at scale. For social proof data, get_product_reviews retrieves customer reviews from Bazaarvoice using a numeric master product ID found in the master.master_id field of product responses. The reviews response includes a Results array of review objects, a TotalResults count, and an Includes object with product and author metadata. Pagination is controlled via limit and offset.

Reliability & maintenanceVerified

The The Ordinary API is a managed, monitored endpoint for theordinary.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when theordinary.com 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 theordinary.com 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
7/7 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
  • Build an ingredient comparison tool using c_ingredients and c_keyIngredients fields across multiple products.
  • Filter The Ordinary's catalog by active ingredient or skin concern for a personalized routine recommender.
  • Monitor inventory availability across the product catalog using the inventory field in product detail responses.
  • Aggregate customer review sentiment using TotalResults and review text from get_product_reviews.
  • Populate a skincare database with full INCI lists via get_product_ingredients for allergen or formulation research.
  • Track price changes over time by polling get_all_products sorted by new-arrivals or top-sellers.
  • Search by keyword (e.g. 'retinol') and extract format and regimen step attributes for product categorization.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does The Ordinary have an official developer API?+
The Ordinary does not publish a public developer API or documentation portal. Data access is available through this Parse API.
What product ID format does `get_product_reviews` require, and where do I find it?+
get_product_reviews requires a numeric master product ID (e.g. 100436 for Niacinamide 10% + Zinc 1%). This ID is found in the master.master_id field returned by get_product_details or any of the listing endpoints. It is distinct from the slug-style ID used by other endpoints.
Can I filter products by multiple concerns or ingredients at the same time?+
The get_products_filtered endpoint accepts a filters object with keys including concern, active_ingredient, product_type, format, regimen_step, and prefer. Whether multiple keys can be combined in one request depends on the filter implementation — testing with a filters object containing more than one key is the reliable way to confirm multi-filter behavior for a given combination.
Does the API cover The Ordinary products sold on third-party retailers like Sephora or ASOS?+
No. All endpoints reflect The Ordinary's own catalog at theordinary.com, including its pricing and inventory. Products sold through third-party retailers, along with any retailer-specific pricing or stock levels, are not covered. You can fork this API on Parse and revise it to add endpoints targeting a specific retailer's listing of The Ordinary products.
Are bundle or set products returned separately from individual items?+
The get_products_by_category endpoint accepts sets-collections as a valid category value, which returns sets as a distinct group. Individual product endpoints like get_product_details can be called on set product IDs if you have them. Variant-level breakdown within a set (e.g. individual items inside a kit) is not exposed as a separate endpoint. You can fork the API on Parse and revise it to add a dedicated set-contents endpoint if that granularity is needed.
Page content last updated . Spec covers 7 endpoints from theordinary.com.
Related APIs in EcommerceSee all →
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.
cultbeauty.co.uk API
Browse and search Cult Beauty's product catalog by category or brand, view detailed product information including ingredients and loyalty points, and read customer reviews. Discover new arrivals, sale items, and filter products to find exactly what you're looking for.
sephora.com API
Search and browse Sephora's product catalog to find detailed information about beauty items, including specifications, customer reviews, Q&A discussions, pricing, and real-time availability. Filter products by category or brand, and access comprehensive brand listings to discover exactly what you're looking for.
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.
ulta.com API
Search and browse Ulta Beauty's complete product catalog with real-time pricing and inventory information, then dive into detailed product specs including ingredients, usage instructions, and customer reviews. Find exactly what you're looking for across all beauty categories with comprehensive product data at your fingertips.
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.
lookfantastic.com API
Browse Lookfantastic category pages to retrieve live product listings (price, ratings, reviews, and ingredients), and fetch detailed information for a specific product by SKU including reviews, directions, and images.
oliveyoung.co.kr API
Search and discover products from Olive Young Korea's catalog, including detailed product information, customer reviews, and real-time makeup rankings across categories. Browse through organized product categories and find top-rated items to compare and research before purchasing.
The Ordinary API – Products, Ingredients & Reviews · Parse