Watsons Türkiye's shelf as JSON: price, stock, rating and barcode
The Watsons Türkiye API returns the Turkish beauty and personal-care retailer's catalogue as clean JSON, in four actions: search, product/detail, product/reviews and search/suggest.
4 active endpoints. Every call is 1 credit.
- POST/watsons-tr/v1/search
- POST/watsons-tr/v1/product/detail
- POST/watsons-tr/v1/product/reviews
- POST/watsons-tr/v1/search/suggest
What Watsons Türkiye endpoints does ReefAPI ship?
4 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Watsons Türkiye API
3 of 4 endpoints, ready to run
Watsons Türkiye products for a keyword or a category: product code, title, brand, image, price in TRY, stock status with the unit count, rating and review count, EAN barcodes and category path, plus the brands and price bands available.
{ "ok": true, "meta": { "api": "watsons-tr", "endpoint": "search", "mode": "live", "latency_ms": 966.5, "record_count": 28, "cache_hit": false }, "data": { "results": [ { "position": 1, "product_id": "BP_145739", "sku": "145739", "title": "OGX Dolgunlaştırıcı Biotin ve Kolajen Şampuan 385 ml", "brand": "OGX", "range_name": "OGX", "url": "https://www.watsons.com.tr/ogx-dolgunlastirici-biotin-ve-kolajen-sampuan-385-ml/p/BP_145739", "image": "https://media.watsons.com.tr/medias/sys_master/prd-images/hc7/h79/12270210580510/prd-front-145739_195x195/prd-front-145739-195x195.jpg", "price": 539.9, "price_display": "539,90 ₺", "price_type": "BUY", "currency": "TRY", "was_price": null, "discount_amount": null, "discount_percent": null, "member_price": null, "member_price_display": null, "prior_price": null, "stock_status": "inStock", "stock_level": 1473, "in_stock": true, "purchasable": true, "rating": 4.3, "review_count": 144, "rating_scale": 5, "category_path": [ "Saç Bakım", "Şampuanlar", "Şampuan" ], "barcodes": [ "3574661831008", "22796916709", "22796976703" ], "badges": [ "Çok Satanlar" ], "new_in": false, "promotion": null, "multibuy": false }, { "position": 2, "product_id": "BP_1409835", "sku": "1409835", "title": "Urban Care Biberiye Şampuan Rosemary Clove 350 ml", "brand": "URBAN CARE", "range_name": "URBAN CARE EXC.", "url": "https://www.watsons.com.tr/urban-care-biberiye-sampuan-rosemary-clove-350-ml/p/BP_1409835", "image": "https://media.watsons.com.tr/medias/sys_master/prd-images/hbd/h0d/11223735926814/prd-front-1409835_195x195/prd-front-1409835-195x195.jpg", "price": 269.9, "price_display": "269,90 ₺", "price_type": "BUY", "currency": "TRY", "was_price": null, "discount_amount": null, "discount_percent": null, "member_price": null, "member_price_display": null, "prior_price": null, "stock_status": "inStock", "stock_level": 576, "in_stock": true, "purchasable": true, "rating": 3.6, "review_count": 14, "rating_scale": 5, "category_path": [ "Saç Bakım", "Şampuanlar", "Şampuan" ], "barcodes": [ "8680690710742" ], "badges": [ "Sadece Watsons'ta" ], "new_in": false, "promotion": null, "multibuy": false }, { "position": 3, "product_id": "BP_1343006", "sku": "1343006", "title": "Head&Shoulders Klasik Bakım 2'si 1 Arada Kepeğe Karşı Etkili Şampuan 250 ml", "brand": "HEAD&SHOULDERS", "range_name": "HEAD&SHOULDERS", "url": "https://www.watsons.com.tr/head-shoulders-klasik-bakim-2si-1-arada-kepege-karsi-etkili-sampuan-250-ml/p/BP_1343006", "image": "https://media.watsons.com.tr/medias/sys_master/prd-images/h39/h1b/12450667888670/prd-front-1343006_195x195/prd-front-1343006-195x195.jpg", "price": 59, "price_display": "59,00 ₺", "price_type": "BUY", "currency": "TRY", "was_price": null, "discount_amount": null, "discount_percent": null, "member_price": null, "member_price_display": null, "prior_price": null, "stock_status": "outOfStock", "stock_level": 0, "in_stock": false, "purchasable": true, "rating": 4.3, "review_count": 6, "rating_scale": 5, "category_path": [ "Saç Bakım", "Şampuanlar", "Şampuan" ], "barcodes": [ "8006530003872", "8006530069441", "8006540302507" ], "badges": [], "new_in": false, "promotion": null, "multibuy": false } ], "count": 28, "page": 1, "page_size": 28, "total_results": 1046, "total_pages": 38, "sort": "most-relevant", "redirect_url": null, "filters": { "brands": [ { "name": "ACTIVEX", "count": 2, "value": "ACTIVEX" }, { "name": "ANUA", "count": 5, "value": "ANUA" }, { "name": "ARKO", "count": 1, "value": "ARKO" } ], "categories": [ { "name": "Şampuanlar", "count": 312, "code": "212" }, { "name": "Saç Bakım Çok Satanlar", "count": 83, "code": "102070" }, { "name": "Saç Dökülme Karşıtı Ürünler", "count": 50, "code": "10010" } ], "subcategories": [ { "name": "Şampuan", "count": 270, "code": "1062" }, { "name": "Doğal Saç Bakım Şampuanlar", "count": 52, "code": "50095" }, { "name": "Erkek Şampuan", "count": 48, "code": "1174" } ], "price_bands": [] }, "duplicates_dropped": 0, "query": "şampuan", "category": null } }
How the Watsons Türkiye API works
Watsons Türkiye is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 252 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Track a brand's shelf at Watsons Türkiye by price, stock and barcode
Search gives you the whole shelf with stock counts and barcodes. The product record adds what a catalogue or compliance check needs.
{"query": "şampuan", "brand": "ELSEVE", "page_size": 60}One page of the brand's products with price, stock_level, rating and barcodes. Take results[].product_id, and read filters.brands for the exact brand values.
{"product_id": "BP_167192"}The full record: breadcrumb, images, per-star breakdown, description sections, ingredients where Watsons writes them, supplier and barcodes.
{"product_id": "BP_167192", "limit": 20}The newest written reviews. Expect fewer than review_count, because Watsons publishes text only for written reviews.
A brand's Watsons shelf with prices, unit stock and EAN codes, the full record for the product you care about, and what shoppers most recently wrote about it.
curl -X POST https://api.reefapi.com/watsons-tr/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"şampuan"}'{
"ok": true,
"data": { … },
"meta": {
"api": "watsons-tr",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}Which Watsons price fields exist, and which were empty on the day we measured
Watsons Türkiye's storefront has separate slots for the shelf price, a struck-through was-price, a Watsons Club member price and a 30-day prior price. They are different numbers with different meanings, so the engine returns them as different fields and never folds one into another. The table shows what each field holds and how often it was filled on 2026-09-15, counted by value.
| Field | What it is | Filled on 2026-09-15 |
|---|---|---|
| price | The shelf price in TRY that Watsons shows every shopper. Null, never 0, when Watsons shows no price | 674 of 674 search rows, 25 of 25 product records |
| was_price, discount_amount, discount_percent | The struck-through price and the difference, only when Watsons publishes one above price | 0 of 674 rows, 0 of 25 records |
| member_price | The Watsons Club member price, kept separate from price | 0 of 674 rows, 0 of 25 records |
| prior_price | The 30-day prior price Watsons publishes next to a promotion | 0 of 25 records |
| promotion_message | Basket-level offer text such as a spend threshold. It is never subtracted from price | 0 of 25 records |
| stock_status, stock_level | inStock, lowStock or outOfStock, plus the unit count Watsons publishes | 674 of 674 rows, 25 of 25 records |
| barcodes | The EAN list; some products carry more than one | 665 of 674 rows, 25 of 25 records |
The zeros are what Watsons published to a logged-out shopper that day, not a parse gap. The same products' rendered category page showed a single price with empty was and member slots, across roughly 1,400 distinct products in eight categories, eight keywords and two promotion categories. The fields read the storefront's own sources, so a campaign will appear in them without a change on our side.
Which market, which id, which price, and what Watsons does not publish
watsons.com.tr only: one country, one currency, and a product code shoppers can see in every URL. Measured on 2026-09-15 across 25 searches, 25 product records, 10 review calls, 10 suggestion calls and a check against the rendered product page. Four of these lines go against us.
This engine reads watsons.com.tr. Other Watsons countries are separate shops and are not covered. Every price is TRY, the currency is stated on every row, and prices are numbers with Watsons' own formatted string alongside.
A product URL ends in /p/BP_153319, and search returns that code as product_id. product/detail and product/reviews accept the code, its bare number or the whole URL. Before anything is returned, the engine checks that the record Watsons served is the code you asked for.
Two runs of 25 searches, 25 product records, 10 review calls and 10 suggestion calls were made live on 2026-09-15 with every call as a single attempt: 139 of 140 succeeded, and the one miss was a network timeout on a product that answered five times out of five straight afterwards. A third run of 70 calls with the normal retry succeeded 70 of 70. A search page was 64 to 138 KB with a median of 1.1 s; a product record was 8 to 39 KB with a median of 1.7 s.
Six products were fetched through the API and as the product page shoppers see, then compared with the page's own structured data. Title, sku, price, availability, rating and review count matched on 6 of 6. A scan of every string in 70 live responses found no HTML tags or entities, including descriptions Watsons writes as pasted word-processor HTML.
şampuan returned 1,049 products. brand ELSEVE gave 35, all ELSEVE. 100 to 200 TRY gave 383, all inside the band. in_stock gave 869. Both price sorts were strictly monotone, page 2 shared nothing with page 1, and a category code with no keyword browsed 179 mascaras.
The fields exist and read Watsons' own storefront sources, but on 2026-09-15 they were empty for a logged-out shopper: 0 of 672 search rows and 0 of 25 records. The rendered category page agreed, showing one price. Basket offers such as a spend threshold are returned as promotion_message and never taken off price.
Watsons sends 0.00 for a product it is not pricing. The product record for one such item said not purchasable and out of stock. price is null in that case, so a tracker never logs a false price drop.
review_count counts star ratings, while product/reviews returns the reviews Watsons publishes text for: 619 of 620 on one product, 3 of 282 on another, 0 of 77 on a third. Reviewer names are not returned.
There is no structured ingredients field on watsons.com.tr. ingredients is filled from the description's own ingredients section, 13 of 25 measured products, and how_to_use from its usage section, 20 of 25. Dimensions come without a unit because Watsons publishes none.
What people build with Watsons Türkiye
The jobs this data is most often used for.
endpoints
credit per call
Beauty brands and distributors track their shelf price, unit stock and rating at Watsons Türkiye by product code or EAN barcode.
Retail-analytics teams sweep a category with no keyword and read price, stock level and review count for every product on the shelf.
Price-comparison sites match Watsons products to other Turkish retailers by EAN, returned on 665 of 674 measured search rows.
Catalogue teams pull the full record with 1200 px images, breadcrumb, clean description sections and the written ingredients where Watsons publishes them.
What Watsons Türkiye 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 →- 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 -X POST https://api.reefapi.com/watsons-tr/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"şampuan"}'import requests
r = requests.post(
"https://api.reefapi.com/watsons-tr/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "şampuan"
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Watsons Türkiye.
Get a free key →Is the Watsons Club member price returned, and is it ever mixed into price?▾
It has its own field, member_price, and it is never written into price. price is always the shelf price every shopper sees. On 2026-09-15 no product carried a member price: 0 of 674 search rows and 0 of 25 product records, with the rendered category page agreeing. If Watsons runs a Club price again, member_price will fill in and price will stay the shelf price, so a price tracker never records a members-only number as the public one.
Why is price null on a few products instead of 0?▾
Because Watsons sends 0.00 for a product it is not currently pricing, and a tracker that stores that as a real price records a 100 percent price drop. Measured on a 10 ml shampoo sample: the search row said 0,00 TL, while the product record said no price, not purchasable and out of stock. The engine returns price and price_display as null in both places and keeps the stock fields, which say why.
Is the stock a real number?▾
Yes. stock_level is the unit count Watsons publishes, and stock_status is its own band of inStock, lowStock or outOfStock. Measured values ran from 3 units, flagged lowStock, to 3,949. One caveat applies to the product page: its structured data only says InStock where Watsons' own data says lowStock, so the API is the more precise source.
Why does product/reviews return fewer reviews than review_count?▾
Because review_count counts every star rating, while Watsons publishes text for written reviews only. Measured on 2026-09-15: one product had 620 ratings and 619 written reviews, another 282 ratings and 3 written, and another 77 ratings and none written. That last product returns an empty review list alongside a 4.45 rating. That is correct, not a failure, and the field is named total_written_reviews so it cannot be read as review_count. Reviews come back newest first. Watsons sends them in no date order, so the engine sorts them.
Are shades and sizes variants of one product?▾
No. On watsons.com.tr each lipstick or foundation shade is its own product with its own code, price, stock and barcode. variants[] reports what Watsons publishes on the record, which for a shade is a single entry: 1 of 25 measured records carried one. To collect a whole shade range, search the product line and read each row.
Are ingredients returned?▾
Only when Watsons writes them. There is no structured ingredients field on the site; the specification block was an empty placeholder on every product sampled. The engine keeps the description's own section headings and fills ingredients from an ingredients or active-ingredients section, and how_to_use from a usage section. That filled ingredients on 13 of 25 measured products and how_to_use on 20 of 25. Everywhere else those fields are null rather than guessed from marketing text.
Which filters actually filter?▾
Each one was checked against the unfiltered result on 2026-09-15. The keyword şampuan returned 1,049 products. Adding brand ELSEVE cut that to 35, all ELSEVE. A 100 to 200 TRY band gave 383, every row inside the band. in_stock gave 869. The price sorts were strictly monotone over 40 rows in both directions, and page 2 shared no product with page 1. Brand names are matched in whatever casing Watsons uses, so you can type them in lower case: elseve matches ELSEVE, Elidor matches ELİDOR (50 products), creamol matches Creamol and nivea matches NIVEA. The available brand values come back in filters.brands. A category code with no keyword browses that category: mascara returned 179.
What does Watsons Türkiye NOT publish?▾
No seller field, because Watsons sells its own stock. No units for the package dimensions, so width, height and depth are returned as Watsons' raw strings with unit null. No structured ingredients, as above. No reviewer names are returned by this API. No stock in the search box's product suggestions: those rows reported a product out of stock while search reported 1,483 units in the same minute, so suggest returns terms, titles and prices only and stock comes from search and product/detail. On 2026-09-15 there were also no was-prices, member prices or multi-buy offers to return.
What is the Watsons Türkiye API?▾
Watsons Türkiye API is a ReefAPI endpoint group for turkish beauty and personal-care retailer: prices in try, stock levels, ratings and barcodes. It returns live JSON through POST requests under /watsons-tr/v1.
Is the Watsons Türkiye API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Watsons Türkiye calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Watsons Türkiye login or account?▾
No login to Watsons Türkiye 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 Watsons Türkiye 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 Watsons Türkiye API use?▾
Watsons Türkiye actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Watsons Türkiye from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call watsons-tr actions with the same key, credit pool and JSON envelope used by normal REST requests.
91 E-commerce & Marketplaces APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Watsons Türkiye, 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.
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.