LC Waikiki API & Scraper
The LC Waikiki API turns lcw.com and the 20 other LC Waikiki country shops into clean JSON in four actions: search, product/detail, product/reviews and suggest.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
One country parameter switches between Turkey, Romania, Ukraine, Bosnia and Herzegovina, Serbia, Bulgaria, Germany, Albania, North Macedonia, Russia, France, Greece, Croatia, Italy, Montenegro, Kosovo, Kazakhstan, Egypt, Morocco, Georgia and Iraq, each in its own currency. search takes a keyword or any LC Waikiki category, brand, store or outlet URL, returns 100 products a page, offers the shop's eight sort orders and hands back every filter the shop offers for that result with its value ids, so a colour, size or brand filter is one more call. Each product carries its option id, product code, title, brand, URL, images, the grid price, the struck price, the campaign price with its label and the price you finally pay. product/detail opens one colour option: every size, and for trousers every waist and length pair, with its own stock count and price, plus composition, the model's measurements and the size the model wears, attributes, care instructions, colour siblings with their stock state, rating, the newest reviews, shipping cost and delivery window. product/reviews pages through all reviews of an option with the exact average and the 1-5 breakdown. In a live check on 2026-09-15 across all 21 shops, 48 of 48 searches and 45 of 45 product pages succeeded, every price field matched between search and detail on 45 of 45 products, and on 8 product pages compared against the page itself the final price, the rating and the stock matched on all 8. No LC Waikiki account, no browser, one ReefAPI key and the standard { ok, data, meta, error } envelope.
LC Waikiki shows three prices, and its price sort follows the lowest
An LC Waikiki product can carry a grid price, a struck-through original price and a campaign price such as "Sepette İndirim" (in-basket discount). The API keeps them apart as price, original_price and campaign_price, plus final_price, the one you pay. The product page's headline shows the campaign price, not the grid price. On 2026-09-15 a price_asc page was in perfect order by final_price and had 30 rows out of order by price.
| Product (lcw.com) | price (grid) | campaign_price | original_price (struck) | final_price |
|---|---|---|---|---|
| Baskılı %100 Pamuklu Kadın Tişört | 299.99 TRY | 199.99 TRY (Sepette İndirim) | 399.99 TRY | 199.99 TRY |
| Slim Fit Modal Kumaş Tişört /02 | 249.99 TRY | 199.99 TRY (Sepette İndirim) | 359.99 TRY | 199.99 TRY |
| Bisiklet Yaka Baskılı Erkek Çocuk Tişört 3'lü | 599.99 TRY | 399.99 TRY (Sepette İndirim) | null, none shown | 399.99 TRY |
| Polo Yaka Erkek Çocuk Pike Tişört 2'li | 759.99 TRY | null, no campaign | null | 759.99 TRY |
A multi-buy offer such as "3 AL %5, 5 AL %10!" is not a price: it comes back in campaigns[] with its dates and campaign URL and never changes a price field. Every product page compared on 2026-09-15 showed final_price as its headline price, and price matched the grid price the search result showed on 45 of 45 products.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/lcw/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "tişört"
}
}{
"ok": true,
"meta": {
"api": "lcw",
"endpoint": "search",
"mode": "live",
"latency_ms": 1716.9,
"record_count": 100,
"bytes": 1478844,
"cache_hit": false,
"country": "tr",
"pagination": {
"page": 1,
"page_size": 100,
"total": 36404,
"has_more": true
}
},
"data": {
"results": [
{
"position": 1,
"option_id": 5248220,
"model_id": 8773168,
"product_code": "W60084Z4-Q6K",
"model_code": "W60084Z4",
"title": "Polo Yaka Erkek Çocuk Pike Tişört 2'li",
"brand": "LCW Kids",
"url": "https://www.lcw.com/polo-yaka-erkek-cocuk-pike-tisort-2li-beyaz-o-5248220",
"image": "https://img-lcwaikiki.mncdn.com/mnpadding/600/800/ffffff/pim/productimages/20262/8773168/v1/l_20262-w60084z4-q6k_a.jpg",
"images": [
"https://img-lcwaikiki.mncdn.com/mnpadding/600/800/ffffff/pim/productimages/20262/8773168/v1/l_20262-w60084z4-q6k_a.jpg",
"https://img-lcwaikiki.mncdn.com/mnpadding/600/800/ffffff/pim/productimages/20262/8773168/v1/l_20262-w60084z4-q6k_a1.jpg",
"https://img-lcwaikiki.mncdn.com/mnpadding/600/800/ffffff/pim/productimages/20262/8773168/v1/l_20262-w60084z4-q6k_a2.jpg"
],
"color_hex": "#ffffff",
"price": 759.99,
"price_display": "759,99 TL",
"original_price": null,
"campaign_price": null,
"campaign_label": null,
"campaign_discount_percent": null,
"campaign_ends_at": null,
"final_price": 759.99,
"lowest_price_30_days": 759.99,
"currency": "TRY",
"campaigns": [
{
"campaign_id": "[trimmed-depth]",
"label": "[trimmed-depth]",
"starts_at": "[trimmed-depth]",
"ends_at": "[trimmed-depth]",
"url": "[trimmed-depth]"
}
],
"search_index_stock_count": 1312,
"in_stock": true,
"search_index_rating": 5,
"search_index_review_count": 4,
"rating_scale": 5,
"category": "Tişört-Genç Erkek",
"category_path": [
"Çocuk",
"Giyim",
"Tişört-Erkek Çocuk"
],
"product_group": "Çocuk",
"seller": {
"id": 1,
"name": "LC Waikiki"
},
"is_outlet": false
},
{
"position": 2,
"option_id": 5284205,
"model_id": 9086677,
"product_code": "W6AN26Z1-HPN",
"model_code": "W6AN26Z1",
"title": "Desenli Kız Çocuk 2'li Tişört",
"brand": "LCW Kids",
"url": "https://www.lcw.com/desenli-kiz-cocuk-2li-tisort-lacivert-o-5284205",
"image": "https://img-lcwaikiki.mncdn.com/mnpadding/600/800/ffffff/pim/productimages/20262/9086677/v1/l_20262-w6an26z1-hpn_u.jpg",
"images": [
"https://img-lcwaikiki.mncdn.com/mnpadding/600/800/ffffff/pim/productimages/20262/9086677/v1/l_20262-w6an26z1-hpn_u.jpg",
"https://img-lcwaikiki.mncdn.com/mnpadding/600/800/ffffff/pim/productimages/20262/9086677/v1/l_20262-w6an26z1-hpn_u1.jpg",
"https://img-lcwaikiki.mncdn.com/mnpadding/600/800/ffffff/pim/productimages/20262/9086677/v1/l_20262-w6an26z1-hpn_u2.jpg"
],
"color_hex": "#29304E",
"price": 599.99,
"price_display": "599,99 TL",
"original_price": null,
"campaign_price": null,
"campaign_label": null,
"campaign_discount_percent": null,
"campaign_ends_at": null,
"final_price": 599.99,
"lowest_price_30_days": 599.99,
"currency": "TRY",
"campaigns": [
{
"campaign_id": "[trimmed-depth]",
"label": "[trimmed-depth]",
"starts_at": "[trimmed-depth]",
"ends_at": "[trimmed-depth]",
"url": "[trimmed-depth]"
}
],
"search_index_stock_count": 1219,
"in_stock": true,
"search_index_rating": 4.83,
"search_index_review_count": 6,
"rating_scale": 5,
"category": "Tişört-Kız Bebek",
"category_path": [
"Bebek",
"Giyim",
"Tişört-Kız Bebek"
],
"product_group": "Bebek",
"seller": {
"id": 1,
"name": "LC Waikiki"
},
"is_outlet": false
},
{
"position": 3,
"option_id": 5248549,
"model_id": 8770837,
"product_code": "W60081Z4-Q6K",
"model_code": "W60081Z4",
"title": "Polo Yaka Erkek Çocuk Pike Tişört",
"brand": "LCW Kids",
"url": "https://www.lcw.com/polo-yaka-erkek-cocuk-pike-tisort-beyaz-o-5248549",
"image": "https://img-lcwaikiki.mncdn.com/mnpadding/600/800/ffffff/pim/productimages/20262/8770837/v7/l_20262-w60081z4-q6k_5.jpg",
"images": [
"https://img-lcwaikiki.mncdn.com/mnpadding/600/800/ffffff/pim/productimages/20262/8770837/v7/l_20262-w60081z4-q6k_5.jpg",
"https://img-lcwaikiki.mncdn.com/mnpadding/600/800/ffffff/pim/productimages/20262/8770837/v4/l_20262-w60081z4-q6k-56-170_a.jpg",
"https://img-lcwaikiki.mncdn.com/mnpadding/600/800/ffffff/pim/productimages/20262/8770837/v4/l_20262-w60081z4-q6k-56-170_a1.jpg"
],
"color_hex": "#ffffff",
"price": 399.99,
"price_display": "399,99 TL",
"original_price": null,
"campaign_price": null,
"campaign_label": null,
"campaign_discount_percent": null,
"campaign_ends_at": null,
"final_price": 399.99,
"lowest_price_30_days": 399.99,
"currency": "TRY",
"campaigns": [
{
"campaign_id": "[trimmed-depth]",
"label": "[trimmed-depth]",
"starts_at": "[trimmed-depth]",
"ends_at": "[trimmed-depth]",
"url": "[trimmed-depth]"
}
],
"search_index_stock_count": 3846,
"in_stock": true,
"search_index_rating": 2.25,
"search_index_review_count": 4,
"rating_scale": 5,
"category": "Tişört-Genç Erkek",
"category_path": [
"Çocuk",
"Giyim",
"Tişört-Erkek Çocuk"
],
"product_group": "Çocuk",
"seller": {
"id": 1,
"name": "LC Waikiki"
},
"is_outlet": false
}
],
"count": 100,
"total_results": 36404,
"total_pages": 365,
"page": 1,
"served_page": 1,
"page_size": 100,
"sort": "relevance",
"applied_filters": null,
"available_filters": [
{
"key": "m_61",
"title": "Cinsiyet",
"values": [
{
"value": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]",
"selected": "[trimmed-depth]"
},
{
"value": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]",
"selected": "[trimmed-depth]"
},
{
"value": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]",
"selected": "[trimmed-depth]"
}
]
},
{
"key": "m_5",
"title": "Ürün Tipi",
"values": [
{
"value": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]",
"selected": "[trimmed-depth]"
},
{
"value": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]",
"selected": "[trimmed-depth]"
},
{
"value": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]",
"selected": "[trimmed-depth]"
}
]
},
{
"key": "m_size",
"title": "Beden",
"values": [
{
"value": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]",
"selected": "[trimmed-depth]"
},
{
"value": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]",
"selected": "[trimmed-depth]"
},
{
"value": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]",
"selected": "[trimmed-depth]"
}
]
}
],
"breadcrumb": [
{
"name": "tişört",
"url": null
}
],
"category_name": "Tişört-Genç Erkek",
"did_you_mean": null,
"no_match_notice": null,
"page_notice": null,
"fallback_results_dropped": 0,
"duplicate_rows_dropped": 0,
"country": "tr",
"currency": "TRY",
"route": "keyword",
"resolved_url": null
}
}What the LC Waikiki API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search an LC Waikiki shop by keyword, or browse any category, brand, store or outlet listing, with the shop's sort orders and filters. 100 products a page: option id, product code, title, brand, URL, images, the grid price, the struck price, the campaign price (e.g. 'Sepette İndirim') and the price you finally pay, lowest price of the last 30 days, multi-buy campaigns, stock count, rating and review count, category path, seller. Also returns every filter the shop offers for the result, with value ids and counts. | Pricing teams call search to search an LC Waikiki shop by keyword, or browse any category, brand, store or outlet listing,…. | country, query, url, page, sort, ... |
| product/detail | One LC Waikiki colour option by URL or option id: title, brand, colour, every size (and waist × length for trousers) with its own stock count and price, the grid price, campaign price, final price and struck price, barcode, composition, materials, model measurements and the size the model wears, attributes, care instructions, description, colour siblings with their stock state, rating and count, newest reviews, breadcrumb, seller, shipping cost and delivery window, return days. | Marketplace operators call product/detail to get one LC Waikiki colour option by URL or option id. | country, url, option_id, max_rotations |
| product/reviews | Every published review of an LC Waikiki colour option: exact average and count, the 1-5 breakdown, how buyers rate the fit (runs small / true to size / runs large) and each review with its stars, text, date, the size bought, the reviewer's height and weight when given, likes and photos. Reviewer names are never returned. | Catalog enrichment teams call product/reviews to get every published review of an LC Waikiki colour option. | country, url, option_id, page, max_rotations |
| suggest | LC Waikiki's search autocomplete for the characters typed so far: category suggestions with their listing URL (usable in search `url`) and popular searches. | Retail analysts call suggest to get lC Waikiki's search autocomplete for the characters typed so far. | query, country, max_rotations |
Call search from your stack
curl -X POST https://api.reefapi.com/lcw/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"tişört"}'import requests
r = requests.post(
"https://api.reefapi.com/lcw/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "tişört"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/lcw/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "tişört"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.lcw.search with {"query":"tişört"}.Who uses this API and why
- Fashion price-monitoring teams track the grid price, the campaign price and the final price per product across LC Waikiki's 21 country shops.
- Replenishment and assortment analysts watch which sizes of a garment sell out, from per-size stock counts and sold-out colour siblings.
- Catalog teams pull composition, materials, attributes, care instructions and the model's measurements for size guides.
- Product teams read review text with the size bought and the reviewer's height and weight to judge whether a garment runs small or large.
Questions developers ask before integrating
Which LC Waikiki countries does it cover, and in which currency?
21 shops through one country parameter: tr (lcw.com, Turkish lira), ro, ua, ba, rs, bg, de, al, mk, ru, fr, gr, hr, it, me, xk, kz, eg, ma, ge and iq. Prices come back in each shop's currency: TRY, RON, UAH, BAM, RSD, EUR, ALL, MKD, RUB, KZT, EGP, MAD, GEL or IQD, always as a number with the shop's own formatted string beside it. Each of the 21 was checked with live searches and product pages on 2026-09-15, and the currency matched the shop on every row. Option ids are shared across shops, but each shop lists only what it sells. LC Waikiki's Polish and Azerbaijani addresses did not answer as shops, so they are not included.
How is stock reported?
Per size. product/detail returns variants[], one row per size with its own stock count, in_stock flag and price; for trousers each row is a waist and length pair (a jeans option returned 17 of them). stock_count on the product is the sum of its sizes, and color_options[] tells you which sibling colours are sold out. The stock figure on a search row is the listing's own index number and is named search_index_stock_count, because it differed from the product page's size sum on 24 of 45 products checked. Use product/detail when the exact count matters.
Why is the rating on a search row called search_index_rating?
Because it is the listing index's figure, not the product page's. On 2026-09-15 the review count on a search row matched the product page on 8 of 15 rated products, and 5 products that the page shows as rated had no rating in the search row. product/detail returns the rating and count exactly as the product page prints them (one decimal, for example 3.8), and product/reviews returns the exact average (3.75) with the 1-5 breakdown.
Can I use the shop's own filters?
Yes. Every search returns available_filters: each filter's key (m_color, m_size, m_8 for brand, m_price, m_campaigntype for discounted items), its title and every value with its id and product count. Pass them back as filters, for example {"m_color": "141"}. On 2026-09-15 that colour filter narrowed "tişört" from 36,663 results to 2,407, the discounted-items filter to 16,980, and the same colour filter on a category page to 708 with page 2 served. Pages are 100 products each, and page 1 and page 2 shared no products.
Why does a nonsense search return nothing when the shop shows products?
Because those products are not results. When LC Waikiki finds nothing it fills the page with about 24 unrelated recommended products. The API returns an empty result with no_match_notice and the number of padded rows it dropped, so a monitoring job never records unrelated products as matches. A page past the end also comes back empty.
Does product/reviews return every review?
For almost every product, yes: 100 reviews a page, newest first, with page and total_pages (a 112-review dress returned 100 on page 1 and the remaining 12 on page 2). Each review has its stars, text, date, the size bought, the reviewer's height and weight when given, likes and photos; reviewer names are never returned. Some products share one review pool with sibling options, and that pool is not reachable by the option's own id. For those the response says so in reviews_source and reviews_note and returns the rating, the count and the newest reviews the product page prints.
What does LC Waikiki not publish here?
A barcode per size (there is one gtin13 per colour option), multi-buy campaigns on the product page (they are on search rows), the full pooled review list for products that share reviews with siblings, and reviews on most non-Turkish shops, whose product pages printed no ratings for the products checked. Model measurements only exist where a model wears the garment, so baby, children's, home and stationery items return none.
What is the LC Waikiki API?
LC Waikiki API is a ReefAPI endpoint group for lc waikiki in 21 countries: every size's stock and price, campaign prices and reviews. It returns live JSON through POST requests under /lcw/v1.
Is the LC Waikiki API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. LC Waikiki calls use the same shared credit balance as every other ReefAPI engine.
Do I need a LC Waikiki login or account?
No login to LC Waikiki is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the LC Waikiki data?
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the LC Waikiki API use?
LC Waikiki actions currently cost 1-2 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call LC Waikiki from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call lcw actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the LC Waikiki API a LC Waikiki scraper?
It is the managed alternative to a DIY LC Waikiki scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same lc waikiki in 21 countries: every size's stock and price, campaign prices and reviews back as clean JSON.