Nykaa Product Scraper avatar

Nykaa Product Scraper

Pricing

from $0.19 / 1,000 nykaa products

Go to Apify Store
Nykaa Product Scraper

Nykaa Product Scraper

Extract Nykaa category products with prices, discounts, ratings, stock, offers, images, SKUs, and source context for recurring market monitoring.

Pricing

from $0.19 / 1,000 nykaa products

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Extract structured product data from public Nykaa category catalogs.

Turn Nykaa category URLs or numeric category IDs into an export-ready dataset of products, brands, prices, discounts, ratings, stock signals, offers, images, and canonical links.

Use the Actor once for market research or schedule it for recurring Indian beauty ecommerce monitoring.

What does Nykaa Product Scraper do?

Nykaa Product Scraper reads anonymous product listings from Nykaa category catalogs.

Give it one or more category URLs, choose a result limit, and receive normalized product rows in the Apify dataset.

The Actor follows catalog pagination automatically.

It deduplicates products by Nykaa product ID.

It does not require a Nykaa login.

The current version focuses on category catalogs, the route verified for reliable anonymous access.

Who is it for?

💄 Beauty brands can compare price positioning, promotions, ratings, and availability across categories.

🏪 Retail and marketplace teams can monitor assortment gaps and category movements.

📊 Pricing analysts can schedule snapshots and compare MRP with current selling price.

🔬 Market researchers can export structured category data instead of copying product cards manually.

🧑‍💻 Data engineers can feed a stable JSON schema into warehouses, alerts, and dashboards.

🛒 Agencies and consultants can build repeatable category reports for Indian beauty clients.

Why use this Nykaa scraper?

The normal Nykaa site is protected and catalog responses can be large.

This Actor packages the working request route, India proxy configuration, pagination, response validation, normalization, retries, and deduplication into one run.

You get consistent field names even when Nykaa's source names differ.

Failed extraction does not silently produce an empty successful run.

Small defaults make the first test inexpensive.

Apify handles scheduling, API access, storage, exports, webhooks, and integrations around the scraper.

What data can you extract?

FieldDescription
sourceSource website, nykaa.com
categoryIdNumeric Nykaa category identifier
categoryUrlCategory URL associated with the input
productIdNykaa product identifier
skuProduct SKU when available
nameProduct name
brandBrand name
mrpMaximum retail price
currentPriceCurrent listed selling price
discountPercentListed discount percentage
ratingProduct rating
ratingCountNumber of ratings
stockSource stock value from gludo_stock
offerCountNumber of attached offers
offersStructured offer details
imageUrlMain product image URL
productUrlCanonical Nykaa product URL
categoryValuesSource taxonomy values when supplied
scrapedAtUTC extraction timestamp

How to scrape Nykaa category products

  1. Open the Actor input page.

  2. Paste a Nykaa category URL containing /c/<number>.

  3. Set Maximum products to the number of unique rows you need.

  4. Keep the recommended India Residential proxy setting.

  5. Click Start.

  6. Open the default dataset when the run succeeds.

  7. Export the rows as JSON, CSV, Excel, XML, or another supported format.

Input

A small category run looks like this:

{
"categoryUrls": [
"https://www.nykaa.com/skin/moisturizers/serums-essence/c/8397"
],
"maxItems": 20
}

You can use numeric IDs instead:

{
"categoryIds": ["8397"],
"maxItems": 10
}

You may combine URLs and IDs in one run.

Duplicate category IDs are processed only once.

If no input is stored, the Actor uses the same small category shown in the input prefill.

Input options

categoryUrls

An array of Nykaa category URLs.

Each URL must use nykaa.com and contain a numeric category segment such as /c/8397.

URLs outside Nykaa fail validation.

categoryIds

An array of numeric Nykaa category IDs represented as strings.

This is convenient for API-driven jobs that already store category identifiers.

maxItems

The maximum number of unique products saved across all supplied categories.

Allowed range: 1 to 10,000.

Default: 20.

proxyConfiguration

Apify Residential proxy in India is preselected because direct catalog requests are normally blocked.

Change it only if your custom proxy is known to access Nykaa reliably.

Output example

{
"source": "nykaa.com",
"categoryId": "8397",
"categoryUrl": "https://www.nykaa.com/skin/moisturizers/serums-essence/c/8397",
"productId": "19917670",
"sku": "DALBA00000011",
"name": "d'Alba piedmont White Truffle First Spray Serum",
"brand": "d'Alba Piedmont",
"mrp": 1900,
"currentPrice": 1425,
"discountPercent": 25,
"rating": 4.5,
"ratingCount": 4060,
"stock": true,
"offerCount": 3,
"offers": [],
"imageUrl": "https://images-static.nykaa.com/media/catalog/product/example.jpg",
"productUrl": "https://www.nykaa.com/example/p/19917670",
"categoryValues": [],
"scrapedAt": "2026-07-19T04:19:46.575Z"
}

Offer objects are preserved as structured source data and may contain campaign conditions, dates, labels, and discount rules.

Fields unavailable for a particular product are returned as null or an empty array.

How much does it cost to scrape Nykaa products?

The Actor uses pay-per-event pricing.

A small start fee is charged once per run, followed by one product event for each dataset row.

Current provisional pricing starts at $0.005 per run and tier-dependent product pricing shown in the Apify Console.

Higher Apify subscription tiers receive lower per-product prices.

Residential proxy traffic is included in your normal Apify platform usage and is separate from Actor PPE charges.

For cost control, test with 10–20 products before scheduling larger category snapshots.

The Console shows the maximum estimated charge before a run and the actual charged events afterward.

Price and assortment monitoring workflow

Schedule the Actor daily or weekly with a fixed list of category IDs.

Store every run in a named dataset or export it to your warehouse.

Join snapshots by productId or sku.

Calculate changes in currentPrice, discountPercent, stock, and offerCount.

Trigger alerts when a tracked brand appears, disappears, goes out of stock, or changes price.

This workflow is useful for repeat monitoring because product identifiers remain stable across snapshots.

Tips for reliable runs

✅ Start with one known category and a low item limit.

✅ Keep the default India residential proxy configuration.

✅ Use numeric IDs when building automated pipelines.

✅ Schedule categories separately when you need independent completion and cost records.

✅ Treat offer structures as source data that can evolve over time.

✅ Use scrapedAt to distinguish snapshots.

✅ Inspect logs if a category unexpectedly returns no valid products.

Integrations

Connect the dataset to Google Sheets for analyst-friendly price trackers.

Send completed-run webhooks to Slack or Microsoft Teams for stock and promotion alerts.

Load JSON rows into BigQuery, Snowflake, or PostgreSQL for historical analysis.

Use Make or Zapier to route newly observed products into review queues.

Call the Actor from Airflow, Dagster, or a cron job for scheduled category snapshots.

Use the Apify API to start a run whenever your internal category watchlist changes.

API usage with JavaScript

Install the official client:

$npm install apify-client

Run the Actor and read its dataset:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/nykaa-product-scraper').call({
categoryIds: ['8397'],
maxItems: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

API usage with Python

Install the client:

$pip install apify-client

Then call the Actor:

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/nykaa-product-scraper').call(run_input={
'categoryIds': ['8397'],
'maxItems': 20,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

API usage with cURL

Start a run:

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~nykaa-product-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"categoryIds":["8397"],"maxItems":20}'

Fetch items from a completed run's dataset:

$curl "https://api.apify.com/v2/datasets/DATASET_ID/items?clean=true&format=json"

Do not expose your Apify token in client-side code or public repositories.

Use with Apify MCP

Connect the Actor to Claude and other MCP-compatible clients through Apify MCP.

Claude Code setup

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/nykaa-product-scraper"

Claude Desktop setup

Add an HTTP MCP server using:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/nykaa-product-scraper"
}
}
}

Cursor setup

Open Settings → Tools & MCP → New MCP Server and use the same Apify MCP URL shown above.

VS Code setup

Add an HTTP MCP server named apify to your workspace MCP configuration with the same actor-specific URL.

Example prompts:

  • “Scrape 20 products from Nykaa category 8397 and summarize the discount range.”
  • “Collect this Nykaa category and group products by brand.”
  • “Run my Nykaa category monitor and flag products whose current price is below MRP.”

Scheduling and webhooks

Create an Apify schedule from a successful run or saved task.

Daily schedules suit active promotion monitoring.

Weekly schedules suit broader assortment research.

Attach a webhook for ACTOR.RUN.SUCCEEDED to notify your pipeline.

Use separate tasks when categories need different limits or schedules.

Review recurring costs after the first representative scheduled run.

Data quality

The Actor validates the JSON envelope before reading products.

Records missing both a product ID and product name are skipped.

Numeric price and rating fields are normalized to numbers where possible.

Product and image links are converted to absolute URLs.

Products are deduplicated by source product ID across the run.

The Actor preserves source offer objects rather than guessing their meaning.

Nykaa can update catalog values between runs, so snapshots represent extraction time rather than historical truth.

Limitations

Only anonymous category catalog extraction is supported in this version.

Keyword search is not advertised or accepted as input.

Product detail pages, ingredients, reviews, and shade-level enrichment are not fetched.

The Actor uses popularity order because that request shape has been verified.

A category ID that no longer exists may produce a failed run rather than an empty dataset.

Nykaa can change its private response envelope or anti-bot controls without notice.

Very large runs take longer and consume more residential proxy bandwidth.

Proxy and privacy

Nykaa blocks ordinary direct catalog traffic, so the Actor defaults to an Indian residential exit.

Each bounded retry rotates the proxy session for the failed page.

The Actor accesses public product catalog data and does not log into Nykaa.

Do not provide account credentials, personal customer information, or private URLs as input.

Run outputs may contain commercial catalog information but should not contain customer data.

Protect your Apify API token and downstream exports using normal access controls.

Scraping public catalog information can be lawful in many contexts, but laws and contractual restrictions vary.

You are responsible for your use case, collection volume, storage, and downstream processing.

Review Nykaa's terms and applicable laws before production use.

Avoid harmful load, circumvention beyond normal access, resale that violates rights, and collection of personal data.

This Actor is a technical tool and not legal advice.

Troubleshooting

Why did the run say no valid products were found?

Check that every URL is on nykaa.com and contains /c/<numeric-id>.

Try the same category with a small maxItems value and the default India proxy.

The category may have moved, become empty, or returned a changed response shape.

Why does a direct request work differently?

Nykaa uses anti-bot controls and often blocks direct cloud or datacenter traffic.

Keep the prefilled Residential proxy configuration unless you have a tested custom alternative.

Why are some fields null or arrays empty?

Nykaa does not supply every value for every listing.

The Actor preserves missing values rather than inventing product facts.

Why did fewer rows arrive than maxItems?

maxItems is a ceiling, not a promise.

A category can contain fewer unique valid products than the requested limit.

Explore other Automation Lab ecommerce tools when your research extends beyond Nykaa:

Use only actors whose source and output contract match your workflow.

Frequently asked questions

Does it require a Nykaa account?

No. The supported category catalog workflow is anonymous.

Can I scrape several categories?

Yes. Add multiple category URLs, IDs, or both. The global result limit applies across them.

Can I search for keywords?

Not in the current version. Use verified category URLs or IDs.

Does it scrape all pages automatically?

Yes, until it reaches the category end or your maxItems limit.

Can I export to CSV or Excel?

Yes. Use the dataset export controls or API format parameters.

Can I schedule recurring snapshots?

Yes. Save the input as an Apify task, then attach a schedule and optional webhook.

How are duplicate products handled?

The first occurrence of each Nykaa product ID is saved; later duplicates are skipped.

What happens if Nykaa blocks a request?

The Actor retries the page with a fresh proxy session up to three times, then moves on or fails if no category succeeds.

Start collecting Nykaa catalog data

Use the prefilled category for a 20-product first run.

Review the resulting prices, stock values, offers, and links.

Then replace the example with the category IDs that matter to your monitoring workflow.

Schedule the Actor when you are satisfied with field coverage and run cost.