# Myntra Products Scraper (`automation-lab/myntra-catalog-monitor`) Actor

Extract Myntra product prices, SKU inventory, variants, ratings, and selected public reviews for recurring catalog monitoring.

- **URL**: https://apify.com/automation-lab/myntra-catalog-monitor.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Myntra Products Scraper

Extract **Myntra products** as structured catalog snapshots with current prices, discounts, size and SKU availability, seller inventory counts, color variants, rating aggregates, and selected public reviews.

Use this Actor for one-time catalog research or schedule it for recurring merchandising monitoring.

### What does Myntra Products Scraper do?

The Actor accepts:

- Myntra search terms;
- Myntra category or search URLs;
- exact public Myntra product URLs.

For every accepted product it opens the public product page and joins:

- catalog identity and taxonomy;
- current price and MRP;
- size-level SKU availability;
- public seller inventory counts when Myntra exposes them;
- color alternatives;
- rating and review aggregates;
- a bounded selection of public review text.

The result is one product snapshot per default-dataset item.

That format works well for spreadsheets, databases, BI tools, scheduled comparisons, and downstream automation.

### Who is it for?

#### Merchandising teams

Track availability by size and identify products with thin or exhausted stock.

#### Pricing analysts

Capture current price, MRP, and calculated discount percentage at repeatable intervals.

#### Fashion marketplace researchers

Compare brands, categories, colors, ratings, and assortments returned by supported Myntra searches.

#### Review and customer-insight teams

Join rating totals and selected public reviews to each product instead of operating a separate review-only workflow.

#### Developers and data engineers

Receive typed JSON records with stable product IDs, SKU IDs, source URLs, and timestamps.

### Why use this Actor?

- **Product-level snapshots:** listing results are enriched from each public product page.
- **SKU detail:** size variants contain availability, inventory, price, and seller identifiers.
- **Unified catalog and review data:** review aggregates and selected reviews stay with the product.
- **Two input routes:** search broadly or target exact Myntra URLs.
- **Monitoring-ready records:** stable IDs and `scrapedAt` support change detection between runs.
- **Bounded execution:** `maxItems` and `maxReviewsPerProduct` keep scope and cost predictable.
- **India-aware access:** the default proxy configuration uses Apify Residential proxies in India.

### What Myntra data can I extract?

| Field | Meaning |
| --- | --- |
| `productId` | Stable Myntra product/style ID |
| `url` | Canonical public product URL |
| `name` | Product name |
| `brand` | Myntra brand label, when present |
| `category` | Product article type/category |
| `gender` | Catalog gender label |
| `color` | Base color |
| `mrp` | Maximum retail price in INR |
| `price` | Current displayed selling price in INR |
| `discountPercent` | Discount calculated from MRP and current price |
| `available` | Whether at least one SKU is available |
| `inventoryCount` | Sum of public sellable inventory counts across variants |
| `variants` | Size/SKU records with stock and seller data |
| `colorVariants` | Related color style IDs and URLs |
| `rating` | Average public rating |
| `ratingCount` | Number of ratings |
| `reviewCount` | Number of public reviews reported by Myntra |
| `reviews` | Selected public review records |
| `imageUrls` | Public product image URLs |
| `manufacturer` | Manufacturer text, when exposed |
| `countryOfOrigin` | Country-of-origin label |
| `sourceType` | `search` or `url` |
| `searchTerm` | Search term that discovered the product, or `null` |
| `scrapedAt` | UTC extraction timestamp |

### Getting started

1. Open the Actor input page.
2. Keep the prefilled `dresses` search or enter your own Myntra search terms.
3. Optionally add category, search, or exact `/buy` product URLs.
4. Set the maximum number of product snapshots.
5. Choose how many selected public reviews to include.
6. Keep the default India Residential proxy configuration.
7. Start the run.
8. Open the **Myntra catalog snapshots** dataset view.
9. Export JSON, CSV, Excel, XML, or another supported dataset format.

A small first run is recommended before scheduling a larger recurring job.

### Input parameters

#### `searchTerms`

An array of searches to run on Myntra.

Examples:

- `dresses`
- `women's kurtas`
- `men's running shoes`

Search terms are normalized into Myntra public search paths.

#### `startUrls`

Optional public `https://www.myntra.com` URLs.

Supported URL jobs:

- an exact product `/buy` URL returns that product;
- a category or search URL discovers products and enriches each product page.

Other domains and non-HTTPS URLs fail validation.

#### `maxItems`

Maximum complete product snapshots saved across all inputs.

- Minimum: `1`
- Maximum: `1000`
- Default: `10`

The Actor stops fetching product details once this limit is reached.

#### `maxReviewsPerProduct`

Maximum selected top reviews included in each product record.

- Minimum: `0`
- Maximum: `10`
- Default: `3`

Set it to `0` to omit review text while preserving rating and review counts.

Myntra chooses which reviews appear in public product-page state; this input does not promise every review.

#### `proxyConfiguration`

The default uses:

- Apify Proxy;
- Residential group;
- India country code.

Myntra commonly returns a maintenance page to direct or datacenter traffic.

Removing the India-capable Residential route can make otherwise valid inputs fail.

### Input examples

#### Search Myntra dresses

```json
{
  "searchTerms": ["dresses"],
  "maxItems": 5,
  "maxReviewsPerProduct": 2
}
```

#### Extract one exact product

```json
{
  "searchTerms": [],
  "startUrls": [
    {
      "url": "https://www.myntra.com/ethnic-dresses/sangria/sangria-girls-foil-printed-fit--flare-maxi-length-dress/32651082/buy"
    }
  ],
  "maxItems": 1,
  "maxReviewsPerProduct": 3
}
```

#### Prepare a recurring inventory snapshot

```json
{
  "searchTerms": ["women's kurtas"],
  "maxItems": 20,
  "maxReviewsPerProduct": 0
}
```

Schedule that input daily or weekly, then compare records by `productId` and variant `skuId`.

### Output example

This abbreviated record reflects a real local run; live price and inventory values can change:

```json
{
  "productId": 32651082,
  "url": "https://www.myntra.com/ethnic-dresses/sangria/sangria-girls-foil-printed-fit--flare-maxi-length-dress/32651082/buy",
  "name": "Sangria Girls Foil Printed Fit & Flare Maxi Length Dress",
  "brand": "Sangria",
  "category": "Ethnic Dresses",
  "gender": "Girls",
  "color": "Purple",
  "mrp": 2999,
  "price": 918,
  "discountPercent": 69,
  "available": true,
  "inventoryCount": 278,
  "variants": [
    {
      "skuId": 105213282,
      "size": "7-8Y",
      "available": true,
      "inventoryCount": 54,
      "mrp": 2999,
      "price": 918,
      "sellerId": 21018
    }
  ],
  "rating": 4.164750957854406,
  "ratingCount": 261,
  "reviewCount": 46,
  "reviews": [
    {
      "reviewId": "34e09d01-2803-4792-9567-8a9edd1deefc",
      "userName": "Pooja_happy_go_lucky_girl",
      "rating": 5,
      "text": "My daughter loved it ❤️",
      "upvotes": 0,
      "downvotes": 1,
      "reviewedAt": "2026-01-12T05:15:55.000Z",
      "imageUrls": []
    }
  ],
  "sourceType": "url",
  "searchTerm": null,
  "scrapedAt": "2026-08-03T05:00:00.000Z"
}
```

Arrays in the full record can contain additional sizes, colors, reviews, and images.

### How much does it cost to monitor Myntra products?

This Actor uses pay-per-event pricing:

- a one-time **$0.005 Start** event per run;
- one **Product snapshot** event for each complete product saved.

The current BRONZE product price is **$0.003992 per product snapshot**.

Examples at BRONZE pricing:

| Complete products | Start | Product events | Total Actor charge |
| ---: | ---: | ---: | ---: |
| 1 | $0.005 | $0.003992 | $0.008992 |
| 10 | $0.005 | $0.039920 | $0.044920 |
| 100 | $0.005 | $0.399200 | $0.404200 |

Selected reviews and nested SKU variants do not create separate charge events.

Higher Apify subscription tiers receive the active tier discount shown on the Actor page.

Proxy and compute are paid by the Actor under PPE; users pay the displayed Actor events.

### Monitoring price and inventory changes

Each run is a current snapshot, not a historical database.

A reliable monitoring workflow is:

1. save each run's dataset;
2. key products by `productId`;
3. key variants by `skuId`;
4. compare `price`, `mrp`, `available`, and `inventoryCount`;
5. alert only when relevant values change;
6. retain `scrapedAt` as the observation time.

Apify schedules can run the same input hourly, daily, weekly, or on another cadence.

Webhooks can notify your pipeline when the run succeeds or fails.

### Export to spreadsheets and data pipelines

The default dataset can be exported directly.

Common workflows include:

- CSV or Excel for merchandising review;
- JSON for application ingestion;
- scheduled dataset export to cloud storage;
- Make or Zapier automation after run completion;
- webhook-triggered ETL;
- database upserts by `productId` and `skuId`.

Nested arrays are preserved in JSON.

For flat spreadsheet analysis, expand `variants` in your ETL tool into one row per SKU.

### Run with the Apify API

Replace `YOUR_TOKEN` with an Apify API token.

#### cURL

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~myntra-catalog-monitor/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "searchTerms": ["dresses"],
    "maxItems": 5,
    "maxReviewsPerProduct": 2
  }'
```

#### JavaScript

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/myntra-catalog-monitor').call({
  searchTerms: ['dresses'],
  maxItems: 5,
  maxReviewsPerProduct: 2,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python

```python
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/myntra-catalog-monitor').call(run_input={
    'searchTerms': ['dresses'],
    'maxItems': 5,
    'maxReviewsPerProduct': 2,
})

items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

For asynchronous integrations, start a run and poll its status or use a webhook.

### Use with Apify MCP

Add the Actor to Claude Code:

```bash
claude mcp add --transport http apify \
  "https://mcp.apify.com?tools=automation-lab/myntra-catalog-monitor"
```

**Claude Desktop setup**

Add this server entry to the Claude Desktop MCP configuration:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=automation-lab/myntra-catalog-monitor"
    }
  }
}
```

**Cursor setup**

Use the same HTTP URL in Cursor's MCP settings and name the server `apify`.

**VS Code setup**

Add the same HTTP server URL to your VS Code MCP configuration, then enable the `automation-lab/myntra-catalog-monitor` tool.

Example prompts:

- “Run the Myntra catalog monitor for dresses and return five products.”
- “Extract this Myntra product URL and summarize stock by size.”
- “Run the women's kurtas snapshot and compare prices with yesterday's saved data.”

The MCP server invokes the same Actor input contract documented above.

### Reliability and retries

Myntra can return a maintenance or challenge page with HTTP 200.

The Actor treats that response as a failure rather than as an empty valid result.

It validates:

- response status;
- known maintenance markers;
- the presence of structured Myntra application state;
- required product identity fields.

A failed request rotates the residential proxy session and retries with bounded backoff.

After three failed session attempts, the run fails clearly so monitoring systems can alert.

### Limits and expected behavior

- Myntra is a live source; products, prices, rankings, and stock can change at any time.
- Search order follows Myntra's public result order at extraction time.
- Public inventory counts may be absent for unavailable or undisclosed seller variants.
- `inventoryCount` sums the public counts present in the product page; it is not warehouse-wide private inventory.
- Selected review text comes from the reviews embedded by Myntra on the public product page.
- This Actor does not log in, purchase products, apply private coupons, or access customer accounts.
- Search terms that naturally return no products produce an empty dataset.
- A blocked or structurally changed page causes a failed run, not fabricated output.
- The maximum run size is 1,000 products.

### Troubleshooting

#### The run reports a maintenance or blocked response

Keep the default Apify Residential proxy group and India country setting.

Avoid replacing it with direct or datacenter traffic.

Retry later if Myntra is undergoing actual maintenance.

#### My category URL returns different products later

Myntra catalog ordering and availability are dynamic.

Use exact product URLs when the workflow requires a stable entity set.

#### Some sizes have `inventoryCount: null`

Myntra may expose availability without a public seller quantity.

Treat `available` as the status and `inventoryCount` as optional public detail.

#### I need every review

This Actor returns a selected bounded set of reviews exposed in product-page state plus the complete review count.

It does not claim full review pagination.

#### The run is too large

Lower `maxItems`, split searches into separate tasks, or schedule smaller category-specific runs.

### Responsible use and legality

This Actor extracts information available on public Myntra pages.

You are responsible for ensuring that your use complies with:

- Myntra's applicable terms and policies;
- local copyright, database, and privacy law;
- fair-use and rate expectations;
- your organization's retention and security policies.

Do not use public reviewer data to profile, harass, identify, or contact individuals.

Avoid collecting more review text than the stated business purpose requires.

Do not treat catalog data as a guarantee of price, stock, delivery, or authenticity.

Myntra is a trademark of its owner; this Actor is an independent automation tool and is not affiliated with Myntra.

### Related Automation Lab Actors

- [Zara Product Details Scraper](https://apify.com/automation-lab/zara-product-details-scraper) for structured Zara product details.
- [Amazon Product Search Results Scraper](https://apify.com/automation-lab/amazon-product-search-results-scraper) for Amazon search-result research.
- [Lazada Products, Sellers & Reviews Scraper](https://apify.com/automation-lab/lazada-products-scraper) for marketplace product, seller, and review workflows.

These Actors cover different sources; they do not share Myntra IDs or inventory semantics.

### FAQ

#### Does this Actor monitor changes automatically?

It creates timestamped snapshots.

Use an Apify schedule and compare snapshots in your database, spreadsheet, or automation workflow.

#### Can I use a Myntra product URL directly?

Yes.

Pass a public HTTPS Myntra `/buy` URL in `startUrls` and set `maxItems` to the required number.

#### Are reviews charged separately?

No.

Selected reviews are nested in the charged product snapshot and have no separate event.

#### Does it support Myntra login or account-only data?

No.

The Actor intentionally supports public catalog and product data only.

#### Which currency is used?

Myntra product `price` and `mrp` values are reported in Indian rupees (INR).

Actor event prices shown by Apify are in US dollars.

#### Why is an India Residential proxy required?

Direct and datacenter requests commonly receive a maintenance body instead of catalog data.

India Residential sessions returned the complete public structured product state during implementation and validation.

# Actor input Schema

## `searchTerms` (type: `array`):

Product searches such as dresses, women's kurtas, or men's running shoes.

## `startUrls` (type: `array`):

Optional public myntra.com search, category, or /buy product URLs. Product URLs return that exact item; listing URLs discover products.

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

Stop after saving this many complete product snapshots.

## `maxReviewsPerProduct` (type: `integer`):

Maximum top public reviews embedded in each product snapshot. Use 0 to omit review text while retaining aggregates.

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

Myntra requires India-capable residential traffic. The default uses Apify Residential proxies in India.

## Actor input object example

```json
{
  "searchTerms": [
    "dresses"
  ],
  "startUrls": [],
  "maxItems": 10,
  "maxReviewsPerProduct": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IN"
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing all complete product snapshots saved by this run.

# 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 = {
    "searchTerms": [
        "dresses"
    ],
    "startUrls": [],
    "maxItems": 10,
    "maxReviewsPerProduct": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/myntra-catalog-monitor").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 = {
    "searchTerms": ["dresses"],
    "startUrls": [],
    "maxItems": 10,
    "maxReviewsPerProduct": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/myntra-catalog-monitor").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 '{
  "searchTerms": [
    "dresses"
  ],
  "startUrls": [],
  "maxItems": 10,
  "maxReviewsPerProduct": 3
}' |
apify call automation-lab/myntra-catalog-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/myntra-catalog-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/PuYhclTCgA4z2rGHE/builds/jcysr4uwzbwDKmqhl/openapi.json
