# Lenskart Scraper: Eyewear Prices, Specs & Variants (`getascraper/lenskart-scraper`) Actor

Download Lenskart's complete eyewear catalog: prices, discounts, frame shapes, color options, ratings, and stock levels per product. Covers India, Singapore, UAE, and US stores. Built for price tracking, competitor research, and product analysis. $4.99 per 1,000 products.

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

## Pricing

from $2.24 / 1,000 product records

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

## 👓 Lenskart Scraper: Eyewear Prices, Specs & Variants

**Get Lenskart's complete eyewear catalog in minutes, with nothing to install or build.** Download prices, discounts, frame shapes, color options, stock levels, and ratings for every product across India, Singapore, UAE, and US stores. The only dedicated Lenskart scraper on the Apify Store. The first 50 results of every run are free, with pricing set at $4.99 per 1,000 products.

***

### 💡 Why use Lenskart Scraper

- **Track prices and discounts**: Monitor how Lenskart prices its in-house brands (John Jacobs, Vincent Chase) against third-party labels. Catch discount changes on specific models the moment they happen.
- **Build a product catalog**: Download every frame in a category with colors, sizes, and specifications in one spreadsheet. Use it for competitor benchmarking or internal product research.
- **Find in-stock products**: Filter to only products currently available. Spot restocks on popular models before they sell out again.
- **Compare markets**: Pull the same category across India, Singapore, UAE, and the US to see how prices, discounts, and product selection differ by region.
- **Research for virtual try-on and AI projects**: Each product includes 3D model download links and precise frame measurements for building virtual eyewear experiences or training datasets.

***

### 🚀 How to use Lenskart Scraper

1. **Pick a category**: Select Eyeglasses or Contact Lenses from the dropdown, or enter a specific numeric category ID for sunglasses and other categories.
2. **Set your filters**: Narrow by brand, gender, frame shape, price range, or minimum rating. Leave all filters blank to get the full category.
3. **Click Start**: The scraper collects every matching product and builds a flat spreadsheet.
4. **Download your results**: Export as Excel, CSV, JSON, or HTML from the Output tab.

***

### ⚙️ Input

| Field | Type | Required | Description |
| --- | --- | :---: | --- |
| `category` | enum | No | Category to scrape: Eyeglasses or Contact Lenses. Defaults to Eyeglasses. |
| `categoryId` | integer | No | Numeric Lenskart category ID. Use this for sunglasses, kids frames, or any category not listed above. |
| `brand` | string | No | Keep only products from a specific brand, for example: `Ray-Ban`, `John Jacobs`, `Oakley`. |
| `gender` | enum | No | Filter by audience: Men, Women, Kids, or Unisex. |
| `frameShape` | string | No | Filter to a specific shape, for example: `Aviator`, `Round`, `Cat Eye`. |
| `frameMaterial` | string | No | Filter to a specific material, for example: `Acetate`, `TR90`, `Metal`. |
| `frameSize` | enum | No | Filter by size: Extra Narrow, Narrow, Medium, Wide, or Extra Wide. |
| `minPrice` | integer | No | Keep only products at or above this price in the selected currency. |
| `maxPrice` | integer | No | Keep only products at or below this price. |
| `minRating` | integer | No | Keep only products with an average rating of this value or above, from 0 to 5. |
| `inStockOnly` | boolean | No | Keep only products currently in stock. Default: off. |
| `maxItems` | integer | No | Maximum number of products to collect. Default: 500. Maximum: 50,000. |
| `country` | enum | No | Store to use: India (INR), Singapore (SGD), UAE (AED), or United States (USD). Default: India. |
| `scrapeProductDetails` | boolean | No | Collect full frame measurements and specifications per product. Default: on. Turn off for a faster run with pricing data only. |
| `dedupeByModel` | boolean | No | Show one row per model instead of one row per color option. Default: off. |
| `proxyConfiguration` | object | No | Connection settings. The default shared proxy is sufficient for this scraper. |

***

### 📤 Output

Each row in your dataset is one color variant of a product. All fields are flat with no nested data, so the file opens cleanly in any spreadsheet program.

Here is a realistic example of an output row:

```json
{
  "productId": "224845",
  "url": "https://www.lenskart.com/john-jacobs-jj-e11686-c6-eyeglasses.html",
  "brand": "John Jacobs",
  "isInhouseBrand": true,
  "modelName": "JJ E11686",
  "title": "John Jacobs JJ E11686 C6",
  "gender": "men",
  "category": "Eyeglasses",
  "price": 3000,
  "lenskartPrice": 3000,
  "marketPrice": 5000,
  "discountPct": 40,
  "currency": "INR",
  "availability": "InStock",
  "inStock": true,
  "qty": 12,
  "frameColor": "Black",
  "colorCode": "C6",
  "colorHex": "#1a1a1a",
  "frameShape": "Aviator",
  "frameSize": "Medium",
  "frameType": "Full Rim",
  "frameMaterial": "Stainless Steel",
  "lensWidthMm": 53,
  "bridgeMm": 15,
  "templeMm": 145,
  "frameWeightGm": 22,
  "rating": 4.5,
  "reviewCount": 128,
  "imagePrimary": "https://static5.lenskart.com/media/catalog/product/...",
  "arModelAndroidUrl": "https://static5.lenskart.com/3d-assets/jj-e11686-c6.glb",
  "salesLabel": "with Free BLU lenses",
  "scrapedAt": "2026-06-21T10:00:00.000Z"
}
```

***

### 📋 Data table

| Field | Type | Description |
| --- | :---: | --- |
| `productId` | string | Unique product variant ID from Lenskart's catalog. |
| `url` | string | Direct link to the product page. |
| `brand` | string | Brand name, for example: John Jacobs, Ray-Ban, Oakley. |
| `isInhouseBrand` | boolean | True for Lenskart's own brands: John Jacobs, Vincent Chase, Lenskart Air, Hustlr. |
| `modelName` | string | Model identifier, for example: JJ E11686. |
| `title` | string | Full display name including color variant. |
| `gender` | string | Target audience: men, women, kids, or unisex. |
| `category` | string | Product category: Eyeglasses or Contact Lenses. |
| `price` | number | Current selling price. |
| `lenskartPrice` | number | Lenskart's listed price before any sale. |
| `marketPrice` | number | Original full retail price shown as the crossed-out price. |
| `discountPct` | number | Discount percentage off the retail price. |
| `currency` | string | Currency code, for example: INR, USD, SGD. |
| `availability` | string | Stock status: InStock or OutOfStock. |
| `inStock` | boolean | True when the variant is available to buy. |
| `qty` | number | Number of units in stock. |
| `frameColor` | string | Frame color name, for example: Black, Gold, Tortoise. |
| `colorCode` | string | Lenskart's internal color code, for example: C6. |
| `colorHex` | string | Hex color value, for example: #1a1a1a. |
| `frameShape` | string | Shape: Aviator, Round, Wayfarer, Rectangle, Cat Eye. |
| `frameSize` | string | Size label: Small, Medium, Large. |
| `frameType` | string | Rim design: Full Rim, Half Rim, or Rimless. |
| `frameMaterial` | string | Material: Stainless Steel, TR90, Acetate. |
| `lensWidthMm` | number | Lens width in millimeters. |
| `lensHeightMm` | number | Lens height in millimeters. |
| `bridgeMm` | number | Bridge width in millimeters. |
| `templeMm` | number | Temple arm length in millimeters. |
| `frameWidthMm` | number | Total frame width in millimeters. |
| `frameWeightGm` | number | Frame weight in grams. |
| `prescriptionType` | string | Prescription capability, for example: Single Vision, Progressive. |
| `rating` | number | Average customer rating out of 5. |
| `reviewCount` | number | Total number of customer reviews. |
| `imagePrimary` | string | Main product image URL. |
| `arModelAndroidUrl` | string | 3D model download link for Android. |
| `arModelIosUrl` | string | 3D model download link for iPhone and iPad. |
| `salesLabel` | string | Promotional badge text, for example: with Free BLU lenses. |
| `scrapedAt` | string | Timestamp of when this record was collected. |

***

### 💰 Pricing

**$4.99 per 1,000 products. The first 50 results of every run are completely free.** No monthly subscriptions and no minimum commits.

The scraper reads data directly from Lenskart's product catalog without launching a browser. This keeps compute costs near zero. A full category of 3,000 eyeglasses completes with minimal overhead, so you pay almost nothing beyond the per-record fee.

***

### ⭐ Enjoying Lenskart Scraper?

<table width="100%">
<tr>
<td style="padding:20px 24px 14px;background:#E6F4F2;border:1px solid #E6F4F2;border-left:5px solid #0F766E;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">If this is saving you hours of manually tracking Lenskart's frame prices and stock, tell us about it.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other catalog builders and price researchers find this Actor. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#0F766E;border:1px solid #E6F4F2;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/lenskart-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

***

### ✨ Tips and optimization

- **Start with a small run**: Set Max products to 100 first to check the output format and field availability before running the full catalog.
- **Use One row per model for catalog overviews**: Enable the deduplication option to reduce your dataset by 60 to 70 percent when you need model-level data rather than per-color data.
- **Schedule for daily price monitoring**: Set up a daily run and compare the `price` and `discountPct` columns between runs to catch price changes the moment they happen.
- **Switch country for multi-market research**: Run the same category with India, UAE, and US selected to see how pricing and catalog selection differ across markets.
- **Use Category ID for full control**: To scrape sunglasses or kids frames, leave Category blank and enter the numeric Category ID instead. Find it in the URL of any Lenskart category page.

***

### ❓ FAQ

**Is it legal to collect this data?**
This scraper collects publicly visible product and pricing data that anyone can see on Lenskart.com without an account. You are responsible for ensuring your use complies with Lenskart's terms of service and applicable laws.

**Why are some measurement fields empty?**
Frame measurements come from the individual product detail pages. If you turn off Fetch full specifications, those fields will be empty. They are filled in by default.

**What does One row per model do?**
By default, each color option for a model gets its own row. Enabling this option collapses all color variants into a single row so you see one entry per model. Useful for counting distinct models rather than total variants.

**Can I scrape sunglasses or kids frames?**
Yes. Leave the Category field empty and enter the numeric Category ID for the category you want. Open any Lenskart category page and find the ID in the page URL.

***

### 🛡️ Disclaimers and support

- **Disclaimer**: This scraper retrieves publicly available product catalog data from Lenskart.com. It is not affiliated with, endorsed by, or sponsored by Lenskart. Ensure your use complies with applicable laws and the site's terms of service.
- **Support**: For bug reports, missing fields, or feature requests, open a ticket under the **Issues** tab.

### 🔗 Other actors

- [Edel Optics Scraper](https://apify.com/getascraper/edel-optics-scraper) ↗ - extracts eyewear catalog, prices, and specifications from Edel Optics.
- [DSW Scraper](https://apify.com/getascraper/dsw-scraper) ↗ - pulls footwear prices, colors, sizes, and images from DSW.
- [Coolblue Scraper](https://apify.com/getascraper/coolblue-scraper) ↗ - collects products, prices, ratings, and stock from Coolblue.
- [de Bijenkorf scraper](https://apify.com/getascraper/debijenkorf-scraper) ↗ - gathers product listings and pricing from de Bijenkorf.

# Actor input Schema

## `category` (type: `string`):

Common Lenskart category to scrape. For any category not listed here, leave this empty and use Category ID instead.

## `categoryId` (type: `integer`):

Numeric Lenskart category id. Overrides Category. Use this to scrape any category: open a Lenskart category page, the id is in its page data (e.g. 3363 = Eyeglasses, 30531 = Contact Lenses).

## `brand` (type: `string`):

Keep only products whose brand contains this text, e.g. Ray-Ban, John Jacobs, Vincent Chase, Oakley.

## `gender` (type: `string`):

Keep only products for this audience. Men and Women also include Unisex frames.

## `frameShape` (type: `string`):

Keep only this frame shape, e.g. Aviator, Round, Square, Wayfarer, Cat Eye. Turns on full specifications automatically.

## `frameMaterial` (type: `string`):

Keep only this frame material, e.g. Acetate, TR90, Metal, Stainless Steel. Turns on full specifications automatically.

## `frameSize` (type: `string`):

Keep only this frame size: Extra Narrow, Narrow, Medium, Wide, Extra Wide.

## `minPrice` (type: `integer`):

Keep only products with an effective price at or above this value (in the selected currency).

## `maxPrice` (type: `integer`):

Keep only products with an effective price at or below this value.

## `minRating` (type: `integer`):

Keep only products with an average rating at or above this value (0 to 5).

## `inStockOnly` (type: `boolean`):

Keep only products that are currently in stock.

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

Maximum number of products to collect. The full catalog of a category can be several thousand items.

## `country` (type: `string`):

Storefront country (sets currency and catalog). India has the largest catalog.

## `scrapeProductDetails` (type: `boolean`):

Fetch each product's detail to fill frame shape, material, rim type, lens dimensions, weight and more. On by default. Turn off for a faster, lighter run with listing fields only (price, brand, model, color, size, rating).

## `dedupeByModel` (type: `boolean`):

Collapse color variants so each model appears once. Off by default (each color variant is its own row).

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

Defaults to Apify shared datacenter proxy, which is all this actor needs. The Lenskart API sets locale by parameter, not by IP, so residential proxies are not required.

## `debugLogging` (type: `boolean`):

Enable verbose debug logs.

## Actor input object example

```json
{
  "category": "eyeglasses",
  "inStockOnly": false,
  "maxItems": 500,
  "country": "IN",
  "scrapeProductDetails": true,
  "dedupeByModel": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": []
  },
  "debugLogging": false
}
```

# Actor output Schema

## `dataset` (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 = {
    "category": "eyeglasses",
    "maxItems": 500,
    "country": "IN",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": []
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/lenskart-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 = {
    "category": "eyeglasses",
    "maxItems": 500,
    "country": "IN",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": [],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/lenskart-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 '{
  "category": "eyeglasses",
  "maxItems": 500,
  "country": "IN",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": []
  }
}' |
apify call getascraper/lenskart-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/31IkUwoWGTqN8CLbz/builds/eKZmvpQJRLyiEWl5G/openapi.json
