# Nykaa Listings Scraper (`piotrv1001/nykaa-listings-scraper`) Actor

The Nykaa Listings Scraper extracts products from any Nykaa.com category, capturing names, brands, prices, MRP, discounts, ratings, stock status, offers, images, and optional ingredients, how-to-use, and country of origin — ideal for price monitoring, market research, and beauty competitor analysis.

- **URL**: https://apify.com/piotrv1001/nykaa-listings-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 4 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 product listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 🛍️ Nykaa Listings Scraper

Easily extract **beauty and personal-care product listings from [Nykaa](https://www.nykaa.com)** — India's largest cosmetics and beauty marketplace. The **Nykaa Listings Scraper** turns any Nykaa category page into clean, structured product data for **price monitoring, market research, and competitive analysis**.

Run it on the [Apify platform](https://apify.com) to get scheduling, a REST API, webhooks, and integrations with Google Sheets, Make, Zapier, and more — no infrastructure to manage.

### ✨ Features

- 🏷️ **Rich product data** — name, brand, current price, MRP, discount %, rating, number of ratings, stock status, seller, offers, images, and product URL.
- 📂 **Category-based extraction** — paste any Nykaa category URL and pull the entire catalog behind it, page after page.
- 🔬 **Optional deep details** — flip on **Scrape product details** to also collect full description, ingredients, how-to-use, country of origin, manufacturer, and review counts from each product page.
- 🔀 **Sort control** — scrape by popularity, new arrivals, price, top rated, or discount.
- ⚡ **Fast & reliable** — no account or login required; export to JSON, CSV, Excel, or HTML.

### 🛠️ How it works

1. **Enter category URLs** — open any category on nykaa.com (e.g. Skincare, Bath & Body, Makeup) and copy the page URL.
2. **Set your limit** — choose how many products to collect with **Max items** (use `0` for the entire category).
3. **Optionally enable details** — turn on **Scrape product details** for ingredients, how-to-use, and origin data.
4. **Run the scraper** — start the run and download structured product data instantly.

### 📥 Input

| Field | Description |
| --- | --- |
| **Category URLs** (`categoryUrls`) | One or more Nykaa category page URLs to scrape. |
| **Max items** (`maxItems`) | Maximum number of products to collect across all categories. `0` = no limit. Default `50`. |
| **Scrape product details** (`scrapeDetails`) | When enabled, visits each product page for extra fields. Slower and priced higher. Default `false`. |
| **Sort products by** (`sort`) | Order products are scraped within each category. Default `popularity`. |
| **Proxy configuration** (`proxyConfiguration`) | Optional proxy settings (Apify Proxy with Indian residential IPs recommended only at very large scale). |

#### Example input

```json
{
    "categoryUrls": [{ "url": "https://www.nykaa.com/skin/c/8377" }],
    "maxItems": 50,
    "scrapeDetails": false,
    "sort": "popularity"
}
````

### 📊 Sample output data

Each product is saved as a structured JSON object. Example (listing mode):

```json
[
    {
        "url": "https://www.nykaa.com/skin1004-madagascar-centella-tone-brightening-capsule-ampoule/p/18377218",
        "id": "18377218",
        "sku": "SKIN100000068",
        "name": "SKIN1004 Madagascar Centella Tone Brightening Capsule Serum",
        "brand": "SKIN1004",
        "price": 999,
        "finalPrice": 999,
        "discountPercent": 0,
        "currency": "INR",
        "rating": 4.3,
        "ratingCount": 5556,
        "inStock": true,
        "offerCount": 0,
        "offers": [],
        "imageUrl": "https://images-static.nykaa.com/media/catalog/product/.../77517748809576261417-1.jpg",
        "images": ["https://images-static.nykaa.com/...-1.jpg", "https://images-static.nykaa.com/...-2.jpg"],
        "productType": "configurable",
        "categoryId": "8377",
        "categoryName": "Buy Skincare Online"
    }
]
```

When **Scrape product details** is enabled, each record is additionally enriched with:

```json
{
    "description": "A calming, lightweight brightening serum with centella...",
    "ingredients": "Centella Asiatica Extract (77%), Butylene Glycol, Glycerin, Niacinamide...",
    "howToUse": "Drop an appropriate amount and evenly apply to the skin. Pat to promote absorption.",
    "countryOfOrigin": "South Korea",
    "manufacturerName": "Hankook Cosmetics Manufacturing Co., Ltd.",
    "manufacturerAddress": "74, Daeseong-Ro 547Beon-Gil, Samseong-Myeon, Eumseong-Gun, Korea",
    "variantsCount": 3
}
```

You can download the dataset in various formats such as JSON, CSV, Excel, or HTML.

#### Data fields

| Field | Description |
| --- | --- |
| `url` | Product page URL |
| `id` / `sku` | Nykaa product ID / SKU |
| `name` / `brand` | Product name and brand |
| `price` / `finalPrice` | MRP and current selling price (INR) |
| `discountPercent` | Discount percentage |
| `rating` / `ratingCount` | Average rating and number of ratings |
| `inStock` | Whether the product is currently purchasable |
| `offers` / `offerCount` | Active offers on the product |
| `imageUrl` / `images` | Primary image and full image gallery |
| `categoryId` / `categoryName` | Source category |
| `description`, `ingredients`, `howToUse` | Detail-mode only: rich product content |
| `countryOfOrigin`, `manufacturerName`, `manufacturerAddress` | Detail-mode only: compliance/origin info |
| `variantsCount`, `reviewCount` | Detail-mode only: variant and review counts |

### 💰 How much does it cost to scrape Nykaa?

This Actor uses a **pay-per-result** model, so you only pay for the data you collect:

| Event | What you get | Price |
| --- | --- | --- |
| **Product listing** | One product from a category (name, brand, price, rating, images, …) | **$0.003** |
| **Product detail** | One product enriched from its product page (ingredients, how-to-use, origin, …) | **$0.006** |

There is **no per-run start fee**. As an example, scraping **1,000 products** in listing mode costs about **$3**, or about **$6** with full product details enabled. Use the **Max items** input to cap your spend.

### 💡 Tips

- Start with a small **Max items** value to preview the data shape, then scale up.
- Keep **Scrape product details** off when you only need pricing, ratings, and availability — it's faster and cheaper.
- To cover an entire category, set **Max items** to `0`. Large categories can contain thousands of products.
- Schedule recurring runs to track price and discount changes over time.

### ❓ FAQ

**Is scraping Nykaa legal?**
This Actor collects only publicly available product information. You are responsible for how you use the data and for complying with Nykaa's Terms of Service and applicable laws. It does not collect personal data.

**Do I need a Nykaa account or proxies?**
No. The Actor works without any login. Proxies are optional and only suggested for very large-scale runs.

**Can I scrape by keyword search?**
The current version is built around category URLs, which together cover Nykaa's full catalog. Need keyword search or review extraction? Open an issue on the **Issues** tab and we'll consider it.

**Something not working?**
Report problems or request features via the **Issues** tab on the Actor's page.

# Actor input Schema

## `categoryUrls` (type: `array`):

Nykaa category page URLs to scrape products from. Open any category on nykaa.com and copy its URL (e.g. the Skincare or Bath & Body page).

## `maxItems` (type: `integer`):

Maximum number of products to scrape across all categories. Use 0 for no limit (scrapes the entire category, which can be thousands of products).

## `scrapeDetails` (type: `boolean`):

Visit each product page to extract extra fields such as full description, ingredients, how to use, country of origin, manufacturer and review summary. Slower and more expensive.

## `sort` (type: `string`):

Order in which products are scraped within each category.

## `proxyConfiguration` (type: `object`):

Proxy settings. Nykaa is an India-focused site; if you run into blocking at scale, enable Apify Proxy with residential IPs from India.

## Actor input object example

```json
{
  "categoryUrls": [
    {
      "url": "https://www.nykaa.com/skin/c/8377"
    }
  ],
  "maxItems": 50,
  "scrapeDetails": false,
  "sort": "popularity",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "categoryUrls": [
        {
            "url": "https://www.nykaa.com/skin/c/8377"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/nykaa-listings-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "categoryUrls": [{ "url": "https://www.nykaa.com/skin/c/8377" }] }

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/nykaa-listings-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "categoryUrls": [
    {
      "url": "https://www.nykaa.com/skin/c/8377"
    }
  ]
}' |
apify call piotrv1001/nykaa-listings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=piotrv1001/nykaa-listings-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Nykaa Listings Scraper",
        "description": "The Nykaa Listings Scraper extracts products from any Nykaa.com category, capturing names, brands, prices, MRP, discounts, ratings, stock status, offers, images, and optional ingredients, how-to-use, and country of origin — ideal for price monitoring, market research, and beauty competitor analysis.",
        "version": "0.0",
        "x-build-id": "nAF4hrWLmjKkYyWWP"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/piotrv1001~nykaa-listings-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-piotrv1001-nykaa-listings-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/piotrv1001~nykaa-listings-scraper/runs": {
            "post": {
                "operationId": "runs-sync-piotrv1001-nykaa-listings-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/piotrv1001~nykaa-listings-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-piotrv1001-nykaa-listings-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "categoryUrls"
                ],
                "properties": {
                    "categoryUrls": {
                        "title": "Category URLs",
                        "type": "array",
                        "description": "Nykaa category page URLs to scrape products from. Open any category on nykaa.com and copy its URL (e.g. the Skincare or Bath & Body page).",
                        "default": [
                            {
                                "url": "https://www.nykaa.com/skin/c/8377"
                            }
                        ],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of products to scrape across all categories. Use 0 for no limit (scrapes the entire category, which can be thousands of products).",
                        "default": 50
                    },
                    "scrapeDetails": {
                        "title": "Scrape product details",
                        "type": "boolean",
                        "description": "Visit each product page to extract extra fields such as full description, ingredients, how to use, country of origin, manufacturer and review summary. Slower and more expensive.",
                        "default": false
                    },
                    "sort": {
                        "title": "Sort products by",
                        "enum": [
                            "popularity",
                            "new_arrival",
                            "price_asc",
                            "price_desc",
                            "customer_top_rated",
                            "discount"
                        ],
                        "type": "string",
                        "description": "Order in which products are scraped within each category.",
                        "default": "popularity"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings. Nykaa is an India-focused site; if you run into blocking at scale, enable Apify Proxy with residential IPs from India.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
