Nykaa API

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.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a Nykaa endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
N
/nykaa/v1

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.

11 endpoints

search

2 cr

Search Nykaa exactly as a shopper does and get the product grid.

required
query
optional
sort, price_min, price_max, min_discount, min_rating, brand_id, color_id, finish_id, concern_id, formulation_id, ingredient_id, gender_id, country_of_origin, preference_id, skin_type_id, include_facets

category

1 cr

Walk one category with filters that bite.

required
category_id
optional
page, sort, price_min, price_max, min_discount, min_rating, brand_id, color_id, finish_id, concern_id, formulation_id, ingredient_id, gender_id, country_of_origin, preference_id, skin_type_id, include_facets

brand

1 cr

One brand's whole Nykaa catalogue, paged and filterable exactly like a category.

required
brand
optional
page, sort, price_min, price_max, min_discount, min_rating, brand_id, color_id, finish_id, concern_id, formulation_id, ingredient_id, gender_id, country_of_origin, preference_id, skin_type_id, include_facets

product

1 cr

The full Nykaa product record.

required
product_id
optional

product/shades

1 cr

Every shade of one product.

required
product_id
optional

product/reviews

2 cr

The customer reviews Nykaa publishes for a product.

required
product_id
optional

product/similar

1 cr

The products Nykaa itself recommends beside this one.

required
product_id
optional

suggest

1 cr

Nykaa's own autocomplete for a partial query.

required
query
optional

trending

0 cr

What India is searching for on Nykaa right now.

required
optional

categories

2 cr

Nykaa's category tree.

required
optional
query, depth

brands

2 cr

Nykaa's A-Z brand index.

required
optional
query, letter, limit

Every parameter, every allowed value →

Nykaa API

4 of 11 endpoints, ready to run

View docs ↗

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.

2 credits1 required · 3 optional
POST/nykaa/v1/search
idle
// 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.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 280 engines.

02
Call
POST /nykaa/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
0 or 1 or 2 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

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.

01search
POST/nykaa/v1/search
{"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.

02product
POST/nykaa/v1/product
{"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.

03shades
POST/nykaa/v1/product/shades
{"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.

04category
POST/nykaa/v1/category
{"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.

request
curl -X POST https://api.reefapi.com/nykaa/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{}'
response envelope
{
  "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 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.

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.

One market: India, prices in INR

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.

Two prices, never confused

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.

The discount is computed, not copied

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.

Shade-level prices and stock

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.

Filters bite, and Nykaa's own counts prove it

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.

Promotional banners are removed from listings

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.

Against us: search publishes 20 rows

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.

Against us: 20 reviews, and they are curated

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.

Against us: no price history and no sales data

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.

Against us: some fields are category-bound

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.

Against us: Nykaa's search is fuzzy

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.

11

endpoints

0/1/2

credits per call

01

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.

02

Beauty and FMCG brands watch their own and competitors' discounting per category with min_discount, and per shade with product/shades.

03

Shade-level stock alerts: a lipstick is one id and up to 63 separately stocked shades, each with its own quantity.

04

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 →
$0.67–$1.50 / 1,000 credits
  • 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
curl -X POST https://api.reefapi.com/nykaa/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/nykaa/v1/search",
    headers={"x-api-key": REEF_KEY},
    json={},
)
print(r.json()["data"])
FAQ

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.

Already paying for something else?Nykaa vs OxylabsNykaa vs ZyteNykaa vs Octoparse

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.

0/4000

No account needed · we reply from [email protected]

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.