LC Waikiki API

Every LC Waikiki size, its stock and the price you actually pay

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.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a LC Waikiki endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
L
/lcw/v1

4 active endpoints, on 1 and 2 credit tiers.

  • POST/lcw/v1/search
  • POST/lcw/v1/product/detail
  • POST/lcw/v1/product/reviews
  • POST/lcw/v1/suggest

What LC Waikiki endpoints does ReefAPI ship?

4 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

4 endpoints

search

2 cr

Search an LC Waikiki shop by keyword, or browse any category, brand, store or outlet listing,…

required
optional
country, query, url, page, sort, filters, max_rotations

product/detail

1 cr

One LC Waikiki colour option by URL or option id.

required
optional
country, url, option_id, max_rotations

product/reviews

1 cr

Every published review of an LC Waikiki colour option.

required
optional
country, url, option_id, page, max_rotations

suggest

1 cr

LC Waikiki's search autocomplete for the characters typed so far.

required
query
optional
country, max_rotations

Every parameter, every allowed value →

LC Waikiki API

3 of 4 endpoints, ready to run

View docs ↗

100 products a page: option id, product code, title, brand, URL, images, grid price, struck price, campaign price and final price, campaigns, category path, and every filter the shop offers for the result.

2 credits0 required · 5 optional
POST/lcw/v1/search
ok2466 ms · 100 records · sample
{
  "ok": true,
  "meta": {
    "api": "lcw",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 2465.5,
    "record_count": 100,
    "cache_hit": false
  },
  "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": 263939,
            "label": "3 AL %5, 5 AL %10!",
            "starts_at": "2026-09-03T07:00:00Z",
            "ends_at": "2026-09-18T20:59:00Z",
            "url": "https://www.lcw.com/kampanya-urun-listesi/263939"
          }
        ],
        "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": 263939,
            "label": "3 AL %5, 5 AL %10!",
            "starts_at": "2026-09-03T07:00:00Z",
            "ends_at": "2026-09-18T20:59:00Z",
            "url": "https://www.lcw.com/kampanya-urun-listesi/263939"
          }
        ],
        "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": 263939,
            "label": "3 AL %5, 5 AL %10!",
            "starts_at": "2026-09-03T07:00:00Z",
            "ends_at": "2026-09-18T20:59:00Z",
            "url": "https://www.lcw.com/kampanya-urun-listesi/263939"
          }
        ],
        "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": "7",
            "label": "Erkek",
            "count": 15727,
            "selected": false
          },
          {
            "value": "2",
            "label": "Erkek Bebek",
            "count": 797,
            "selected": false
          },
          {
            "value": "5",
            "label": "Erkek Çocuk",
            "count": 5316,
            "selected": false
          }
        ]
      },
      {
        "key": "m_5",
        "title": "Ürün Tipi",
        "values": [
          {
            "value": "6",
            "label": "Atlet",
            "count": 950,
            "selected": false
          },
          {
            "value": "20030",
            "label": "Body",
            "count": 720,
            "selected": false
          },
          {
            "value": "19373",
            "label": "Crop",
            "count": 314,
            "selected": false
          }
        ]
      },
      {
        "key": "m_size",
        "title": "Beden",
        "values": [
          {
            "value": "303",
            "label": "Standart",
            "count": 68,
            "selected": false
          },
          {
            "value": "183",
            "label": "XXS",
            "count": 89,
            "selected": false
          },
          {
            "value": "236",
            "label": "XS",
            "count": 3758,
            "selected": false
          }
        ]
      }
    ],
    "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
  }
}
Real response, fetched from the live endpoint with the parameters on the left — trimmed to the first few rows. Press Try it for the untrimmed response.

How the LC Waikiki API works

LC Waikiki is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 252 engines.

02
Call
POST /lcw/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 or 2 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Filter a category by colour, then watch which sizes sell out

The shop's filters come back with every search, so the second call is already narrowed. The third call is where the per-size stock lives.

01search
POST/lcw/v1/search
{"url": "https://www.lcw.com/erkek-tisort-t-345"}

100 products and available_filters. Find the colour you want in the m_color filter and note its value id.

02search
POST/lcw/v1/search
{"url": "https://www.lcw.com/erkek-tisort-t-345", "filters": {"m_color": "141"}}

The same category in that colour only: 708 products instead of 8,755 on 2026-09-15. Take results[].option_id.

03detail
POST/lcw/v1/product/detail
{"option_id": "<results[0].option_id>"}

variants[] has one row per size with stock_count and final_price; color_options[] marks sold-out sibling colours. price, campaign_price, final_price and original_price matched the search row on 45 of 45 products checked.

Search once per category and colour, then one detail call per garment you track, with the grid price, the campaign price and the per-size stock kept apart all the way through.

request
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"}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "lcw",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

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_priceoriginal_price (struck)final_price
Baskılı %100 Pamuklu Kadın Tişört299.99 TRY199.99 TRY (Sepette İndirim)399.99 TRY199.99 TRY
Slim Fit Modal Kumaş Tişört /02249.99 TRY199.99 TRY (Sepette İndirim)359.99 TRY199.99 TRY
Bisiklet Yaka Baskılı Erkek Çocuk Tişört 3'lü599.99 TRY399.99 TRY (Sepette İndirim)null, none shown399.99 TRY
Polo Yaka Erkek Çocuk Pike Tişört 2'li759.99 TRYnull, no campaignnull759.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.

21 shops, three prices, sizes, and what LC Waikiki leaves out

Measured on 2026-09-15 across all 21 LC Waikiki shops: 48 searches, 45 product pages, 12 review calls and 8 product pages compared against the page itself. Three of these lines go against us.

21 shops, one parameter, each in its own currency

tr (lcw.com) plus ro, ua, ba, rs, bg, de, al, mk, ru, fr, gr, hr, it, me, xk, kz, eg, ma, ge and iq. Every shop answered live searches and product pages, and the currency on every row matched the shop: TRY, RON, UAH, BAM, RSD, EUR, ALL, MKD, RUB, KZT, EGP, MAD, GEL or IQD.

Three prices, kept apart, and the one you pay

price is the grid price, original_price the struck price when one is shown, campaign_price the campaign price with its label (for example Sepette İndirim), and final_price the one you pay. The product page's headline is the campaign price. On 8 product pages compared, final_price equalled the headline on all 8 and price equalled the page's own grid price on all 8.

Stock per size, and per waist and length

Every size row has its own stock count and price; trousers have one row per waist and length pair. On 8 pages compared, the product's stock equalled the sum of its sizes on all 8. Sold-out sibling colours are flagged in color_options.

Filters and sorting are the shop's own

Each search returns every filter with value ids and counts; passing one back narrowed a 36,663-result search to 2,407. The price sorts follow final_price: a price_asc page had 0 rows out of order by final_price and 30 by price.

An unknown keyword is an empty result, not a page of guesses

For a search it cannot match, LC Waikiki shows about 24 unrelated recommended products. The API returns no results, says how many padded rows it dropped, and a page past the end is also empty.

Against us: search-row stock and ratings are the index's

The stock, rating and review count on a search row are named search_index_* because they come from the listing index: the stock matched the product page on 21 of 45 products and the review count on 8 of 15 rated ones. product/detail and product/reviews carry the page's own figures.

Against us: some products share a review pool

For products whose reviews are pooled with sibling options, the pooled list is not reachable by the option's own id. The response flags it and returns the page's rating, count and newest reviews instead of an empty list or someone else's reviews.

Against us: one barcode per colour, and few ratings outside Turkey

gtin13 is a single barcode for the colour option, not one per size. On the non-Turkish shops the products checked printed no ratings, so rating is null there rather than 0. Multi-buy campaigns come on search rows, not on product/detail.

What people build with LC Waikiki

The jobs this data is most often used for.

4

endpoints

1/2

credits per call

01

Fashion price-monitoring teams track the grid price, the campaign price and the final price per product across LC Waikiki's 21 country shops.

02

Replenishment and assortment analysts watch which sizes of a garment sell out, from per-size stock counts and sold-out colour siblings.

03

Catalog teams pull composition, materials, attributes, care instructions and the model's measurements for size guides.

04

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.

What LC Waikiki data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 252 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
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"}'
python
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"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up LC Waikiki.

Get a free key →
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.

91 E-commerce & Marketplaces APIs on the same key

One key, one credit pool, one response envelope. If you are pulling LC Waikiki, you are one call away from the rest of the category — no second contract, no second integration.

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 251 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-15.