Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Nykaa API page →
E-commerce & Marketplaces

Nykaa API & Scraper

The Nykaa API turns nykaa.com, India's number-one beauty and personal-care marketplace of roughly 4,000 brands, into clean JSON in eleven actions.

11 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

search reads Nykaa's own search for a keyword and returns products with price_inr, mrp_inr, discount_percent, rating, rating_count, stock and shade count, plus Nykaa's own total_results; when Nykaa answers a head term such as lipstick with a category instead of a product list, the API follows that and tells you in listing_type and category_id. category and brand walk the catalogue and page all the way down, with filters that were each checked against Nykaa's own facet counts: on Lipstick, 718 products unfiltered, 295 under 500 INR, 92 discounted 30 percent or more, 558 rated 4 stars or better, 454 matte, and 26 for one brand id - every one matching the facet exactly. product returns the full record: price and MRP with the real discount, barcode (GTIN), seller, country of origin, expiry date, return window, live stock, shade count, every image, the description, ingredients and how-to-use, the 1-5 star histogram that sums to the rating count, Nykaa's own review summary and its ranked aspect sentiment such as Color Payoff: Positive. product/shades returns every shade or pack size with its own price, MRP, discount and stock count, zero-stock shades flagged rather than dropped. product/reviews returns the 20 customer reviews Nykaa publishes with rating, full text, author, date, helpful count, verified-buyer flag, the shade bought and the photos. product/similar is Nykaa's own recommendation rail, and suggest, trending, categories and brands are how you turn a name into an id - 337 categories and 4,035 brands. Verified on 2026-09-23: 101 calls across 12 queries, 12 categories, 12 brands and 12 products in 12 departments, all 101 succeeded, no HTML in any string, no price above its MRP, and search rows matched the full product record on id, price, MRP and brand for 6 of 6 round-tripped products. Prices are INR as numbers. No Nykaa account - one ReefAPI key and the standard { ok, data, meta, error } envelope.

Reference

Which number is the price, and why the discount is computed

Nykaa prints two prices on every product and its own discount field does not always agree with them. The API publishes both prices under unambiguous names and works the discount out from them. Measured on 2026-09-23.

Nykaa productprice_inrmrp_inrdiscount_percent
Swiss Beauty Pure Matte Lipstick20622910
Nykaa Cosmetics All Day Matte Liquid Foundation42264935
Renee Cosmetics Hard Black Kajal Pen29939825 (Nykaa's own field says 8, returned as discount_percent_listed)
Charlotte Tilbury Matte Revolution385038500
Biotique Bio Kelp Protein Shampoo40678048

price_inr is what a shopper pays and mrp_inr is the printed list price; they are equal when there is no discount, and price_inr was never above mrp_inr on any of the 101 calls measured. discount_percent is computed from those two numbers so it always agrees with them. When Nykaa's own discount field disagrees, its figure is returned as discount_percent_listed rather than silently trusted or silently dropped.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/nykaa/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "maybelline mascara"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "nykaa",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 746.3,
    "record_count": 20,
    "bytes": 402713,
    "cache_hit": false,
    "stop_reason": "limit_reached",
    "upstream_requests": 1,
    "total": 46,
    "listing_type": "search",
    "charged_credits": 2,
    "version": "1.0.0"
  },
  "data": {
    "products": [
      {
        "product_id": "13421590",
        "url": "https://www.nykaa.com/maybelline-new-york-lash-sensational-sky-high-waterproof-mascara/p/13421590",
        "name": "Maybelline New York Lash Sensational Sky High Waterproof Mascara",
        "product_title": "Lash Sensational Sky High Waterproof Mascara",
        "brand": "Maybelline New York",
        "price_inr": 622,
        "mrp_inr": 829,
        "discount_percent": 25,
        "currency": "INR",
        "rating": 4.4,
        "rating_count": 82759,
        "in_stock": true,
        "stock_quantity": 23040,
        "shade_count": 6,
        "variant_type": "shade",
        "sku": "MAYBE00000715",
        "image": "https://images-static.nykaa.com/media/catalog/product/tr:h-800,w-800,cm-pad_resize/0/0/00bbb89MAYBE00000375_1.jpg",
        "category_path": [
          {
            "level": "[trimmed-depth]",
            "category_id": "[trimmed-depth]",
            "name": "[trimmed-depth]"
          },
          {
            "level": "[trimmed-depth]",
            "category_id": "[trimmed-depth]",
            "name": "[trimmed-depth]"
          },
          {
            "level": "[trimmed-depth]",
            "category_id": "[trimmed-depth]",
            "name": "[trimmed-depth]"
          }
        ],
        "offer_count": 1,
        "tags": [
          "BESTSELLER"
        ],
        "is_luxury": false
      },
      {
        "product_id": "806",
        "url": "https://www.nykaa.com/maybelline-the-colossal-volum-express-mascara/p/806",
        "name": "Maybelline New York The Colossal Volum Express Mascara",
        "product_title": "The Colossal Volum Express Mascara",
        "brand": "Maybelline New York",
        "price_inr": 424,
        "mrp_inr": 499,
        "discount_percent": 15,
        "currency": "INR",
        "rating": 4.4,
        "rating_count": 272430,
        "in_stock": true,
        "stock_quantity": 11734,
        "shade_count": 2,
        "variant_type": "shade",
        "sku": "MAYBELLINE_TCVEM",
        "image": "https://images-static.nykaa.com/media/catalog/product/tr:h-800,w-800,cm-pad_resize/a/3/a398c6030079236_MME-newadd_1.jpg",
        "category_path": [
          {
            "level": "[trimmed-depth]",
            "category_id": "[trimmed-depth]",
            "name": "[trimmed-depth]"
          },
          {
            "level": "[trimmed-depth]",
            "category_id": "[trimmed-depth]",
            "name": "[trimmed-depth]"
          },
          {
            "level": "[trimmed-depth]",
            "category_id": "[trimmed-depth]",
            "name": "[trimmed-depth]"
          }
        ],
        "offer_count": 1,
        "tags": [
          "BESTSELLER"
        ],
        "is_luxury": false
      },
      {
        "product_id": "809",
        "url": "https://www.nykaa.com/maybelline-volum-express-hyper-curl-mascara/p/809",
        "name": "Maybelline New York Volum Express Hyper Curl Mascara",
        "product_title": "Volum Express Hyper Curl Mascara",
        "brand": "Maybelline New York",
        "price_inr": 404,
        "mrp_inr": 449,
        "discount_percent": 10,
        "currency": "INR",
        "rating": 4.4,
        "rating_count": 368757,
        "in_stock": true,
        "stock_quantity": 14228,
        "shade_count": 2,
        "variant_type": "shade",
        "sku": "MAYBELLINE_VEHCM",
        "image": "https://images-static.nykaa.com/media/catalog/product/tr:h-800,w-800,cm-pad_resize/4/7/47e3cf96923492584206z_1.jpg",
        "category_path": [
          {
            "level": "[trimmed-depth]",
            "category_id": "[trimmed-depth]",
            "name": "[trimmed-depth]"
          },
          {
            "level": "[trimmed-depth]",
            "category_id": "[trimmed-depth]",
            "name": "[trimmed-depth]"
          },
          {
            "level": "[trimmed-depth]",
            "category_id": "[trimmed-depth]",
            "name": "[trimmed-depth]"
          }
        ],
        "offer_count": 1,
        "tags": [
          "BESTSELLER"
        ],
        "is_luxury": false
      }
    ],
    "total_results": 46,
    "listing_type": "search",
    "approximate_results": false,
    "query": "maybelline mascara"
  }
}
Actions

What the Nykaa API does

ActionDescriptionConcrete use caseKey params
searchSearch Nykaa exactly as a shopper does and get the product grid: the price actually paid, the printed MRP, the real discount, rating and rating count, shade count, stock and the product id. Two things this action does for you: it reads the same index the website shows (a cheaper keyword route on the same host answers 0 for 'nykaa foundation', where the site answers 116), and when Nykaa redirects a head term such as 'lipstick' to a category it follows that and tells you, so you get the catalogue instead of nothing. 🔴 Nykaa server-renders only the FIRST 20 matches of a search: `total_results` is its own count, and a deeper walk goes through `category` with the `category_id` this action hands back.Pricing teams call search to search Nykaa exactly as a shopper does and get the product grid.query, sort, price_min, price_max, min_discount, ...
categoryWalk one category with filters that bite: price band, minimum discount, minimum rating, one brand, colour, finish, concern, ingredient, formulation, skin type, country of origin, and any of Nykaa's seven sort orders. Same product rows as `search`, and unlike search this one pages all the way down. Category ids come from `categories`, from `suggest`, or from any product's `category_path`.Marketplace operators call category to get walk one category with filters that bite.category_id, page, sort, price_min, price_max, ...
brandOne brand's whole Nykaa catalogue, paged and filterable exactly like a category. Pass the brand id if you have it, or just the brand NAME and this action resolves it for you (one extra upstream lookup) and reports the id it used.Catalog enrichment teams call brand to get one brand's whole Nykaa catalogue, paged and filterable exactly like a category.brand, page, sort, price_min, price_max, ...
productThe full Nykaa product record: selling price and printed MRP with the real discount, brand, rating and how many people rated it, how many wrote a review, the 1-5 star histogram, Nykaa's own review summary and its ranked aspect sentiment ('Color Payoff: Positive'), the barcode (GTIN), seller, country of origin, expiry date, return window, live stock, shade count, every image, the description, ingredients and how-to-use.Retail analysts call product to get the full Nykaa product record.product_id
product/shadesEvery shade of one product — or every pack size, for products Nykaa sells in several weights — with ITS OWN price, MRP, discount, stock count and images. A Nykaa lipstick is one product id and thirty shades, each separately priced and separately in or out of stock, and this is the only place that is published. Shades with zero stock are returned with `in_stock: false` rather than dropped, which is also why `count` here can be larger than the `shade_count` on the product record — that one is Nykaa's own headline number and leaves discontinued shades out.Pricing teams call product/shades to get every shade of one product.product_id
product/reviewsThe customer reviews Nykaa publishes for a product: rating, title, the full text, the author display name, the date, how many shoppers found it helpful, whether the reviewer is a verified buyer, which shade they bought and the photos they posted. 🔴 Two honest limits. The source server-renders the same 20 reviews whatever page, sort or filter is asked for, so that is the ceiling per product and this action does not pretend to page. And those 20 are Nykaa's own 'most useful, verified buyer' selection, not a random sample: across 12 products measured, 240 of 240 were verified buyers, 240 of 240 carried photos and the ratings skew to 5. `reviews_available` is Nykaa's own total and `product` returns the real 1-5 star histogram behind it — read that, not these 20, for sentiment.Marketplace operators call product/reviews to get the customer reviews Nykaa publishes for a product.product_id
product/similarThe products Nykaa itself recommends beside this one — its 'Explore Similar Products' rail, returned as full product rows with prices and ratings. A competitive set around a product without having to guess a category. Nykaa does not build a rail for every product: on 12 products measured, 6 had 9-16 recommendations and 6 had none, and an empty `products` means the source publishes none, not an error.Catalog enrichment teams call product/similar to get the products Nykaa itself recommends beside this one.product_id
suggestNykaa's own autocomplete for a partial query: the search terms it would offer, the brands and categories it maps the term to WITH their ids, and the products it would show. The cheapest way to turn a brand or category NAME into the id the other actions take.Retail analysts call suggest to get nykaa's own autocomplete for a partial query.query
trendingWhat India is searching for on Nykaa right now — the popular-searches list the site prints in its own search box.Pricing teams call trending to get what India is searching for on Nykaa right now.none
categoriesNykaa's category tree: every department, category and sub-category with its id, name, URL and depth. These are the ids `category` takes. One call, cached for a day.Marketplace operators call categories to get nykaa's category tree.query, depth
brandsNykaa's A-Z brand index: every brand the marketplace carries, with the id its brand page is addressed by, its letter and its URL. These are the ids `brand` and `brand_id` take. One call, cached for a day.Catalog enrichment teams call brands to get nykaa's A-Z brand index.query, letter, limit
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/nykaa/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"maybelline mascara"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.nykaa.search with {"query":"maybelline mascara"}.
Use cases

Who uses this API and why

  • Indian price trackers record selling price and printed MRP as separate fields, so a promotion never overwrites the list price and the discount always agrees with both.
  • Beauty and FMCG brands watch their own and competitors' discounting per category with min_discount, and per shade with product/shades.
  • Shade-level stock alerts: a lipstick is one id and up to 63 separately stocked shades, each with its own quantity.
  • Review and sentiment products pull the rating histogram, Nykaa's aspect sentiment and 20 full customer reviews per product.
  • Assortment and category analysts size a market with category and brand - 337 categories, 4,035 brands, with Nykaa's own product counts behind every filter.
FAQ

Questions developers ask before integrating

Why does search return 20 products when total_results says 116?

Because that is what Nykaa publishes for a search. total_results is Nykaa's own count for the query and the API reports it honestly, but the site serves only its first page of search results. When you need the whole list, use category: search hands back category_id whenever Nykaa maps the term to a catalogue page, and category pages all the way down with the same rows and the same filters.

Do the filters actually apply, or are they accepted and ignored?

They apply, and each was checked against Nykaa's own facet counts. On the Lipstick category, 718 products unfiltered: price_max 499 gave 295, price 1000 to 1999 gave 84, min_discount 30 gave 92, min_rating 4 gave 558, the matte finish gave 454 and one brand id gave 26 - every one matching the count Nykaa itself prints on the filter. On the search kajal waterproof, 329 unfiltered: 104 under 300 INR, 35 discounted 30 percent or more, 278 rated 4 plus, 188 made in India. Sorts are Nykaa's own seven and it refuses any other, so none is offered that it ignores.

What is in the shade data that is not on the product record?

The price and the stock of each individual shade. A Nykaa lipstick is one product id and up to sixty-three shades, each separately priced and separately in or out of stock, and product/shades is where that is published: variant_id, name, sku, price_inr, mrp_inr, discount_percent, stock_quantity, in_stock and images. Shades with zero stock are returned with in_stock false rather than dropped, which is why count here can exceed the shade_count on the product record - that one is Nykaa's headline number and leaves discontinued shades out. Products sold in several weights return their pack sizes the same way.

How good is the review data, really?

Twenty reviews per product, and they are Nykaa's own most-useful, verified-buyer selection rather than a sample. Measured across 12 products: 240 of 240 were verified buyers, 240 of 240 carried photos, and the ratings skew hard to 5. Each one carries rating, title, the full text, the author display name, the date, the helpful count, the shade bought and the photo URLs. For the real distribution use rating_histogram on product: on one lipstick that is 917,515 five-star, 257,320 four, 111,839 three, 45,316 two and 103,406 one-star ratings, summing exactly to the rating count of 1,435,396.

How do I turn a brand or category name into an id?

suggest does it in one small call: it returns Nykaa's own autocomplete terms with the brand and category ids behind them - maybelline resolves to brand 596, serum to Hair Serum 320 and Face Serum 9579. brand also accepts a plain name and resolves it for you, including punctuation variants: dot and key, dot & key, l'oreal paris, e.l.f. cosmetics and m.a.c all resolve. For the full lists, categories returns 337 categories with ids and depth and brands returns the A-Z index of 4,035 brands.

What does Nykaa NOT publish?

No price history and no sales data, so a trend line has to come from your own snapshots over time. No questions and answers. No per-seller listings, because Nykaa is the seller on every product sampled. No stock by pincode. And some fields are category-bound rather than missing: across 240 products in 12 categories shade_count was filled on 68.3 percent (100 percent on Lipstick, 40 percent on Mascara, where most products come in one colour) and offer on 34.2 percent, since it is only set when a promotion is running. On 12 full product records the barcode was present on 10, ingredients on 9 and how-to-use on 8.

Which Nykaa is this - the beauty site, Nykaa Fashion, or Nykaa Man?

nykaa.com, the beauty and personal-care marketplace. Nykaa Fashion and Nykaa Man are separate storefronts and are not covered. Every price is INR as a number, with no country parameter, because there is one storefront behind this API.

A nonsense search returned products. Is that a bug?

No, it is Nykaa's search being fuzzy, and the API reports what Nykaa reports. On 2026-09-23 a nonsense word returned 59 products while a different nonsense word returned 0, and a typo such as lipstik returned 1,197 with did_you_mean set to lipstick. total_results is Nykaa's own count; read did_you_mean and approximate_results before treating a result set as an exact match.

What is the Nykaa API?

Nykaa API is a ReefAPI endpoint group for india's biggest beauty marketplace: mrp and selling price kept apart, shade-level stock, reviews with the rating histogram. It returns live JSON through POST requests under /nykaa/v1.

Is the Nykaa API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Nykaa calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Nykaa login or account?

No login to Nykaa is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Nykaa data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Nykaa API use?

Nykaa actions currently cost 1-2 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call Nykaa from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call nykaa actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / nykaa

Nykaa

India's biggest beauty marketplace: MRP and selling price kept apart, shade-level stock, reviews with the rating histogram.

base /nykaa/v111 endpoints
post/nykaa/v1/category1 credit

Walk one category with filters that bite: price band, minimum discount, minimum rating, one brand, colour, finish, concern, ingredient, formulation, skin type, country of origin, and any of Nykaa's seven sort orders. Same product rows as `search`, and unlike search this one pages all the way down. Category ids come from `categories`, from `suggest`, or from any product's `category_path`.

ParameterAllowed / rangeDescription
category_idrequired—Numeric category id (249 = Lipstick), or a nykaa.com category URL. A Nykaa brand page is a category too, so a brand id works here as well.
page = 1optional1–1-based page number. Nykaa serves 20 products a page and ignores every page-size parameter it is given, so this is the only way to go deeper. `total_results` says how far you can go.
sortoptionalpopularity · price_asc · price_desc · discount · customer_top_rated · new_arrival · nameResult order. Nykaa's own default is `popularity`. It refuses any order it does not know, so these seven are all that exist.
price_minoptional0–Lowest selling price in INR. Use with `price_max`; the source takes the pair as one band.
price_maxoptional1–Highest selling price in INR. Measured on the Lipstick category: 718 products unfiltered, 295 under 500, 84 between 1000 and 1999.
min_discountoptional0–90Only products discounted by at least this percentage. Measured on Lipstick: 718 unfiltered, 453 discounted at all, 184 at 20 % or more, 92 at 30 %, 36 at 40 %.
min_ratingoptional1–4Only products whose average customer rating is at least this many stars (1-4; Nykaa publishes no 5-only filter). Measured on the query 'kajal waterproof': 329 unfiltered, 309 at 3+, 278 at 4+.
brand_idoptional—Narrow to one brand. The id comes from `facets.brand` on this action (set `include_facets`) or from `brands`. Measured: brand 3899 in category 249 returns exactly the 26 the facet promises. Nykaa offers no brand facet on a KEYWORD search, only on a category or brand listing.
color_idoptional—Narrow to one colour family; the id comes from `facets.color`. 🔴 This one matches at SHADE level, so on a category its own count can exceed the unfiltered product count.
finish_idoptional—Finish, e.g. matte / creme / satin / glossy. Id from `facets.finish`. Measured on Lipstick: 454 of 718 are matte.
concern_idoptional—Skin or hair concern (acne, pigmentation, dryness, hair fall). Id from `facets.concern` — this is the axis Indian beauty shoppers actually buy on.
formulation_idoptional—Formulation (liquid, cream, powder, pencil, gel). Id from `facets.formulation`.
ingredient_idoptional—Hero ingredient (hyaluronic acid, niacinamide, salicylic acid, retinol). Id from `facets.ingredient_v1`.
gender_idoptional—Gender the product is listed for. Id from `facets.gender` (10711 female, 10712 unisex on the categories measured).
country_of_originoptional—ISO country code of manufacture, as Nykaa files it. Id from `facets.country_of_origin` — 'IN' and 'KR' are the two a buyer of Indian beauty data usually wants.
preference_idoptional—Claim or preference (paraben free, cruelty free, vegan, dermatologically tested). Id from `facets.preference`.
skin_type_idoptional—Skin type the product is listed for (oily, dry, normal, combination, sensitive). Id from `facets.skin_type`.
include_facets = falseoptional—Also return `facets`: every filter Nykaa offers for this listing — brands, colours, finishes, concerns, ingredients, formulations, price bands, ratings, discounts, country of origin — each with its id and the number of products behind it. This is where every `*_id` parameter above comes from.
Try in playground →
post/nykaa/v1/brand1 credit

One brand's whole Nykaa catalogue, paged and filterable exactly like a category. Pass the brand id if you have it, or just the brand NAME and this action resolves it for you (one extra upstream lookup) and reports the id it used.

ParameterAllowed / rangeDescription
brandrequired—A brand name ('maybelline', 'lakme', 'the ordinary'), its numeric Nykaa id, or a nykaa.com brand URL. A name costs one extra upstream lookup; an id costs none.
page = 1optional1–1-based page number. Nykaa serves 20 products a page and ignores every page-size parameter it is given, so this is the only way to go deeper. `total_results` says how far you can go.
sortoptionalpopularity · price_asc · price_desc · discount · customer_top_rated · new_arrival · nameResult order. Nykaa's own default is `popularity`. It refuses any order it does not know, so these seven are all that exist.
price_minoptional0–Lowest selling price in INR. Use with `price_max`; the source takes the pair as one band.
price_maxoptional1–Highest selling price in INR. Measured on the Lipstick category: 718 products unfiltered, 295 under 500, 84 between 1000 and 1999.
min_discountoptional0–90Only products discounted by at least this percentage. Measured on Lipstick: 718 unfiltered, 453 discounted at all, 184 at 20 % or more, 92 at 30 %, 36 at 40 %.
min_ratingoptional1–4Only products whose average customer rating is at least this many stars (1-4; Nykaa publishes no 5-only filter). Measured on the query 'kajal waterproof': 329 unfiltered, 309 at 3+, 278 at 4+.
brand_idoptional—Narrow to one brand. The id comes from `facets.brand` on this action (set `include_facets`) or from `brands`. Measured: brand 3899 in category 249 returns exactly the 26 the facet promises. Nykaa offers no brand facet on a KEYWORD search, only on a category or brand listing.
color_idoptional—Narrow to one colour family; the id comes from `facets.color`. 🔴 This one matches at SHADE level, so on a category its own count can exceed the unfiltered product count.
finish_idoptional—Finish, e.g. matte / creme / satin / glossy. Id from `facets.finish`. Measured on Lipstick: 454 of 718 are matte.
concern_idoptional—Skin or hair concern (acne, pigmentation, dryness, hair fall). Id from `facets.concern` — this is the axis Indian beauty shoppers actually buy on.
formulation_idoptional—Formulation (liquid, cream, powder, pencil, gel). Id from `facets.formulation`.
ingredient_idoptional—Hero ingredient (hyaluronic acid, niacinamide, salicylic acid, retinol). Id from `facets.ingredient_v1`.
gender_idoptional—Gender the product is listed for. Id from `facets.gender` (10711 female, 10712 unisex on the categories measured).
country_of_originoptional—ISO country code of manufacture, as Nykaa files it. Id from `facets.country_of_origin` — 'IN' and 'KR' are the two a buyer of Indian beauty data usually wants.
preference_idoptional—Claim or preference (paraben free, cruelty free, vegan, dermatologically tested). Id from `facets.preference`.
skin_type_idoptional—Skin type the product is listed for (oily, dry, normal, combination, sensitive). Id from `facets.skin_type`.
include_facets = falseoptional—Also return `facets`: every filter Nykaa offers for this listing — brands, colours, finishes, concerns, ingredients, formulations, price bands, ratings, discounts, country of origin — each with its id and the number of products behind it. This is where every `*_id` parameter above comes from.
Try in playground →
post/nykaa/v1/product1 credit

The full Nykaa product record: selling price and printed MRP with the real discount, brand, rating and how many people rated it, how many wrote a review, the 1-5 star histogram, Nykaa's own review summary and its ranked aspect sentiment ('Color Payoff: Positive'), the barcode (GTIN), seller, country of origin, expiry date, return window, live stock, shade count, every image, the description, ingredients and how-to-use.

ParameterAllowed / rangeDescription
product_idrequired—The product to read. Accepts the numeric id (367160) or a full nykaa.com product URL. Every listing row carries both.
Try in playground →
post/nykaa/v1/product/shades1 credit

Every shade of one product — or every pack size, for products Nykaa sells in several weights — with ITS OWN price, MRP, discount, stock count and images. A Nykaa lipstick is one product id and thirty shades, each separately priced and separately in or out of stock, and this is the only place that is published. Shades with zero stock are returned with `in_stock: false` rather than dropped, which is also why `count` here can be larger than the `shade_count` on the product record — that one is Nykaa's own headline number and leaves discontinued shades out.

ParameterAllowed / rangeDescription
product_idrequired—The product to read. Accepts the numeric id (367160) or a full nykaa.com product URL. Every listing row carries both.
Try in playground →
post/nykaa/v1/product/reviews2 credits

The customer reviews Nykaa publishes for a product: rating, title, the full text, the author display name, the date, how many shoppers found it helpful, whether the reviewer is a verified buyer, which shade they bought and the photos they posted. 🔴 Two honest limits. The source server-renders the same 20 reviews whatever page, sort or filter is asked for, so that is the ceiling per product and this action does not pretend to page. And those 20 are Nykaa's own 'most useful, verified buyer' selection, not a random sample: across 12 products measured, 240 of 240 were verified buyers, 240 of 240 carried photos and the ratings skew to 5. `reviews_available` is Nykaa's own total and `product` returns the real 1-5 star histogram behind it — read that, not these 20, for sentiment.

ParameterAllowed / rangeDescription
product_idrequired—The product to read. Accepts the numeric id (367160) or a full nykaa.com product URL. Every listing row carries both.
Try in playground →
post/nykaa/v1/product/similar1 credit

The products Nykaa itself recommends beside this one — its 'Explore Similar Products' rail, returned as full product rows with prices and ratings. A competitive set around a product without having to guess a category. Nykaa does not build a rail for every product: on 12 products measured, 6 had 9-16 recommendations and 6 had none, and an empty `products` means the source publishes none, not an error.

ParameterAllowed / rangeDescription
product_idrequired—The product to read. Accepts the numeric id (367160) or a full nykaa.com product URL. Every listing row carries both.
Try in playground →
post/nykaa/v1/suggest1 credit

Nykaa's own autocomplete for a partial query: the search terms it would offer, the brands and categories it maps the term to WITH their ids, and the products it would show. The cheapest way to turn a brand or category NAME into the id the other actions take.

ParameterAllowed / rangeDescription
queryrequired—A partial or full query, brand name or category name.
Try in playground →
post/nykaa/v1/categories2 credits

Nykaa's category tree: every department, category and sub-category with its id, name, URL and depth. These are the ids `category` takes. One call, cached for a day.

ParameterAllowed / rangeDescription
queryoptional—Only categories whose name contains this text (case-insensitive). Omit for the whole tree.
depthoptional1–6Only categories at this depth, counted in URL segments as Nykaa files them: 2 is a category ('makeup/face' = Face), 3 a sub-category ('makeup/face/face-foundation' = Foundation). Measured: 337 categories, depths 1-6, most at 2 and 3.
Try in playground →
post/nykaa/v1/brands2 credits

Nykaa's A-Z brand index: every brand the marketplace carries, with the id its brand page is addressed by, its letter and its URL. These are the ids `brand` and `brand_id` take. One call, cached for a day.

ParameterAllowed / rangeDescription
queryoptional—Only brands whose name contains this text (case-insensitive).
letteroptional—Only brands filed under this letter (A-Z, or # for names starting with a digit or symbol).
limit = 500optional1–10000Rows to return — the index holds several thousand brands. `total` always reports the full match count.
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.