LightInTheBox Scraper avatar

LightInTheBox Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
LightInTheBox Scraper

LightInTheBox Scraper

Scrape LightInTheBox - a global marketplace with millions of products across electronics, watches, fashion, home & garden. Search by keyword, browse categories, fetch product detail pages with full specs, prices, ratings and reviews.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Share

Scrape LightInTheBox (lightinthebox.com) — one of the world's largest cross-border online marketplaces with millions of products across electronics, watches, fashion, home & garden, wedding and party supplies. Search by keyword, browse any of 4,000+ categories, fetch full product detail pages with specifications and reviews, or feed your own URLs. HTTP-only against the site's server-rendered pages — no auth, no cookies, no proxy required (optional Apify proxy for heavy runs).

Transport note: lightinthebox.com is protected by an Akamai edge that blocks plain HTTP clients (403 "Access Denied"). This actor therefore uses browser-fingerprint impersonation (curl_cffi, TLS fingerprint of Chrome/Safari/Edge, rotated across retries), which is why it keeps working where plain httpx/requests clients get blocked.

What this actor does

  • Four modes: search, byCategory, byProductIds, byUrls
  • Full product data: price, original price, discount %, rating, review count, availability, brand, images, specifications, selling points, customer reviews
  • 20 market locales: English, German, French, Spanish, Italian, Portuguese, Japanese, Russian, Dutch, Arabic, Norwegian, Danish, Swedish, Finnish, Hebrew, Polish, Czech, Greek, Romanian, Hungarian
  • Sorting: relevance, popularity, price low-to-high, price high-to-low
  • Filters: price range, minimum rating, minimum review count, title keyword
  • Automatic pagination (60 products per page) up to a page cap
  • Empty fields are omitted — every record is compact and null-free

Output per product card (mode = search / byCategory)

  • productId — numeric LightInTheBox product ID
  • title, brand
  • productUrl — canonical product page URL
  • price — current price (USD)
  • originalPrice — pre-discount price, when shown
  • discountPercent — savings %, when original price is shown
  • currencyUSD
  • ratingValue — average rating (0–5)
  • reviewCount — number of ratings
  • imageUrl — main product image (CDN, hotlink-free)
  • inStock — availability
  • position — rank on the results page
  • query / categoryId — the search term or category that produced the record
  • sourceUrl — the page the record came from
  • recordType: "productCard", scrapedAt

Output per product detail (mode = byProductIds / byUrls, or includeFullDetails)

Everything from the card plus:

  • description — when the page carries one
  • specifications — key/value map (gender, type, material, size, etc.)
  • sellingPoints[] — selling-point bullets
  • mpn, sku, color, size
  • imageUrls[] — all gallery images at full size
  • priceValidUntil, itemCondition
  • reviews[] — rating, date, body and author of featured reviews
  • categories[] — category breadcrumb (name + URL)
  • recordType: "product", scrapedAt

Output per failure

When a product or page cannot be fetched after retries, a typed record is emitted:

  • recordType: "error", errorType (fetch_failed / not_found / parse_failed / invalid_url), message, sourceUrl, scrapedAt

Input

FieldTypeDefaultDescription
modestringsearchsearch / byCategory / byProductIds / byUrls
searchQuerystringwatchKeyword to search for (mode=search)
categorystringTop-level category dropdown, e.g. women-s-clothing_71 (mode=byCategory)
categoryUrlstringFull URL of any category page, incl. sub-categories (mode=byCategory)
productIdsarrayNumeric product IDs, e.g. ["10116681"] (mode=byProductIds)
startUrlsarrayProduct / category / search URLs (mode=byUrls)
languagestringenMarket locale: en de fr es it pt ja ru nl ar no da sv fi he pl cz gr ro hu
sortBystringrelevancerelevance / popularity / priceLowToHigh / priceHighToLow
minPricenumber0Keep products priced ≥ this value (USD)
maxPricenumber100000Keep products priced ≤ this value (USD)
minRatingnumber0Keep products rated ≥ this value (0–5)
minReviewCountinteger0Keep products with ≥ this many reviews
containsKeywordstringKeep products whose title contains this text (case-insensitive)
includeFullDetailsbooleanfalseAlso fetch each product's detail page and emit full records
maxItemsinteger50Max records to emit (1–10 000)
maxPagesinteger20Max result pages per query (60 products/page)
proxyConfigurationobjectAUTOOptional — works without proxy
{
"mode": "search",
"searchQuery": "led lights",
"language": "en",
"sortBy": "priceLowToHigh",
"minPrice": 5,
"maxItems": 100
}

Example: browse a category with details

{
"mode": "byCategory",
"category": "watches_35798",
"includeFullDetails": true,
"minRating": 4.5,
"maxItems": 20
}

Example: fetch specific products

{
"mode": "byProductIds",
"productIds": ["10116681", "9767734", "9340231"],
"language": "de"
}

Example: full catalog crawl from your own URLs

{
"mode": "byUrls",
"startUrls": [
{"url": "https://www.lightinthebox.com/en/c/quartz-watches_113738"},
{"url": "https://www.lightinthebox.com/en/p/lige-men-quartz-watch_p10116681.html"},
{"url": "https://www.lightinthebox.com/en/search?q=smart+watch"}
],
"maxItems": 500
}

Use cases

  • Price intelligence — track LightInTheBox pricing, discounts and availability over time
  • Marketplace monitoring — watch new arrivals and best sellers across categories
  • Product research — enrich competitor/comparison databases with specs and ratings
  • Dropshipping research — discover products, margins (price vs original price) and social proof (rating + review count) in one pass
  • Brand & category analytics — aggregate rating distributions and review volumes per category
  • E-commerce migration — pull a full product catalog for storefront prototyping

FAQ

What is the data source?

This actor scrapes the public product listing and detail pages of LightInTheBox (lightinthebox.com), a global multi-category online marketplace. All data comes from the site's server-rendered HTML and its embedded structured data (schema.org Product markup).

Is this actor affiliated with LightInTheBox?

No. This is an independent third-party actor built on the public website.

Data source history — why was this actor created?

This actor replaces the original "Bonanza (bonanza.com)" marketplace slot on this marketplace:

  1. Bonanza → Fruugo: the original Bonanza slot was first replaced by Fruugo (fruugo.com), which is the same category (global multi-category marketplace).
  2. Fruugo → LightInTheBox: Fruugo hard-blocks all Apify cloud egress — direct and AUTO proxy requests return HTTP 403 with a ~6 KB Cloudflare WAF block body across every market (including us/il), making it unusable from the Apify platform. It was therefore replaced by LightInTheBox (lightinthebox.com), another global multi-category marketplace (electronics, watches, fashion, home & garden) that serves its pages to datacenter IPs without any bot challenge.

The old FruugoScraper folder was left untouched in the repository; this actor is a fresh, independent build.

Does it require a proxy, API key or cookies?

No. LightInTheBox serves full server-rendered HTML to plain HTTP clients. The actor works on the free plan with zero credentials. A proxy configuration is offered as an optional escalation if you scrape at very high volume and hit rate limits.

Are the image URLs accessible?

Yes. Product images are served from the litb-cgis.rightinthebox.com CDN and respond with 200 image/jpeg to plain anonymous requests — no Referer, cookies or signed tokens needed.

How many products are available?

LightInTheBox lists hundreds of thousands of products across 4,000+ categories (per its public category sitemap) in 20 languages.

How does pagination work?

Search and category pages show 60 products per page. The actor follows ?page=2, ?page=3, … automatically until results run out or maxPages is reached.

Why are some fields missing on some records?

LightInTheBox only renders certain fields for certain products (e.g. no rating on brand-new items, no original price when there is no discount). Missing values are omitted rather than filled with placeholders — this keeps every record clean and reliable.

How fresh is the data?

Every record is scraped live at run time and carries a scrapedAt UTC timestamp. Nothing is cached between runs.

What about reviews?

Full review lists are loaded by the site's front-end JavaScript; the server-rendered page embeds a few featured reviews per product, which the actor captures. Review counts come from the product's structured data.

Limitations

  • Full review lists are client-side only; only the featured reviews embedded in the page markup are captured.
  • Category pages and search pages are limited to 60 products per page; the actor respects the same pagination the website exposes.
  • The site's filtering (price, brand, etc.) is applied client-side; the actor therefore filters results locally, which limits filtering to the pages it actually crawled.