# LimeRoad Scraper (`crawlerbros/limeroad-scraper`) Actor

Scrape LimeRoad.com - India's multi-brand fashion marketplace for women, men, kids and home. Search by keyword, browse by category or brand, or fetch full product detail (price INR, MRP, discount, rating, sizes, colors, images, fabric specs, seller) for any product URL.

- **URL**: https://apify.com/crawlerbros/limeroad-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** E-commerce, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

## LimeRoad Scraper

Scrape **LimeRoad.com** — India's multi-brand fashion marketplace for women, men, kids and home decor. Search by keyword, browse 50 curated categories or 16 verified brands, or paste any product URL for full product detail: INR prices, MRP, discount %, ratings, sizes, colors, high-resolution images, fabric and ideal-for specs, seller info, and category path. Public HTTP JSON surface — no login, no cookies, no proxy required.

### What this actor does

- **Four modes:** `search`, `browseByCategory`, `browseByBrand`, `byUrl`
- **Full product detail per record:** prices (INR), MRP, discount %, rating, rating count, order count
- **Variants:** all sizes, all color siblings, seller/vendor for every size
- **Images:** all zoom images (e.g. `https://img0.junaroad.com/uiproducts/<id>/zoom_0-<fileidn>.jpg`) — directly hotlinkable, no referer required
- **Specs:** fabric/ideal-for/occasion/neck/sleeve attributes extracted into structured `specs` and `tags`
- **Filters:** gender, min/max price (INR), min rating, contains-keyword
- **Empty fields are omitted** — no `null` values in any record

### Output per product

- `productId` — LimeRoad product ID
- `title`, `listingTitle`, `description`
- `brand`, `brandId`, `brandUrl`, `brandDesc`
- `mrp`, `sellingPrice`, `priceComponent`, `discountPercent`, `currency: "INR"`
- `rating`, `ratingCount`, `orderCount`
- `color`, `colors[]`, `colorIds[]` — all color variants
- `sizes[]` — every available size (S, M, L, XL, 2XL …)
- `sellers[]`, `vendorIds[]`, `totalStock`
- `images[]` — full-resolution zoom images
- `categoryPath`, `categoryId`, `categoryTags[]`
- `specs{}` — material, occasion, work, sleeve, neck, closure, country of origin…
- `tags[]` — combined `label: value` attribute list
- `gender`, `care`, `returnPolicy`, `returnPeriodDays`, `isCod`, `isTrusted`, `sellerStatus`
- `sourceUrl` — canonical product page on LimeRoad
- `recordType: "product"`, `scrapedAt`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `search` | `search` / `browseByCategory` / `browseByBrand` / `byUrl` |
| `searchQuery` | string | `kurtis` | Free-text keyword (mode=search) |
| `category` | string | `kurtis` | Curated category dropdown (mode=browseByCategory) |
| `brand` | string | `janasya` | Curated brand dropdown (mode=browseByBrand) |
| `productUrls` | array | – | Product URLs to fetch (mode=byUrl) |
| `gender` | string | – | `women` / `men` / `kids` (empty = all) |
| `minPrice` | int | – | Min selling price in INR |
| `maxPrice` | int | – | Max selling price in INR |
| `minRating` | number | – | Min rating (0–5) |
| `containsKeyword` | string | – | Only emit products whose name/brand contains this text |
| `maxItems` | int | `50` | Hard cap on product records (1–1000) |
| `proxyConfiguration` | object | off | Optional; engaged automatically only if LimeRoad blocks the datacenter IP |

#### Example: keyword search with filters

```json
{
  "mode": "search",
  "searchQuery": "kurtis",
  "gender": "women",
  "minPrice": 500,
  "maxPrice": 2000,
  "minRating": 4,
  "maxItems": 25
}
```

#### Example: browse a category

```json
{
  "mode": "browseByCategory",
  "category": "sarees",
  "maxItems": 10
}
```

#### Example: browse a brand

```json
{
  "mode": "browseByBrand",
  "brand": "janasya",
  "maxItems": 10
}
```

#### Example: fetch specific product URLs

```json
{
  "mode": "byUrl",
  "productUrls": [
    "https://www.limeroad.com/black-cotton-ada-p21694700",
    "https://www.limeroad.com/products/22501900"
  ]
}
```

### Use cases

- **Price & discount monitoring** — track selling price, MRP and discount % across LimeRoad catalog
- **Marketplace intelligence** — understand LimeRoad's catalog surface: brands, categories, sellers, size runs
- **Fashion trend research** — collect ratings, order counts and specs (fabric, occasion) by category
- **Competitive analysis** — compare Indian fashion labels (Janasya, Soch, Aurelia, Monte Carlo…) in one dataset
- **Product feed building** — structured product detail with hotlinkable images for stores/apps

### Data source

LimeRoad.com — India's marketplace for women's, men's and kids' fashion plus home decor. This actor uses LimeRoad's public JSON surface (`/search/<query>?format=json` and `/products/<id>?format=json`) which the site serves to normal browser sessions — no authentication, no cookies. LimeRoad is a marketplace of primarily Indian labels; large international brands (Nike, Levi's, Zara…) are generally **not** sold on the platform.

### Limitations

- **Catalog is India-focused** — LimeRoad is a marketplace of primarily Indian labels; large international brands (Nike, Levi's, Zara…) are generally not sold on the platform and cannot be scraped.
- **Attributes are not published for every product** — ratings, order counts and spec attributes vary per product; absent fields are omitted rather than filled with placeholders.
- **Each size is a vendor variant** — LimeRoad lists each size as its own vendor variant; the actor deduplicates size names and collects every seller per product.
- **Prices are in INR** — `mrp`, `sellingPrice` and `priceComponent` are always Indian rupees; no currency conversion is performed.
- **Search and category results are live page reads** — records reflect LimeRoad's catalog at scrape time; delisted products may appear in feeds but fail detail fetch.

### FAQ

**What is LimeRoad?**
LimeRoad is an Indian multi-brand fashion marketplace founded in 2012, focused on women's ethnic and western wear, men's wear, kids' wear and home decor, with a strong curation of small Indian labels.

**Do I need a proxy?**
No. LimeRoad serves its JSON surface to plain datacenter IPs. If LimeRoad ever rate-limits or blocks a run (HTTP 403/429), the actor automatically engages the optional `proxyConfiguration` you provided — proxy stays off otherwise to keep costs at zero.

**Why are some fields missing on some products?**
LimeRoad does not publish every attribute on every product (e.g. not all products have ratings or full specs). Records simply omit the absent fields — you never get empty placeholders.

**How fresh is the data?**
Every run scrapes live pages — the dataset reflects LimeRoad's current prices, stock and attributes at scrape time.

**Why are some sizes duplicated?**
LimeRoad lists each size as its own vendor variant; the actor deduplicates size names and collects every seller per product.

**Is this actor affiliated with LimeRoad?**
No. This is an independent third-party actor using LimeRoad's public web surface.

**How do I get the largest image?**
Each `images[]` entry is a zoom image (~600–800 px). The last entry is typically the largest zoom.

# Actor input Schema

## `mode` (type: `string`):

What to fetch.

## `searchQuery` (type: `string`):

Free-text keyword, e.g. `kurtis`, `saree`, `levis jeans`, `sneakers` (mode=search).

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

Curated LimeRoad category (mode=browseByCategory).

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

Curated LimeRoad brand (mode=browseByBrand).

## `productUrls` (type: `array`):

LimeRoad product URLs, e.g. `https://www.limeroad.com/black-cotton-ada-p21694700` or `https://www.limeroad.com/products/21694700`.

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

Restrict results to a gender. Empty = all.

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

Drop products selling below this price in Indian Rupees.

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

Drop products selling above this price in Indian Rupees.

## `minRating` (type: `number`):

Drop products rated below this (0–5).

## `containsKeyword` (type: `string`):

Only emit products whose name contains this text (case-insensitive).

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

Hard cap on emitted product records (each record is a full product detail).

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

Optional Apify proxy, automatically engaged only if LimeRoad rate-limits or blocks the datacenter IP. Leave empty to run proxy-free.

## Actor input object example

```json
{
  "mode": "search",
  "searchQuery": "kurtis",
  "category": "kurtis",
  "brand": "janasya",
  "productUrls": [],
  "gender": "",
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `products` (type: `string`):

Dataset containing all scraped LimeRoad fashion products.

# 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 = {
    "mode": "search",
    "searchQuery": "kurtis",
    "category": "kurtis",
    "brand": "janasya",
    "productUrls": [],
    "gender": "",
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/limeroad-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 = {
    "mode": "search",
    "searchQuery": "kurtis",
    "category": "kurtis",
    "brand": "janasya",
    "productUrls": [],
    "gender": "",
    "maxItems": 50,
    "proxyConfiguration": { "useApifyProxy": False },
}

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

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

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

```

## CLI example

```bash
echo '{
  "mode": "search",
  "searchQuery": "kurtis",
  "category": "kurtis",
  "brand": "janasya",
  "productUrls": [],
  "gender": "",
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call crawlerbros/limeroad-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawlerbros/limeroad-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/sHYFlEcC4BrIQQETx/builds/52jnPacjDG5kjcNmm/openapi.json
