India's beauty marketplace as JSON, with MRP and the real price kept apart
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 active endpoints, on 0, 1 and 2 credit tiers.
- POST/nykaa/v1/search
- POST/nykaa/v1/category
- POST/nykaa/v1/brand
- POST/nykaa/v1/product
- POST/nykaa/v1/product/shades
- POST/nykaa/v1/product/reviews
- POST/nykaa/v1/product/similar
- +4 more
What Nykaa endpoints does ReefAPI ship?
11 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Nykaa API
4 of 11 endpoints, ready to run
Nykaa products for a keyword: price_inr, mrp_inr, the real discount, rating and rating count, stock, shade count and the product id — plus Nykaa's own total_results for the query.
// Press "Try it" and this pane shows exactly what the // live site returned this second — including an empty // result, if that is the truth. No key, no account.
How the Nykaa API works
Nykaa is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 280 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Track an Indian beauty basket without mistaking a promotion for the list price
Nykaa prints an MRP and a selling price, sells one product in up to sixty-three separately stocked shades, and publishes a discount field that does not always agree with its own two prices. Four calls keep all of that straight.
{"query": "maybelline mascara"}20 products with product_id, price_inr, mrp_inr, discount_percent, rating, stock and shade count, plus Nykaa's own total_results for the query.
{"product_id": "367160"}Swiss Beauty Pure Matte Lipstick: 206 INR against a 229 MRP, barcode 8904325006957, 3,104 in stock, 30 shades, and a rating histogram of 1,435,396 ratings that sums exactly.
{"product_id": "367160"}All 30 shades with their own price, MRP and stock count, so a sold-out shade never hides behind a product-level in_stock.
{"category_id": "249", "min_discount": 30, "include_facets": true}92 of the 718 lipsticks discounted 30 percent or more — the same number Nykaa's own filter prints — with every other filter id and count returned alongside.
A basket where each product carries its selling price, its printed MRP and a discount that agrees with both, down to the individual shade, with Nykaa's own counts behind every filter you applied.
curl -X POST https://api.reefapi.com/nykaa/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{}'{
"ok": true,
"data": { … },
"meta": {
"api": "nykaa",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}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 product | price_inr | mrp_inr | discount_percent |
|---|---|---|---|
| Swiss Beauty Pure Matte Lipstick | 206 | 229 | 10 |
| Nykaa Cosmetics All Day Matte Liquid Foundation | 422 | 649 | 35 |
| Renee Cosmetics Hard Black Kajal Pen | 299 | 398 | 25 (Nykaa's own field says 8, returned as discount_percent_listed) |
| Charlotte Tilbury Matte Revolution | 3850 | 3850 | 0 |
| Biotique Bio Kelp Protein Shampoo | 406 | 780 | 48 |
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.
Which prices, which shades, which reviews, and what Nykaa does not publish
nykaa.com only — one marketplace, one currency. Measured on 2026-09-23 across 101 calls: 12 queries, 12 categories, 12 brands and 12 products in 12 departments, all 101 successful. Five of these lines go against us.
This engine reads nykaa.com, India's beauty and personal-care marketplace. Every price is INR as a number. There is no country parameter because there is no other storefront behind it, and Nykaa Fashion and Nykaa Man are separate sites that are not covered.
price_inr is what a shopper pays and mrp_inr is the printed list price; they are equal when there is no discount. Across all 101 calls no product came back with a price above its MRP, and search rows matched the full product record on id, price, MRP and brand for 6 of 6 products round-tripped.
Nykaa's own discount field contradicts its own prices on real rows: Renee Cosmetics Hard Black Kajal Pen is 398 MRP against 299 selling, which is 25 percent, and the field says 8. discount_percent is worked out from the two published prices so it always agrees with them, and Nykaa's figure is returned separately as discount_percent_listed when it disagrees.
A lipstick is one product id and up to 63 shades, each with its own price, MRP, discount and stock quantity. Zero-stock shades are returned with in_stock false rather than dropped, which is why the shade count here can exceed the shade_count on the product record.
On Lipstick, 718 unfiltered: 295 under 500 INR, 84 between 1000 and 1999, 92 discounted 30 percent or more, 558 rated 4 plus, 454 matte, 26 for one brand — each matching the count Nykaa prints on the filter itself. On the search kajal waterproof, 329 unfiltered: 104, 56, 35, 278 and 188 for price, discount, rating and country of origin. Only Nykaa's own seven sort orders are offered, because it refuses any other.
Nykaa injects banner tiles into its product grids, which is why a 20-a-page category answers 21 rows. They carry no id, no name and no price, so they are removed and counted in promo_tiles_dropped. After that, product id, name, brand, price, MRP, discount, image, URL, SKU, stock flag and category path were filled on 240 of 240 products across 12 categories.
total_results is Nykaa's own count for the query — 116 for nykaa foundation, 422 for hair serum for frizzy hair — but the site serves only the first page of a search. For a deep walk use category or brand, which page all the way down; search returns category_id whenever Nykaa maps the term to a catalogue page.
product/reviews returns the 20 reviews Nykaa publishes, and they are its most-useful, verified-buyer selection rather than a sample: across 12 products, 240 of 240 were verified buyers, 240 of 240 carried photos, and the ratings skew to 5. Read rating_histogram on product for the real distribution.
Nykaa publishes neither, so this API returns current prices and live stock and does not invent a trend line. If you need one, it has to come from your own snapshots over time.
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 of 12, ingredients on 9 of 12 and how-to-use on 8 of 12.
A nonsense word can still return products: on 2026-09-23 one returned 59 and another returned 0, and the typo lipstik returned 1,197 with did_you_mean set to lipstick. total_results is Nykaa's own count and the API does not second-guess it — read did_you_mean and approximate_results before treating a result set as exact.
What people build with Nykaa
The jobs this data is most often used for.
endpoints
credits per call
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.
What Nykaa data costs
The cheapest call here is 0 credits, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 280 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/nykaa/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{}'import requests
r = requests.post(
"https://api.reefapi.com/nykaa/v1/search",
headers={"x-api-key": REEF_KEY},
json={},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Nykaa.
Get a free key →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.
116 E-commerce & Marketplaces APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Nykaa, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 279 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-23.