Teknosa API & Scraper
The Teknosa API returns Türkiye's electronics retailer and its marketplace as clean JSON, in four actions: search, product/detail, product/reviews and search/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.
A search row carries the product code, title, brand, image, the public price in TRY with the struck-through price and discount when Teknosa shows one, the TeknoClub members-only price as its own field, the interest-free instalment offer, the seller (Teknosa itself or a marketplace store), the rating and review count, the EAN barcode, the category path and a sponsored flag. search filters by seller, brand and price range, browses a category by URL or code, offers the six orderings the site offers, and returns the sellers, brands and price bands available. product/detail adds the seller who holds the buy box with its trader badges, every other seller's offer with its own price and dispatch time, the per-star rating breakdown, the full image gallery, the breadcrumb, the specification table, the description and bullet points, and the product's basket campaigns kept apart from the price. Measured on 2026-09-15: 42 of 42 live cases behaved as expected, with 22 of 22 filter, paging and price checks. Across 445 search rows from 25 searches, title, price, seller and category were filled on 445 of 445 and the barcode on 423. On six products the price, title, seller, availability, rating and review count were compared with the product page itself: 6 of 6 matched on every field. In a 70-call reliability run with every call made as a single attempt, 70 of 70 succeeded, and a second 70-call run with the normal retry also succeeded 70 of 70. No Teknosa account, no browser. One ReefAPI key and the standard { ok, data, meta, error } envelope.
Which Teknosa price is which
A Teknosa page can show up to three numbers for the same product, and a marketplace product can show a different seller's price than Teknosa's own. They mean different things, so the engine returns them as different fields.
| Field | What it is | Measured on 2026-09-15 |
|---|---|---|
| price | The public price a shopper without membership pays, from the seller holding the buy box | 445 of 445 search rows; equal to the page's own structured-data price on 6 of 6 compared products |
| was_price, discount_percent | The struck-through price and percentage, only when Teknosa shows one | 29 of 445 search rows |
| member_price | The TeknoClub members-only price ('Üyelere Özel'). Never written into price | 11 of 445 search rows; a headphone at 1,499 TL public and 1,349 TL for members |
| seller | Who holds the buy box. On a Teknosa-stocked product this can be a marketplace store | An iPhone 17 Pro showed a marketplace store at 116,799 TL first, with Teknosa's own offer of 116,999 TL listed under other sellers |
| other_offers[] | Every other seller's offer with its price, dispatch time and the seller_id to re-open the page for that seller | 12 of 25 measured product records had at least one |
| installment | 'Peşin fiyatına N x', an interest-free split of the same price. Shopping-credit teasers are not prices and are not returned | 354 of 445 search rows |
| campaigns[] | Basket-level offers such as a discounted add-on above a spend threshold. Never subtracted from price | 7 of 25 product records |
The price attributes Teknosa leaves in its page markup for analytics are not the shown price on marketplace products or members-only offers. One marketplace phone carried 30,849 there while the page and its structured data showed 39,999. The engine reads the price the shopper sees.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/teknosa/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "airfryer"
}
}{
"ok": true,
"meta": {
"api": "teknosa",
"endpoint": "search",
"mode": "live",
"latency_ms": 1421,
"record_count": 20,
"bytes": 881062,
"cache_hit": false,
"pagination": {
"page": 1,
"has_more": true,
"total": 190
}
},
"data": {
"results": [
{
"position": 1,
"product_id": "120412509",
"title": "Xiaomi Mi Smart Air Fryer 3.5 LT Yağsız Fritöz",
"brand": "Xiaomi",
"url": "https://www.teknosa.com/xiaomi-mi-smart-air-fryer-35-lt-yagsiz-fritoz-p-120412509",
"image": "https://reimg-teknosa-cloud-prod.mncdn.com/mnresize/300/300/productimage/120412509/120412509_0_MC/56452563.png",
"sponsored": false,
"price": 8766,
"currency": "TRY",
"was_price": null,
"discount_percent": null,
"discount_amount": null,
"member_price": null,
"member_price_label": null,
"installment": {
"months": 3,
"monthly_amount": 2922,
"same_as_cash_price": true
},
"seller": {
"name": "[redacted-name]",
"shop_id": "3602",
"is_teknosa": false
},
"rating": 4.6,
"review_count": 39,
"rating_scale": 5,
"in_stock": null,
"stock_label": null,
"free_shipping": null,
"category": "Elektrikli Mutfak Aleti",
"category_path": [
"Elektrikli Ev Aletleri",
"Elektrikli Mutfak Aleti",
"Fritöz & Airfryer"
],
"barcode": "6934177728594",
"mpn": null,
"badges": [
"Çok Satanlar"
]
},
{
"position": 2,
"product_id": "120414701",
"title": "Philips Hd9285/96 Xxl Airfryer",
"brand": "Philips",
"url": "https://www.teknosa.com/philips-hd928596-xxl-airfryer-p-120414701",
"image": "https://reimg-teknosa-cloud-prod.mncdn.com/mnresize/300/300/productimage/120414701/120414701_0_MC/146022005.jpg",
"sponsored": false,
"price": 8990,
"currency": "TRY",
"was_price": null,
"discount_percent": null,
"discount_amount": null,
"member_price": null,
"member_price_label": null,
"installment": {
"months": 3,
"monthly_amount": 2996.67,
"same_as_cash_price": true
},
"seller": {
"name": "[redacted-name]",
"shop_id": "3602",
"is_teknosa": false
},
"rating": 4.5,
"review_count": 8,
"rating_scale": 5,
"in_stock": true,
"stock_label": "Satışta",
"free_shipping": null,
"category": "Elektrikli Mutfak Aleti",
"category_path": [
"Elektrikli Ev Aletleri",
"Elektrikli Mutfak Aleti",
"Fritöz & Airfryer"
],
"barcode": "8720389035791",
"mpn": null,
"badges": [
"Çok Satanlar"
]
},
{
"position": 3,
"product_id": "786690899",
"title": "Philips 5000 Serisi XXL Connected HD9285/96 7.2 L Wi-Fi Bağlantı Pişirme Tepsisi ve Izgara Plaka Airfryer",
"brand": "Philips",
"url": "https://www.teknosa.com/philips-5000-serisi-xxl-connected-hd928596-72-l-wi-fi-baglanti-pisirme-tepsisi-izgara-plaka-airfryer-p-786690899",
"image": "https://reimg-teknosa-cloud-prod.mncdn.com/mnresize/300/300/productimage/786690899/786690899_0_MC/885cac9e9b874aa386321b206d01c94f.jpg",
"sponsored": false,
"price": 9567,
"currency": "TRY",
"was_price": 10388,
"discount_percent": 8,
"discount_amount": 821,
"member_price": null,
"member_price_label": null,
"installment": {
"months": 3,
"monthly_amount": 3189,
"same_as_cash_price": true
},
"seller": {
"name": "[redacted-name]",
"shop_id": "3602",
"is_teknosa": false
},
"rating": 4.5,
"review_count": 12,
"rating_scale": 5,
"in_stock": null,
"stock_label": null,
"free_shipping": null,
"category": "Elektrikli Mutfak Aleti",
"category_path": [
"Elektrikli Ev Aletleri",
"Elektrikli Mutfak Aleti",
"Fritöz & Airfryer"
],
"barcode": "8720389015144",
"mpn": null,
"badges": []
}
],
"count": 20,
"sponsored_count": 0,
"page": 1,
"total_results": 190,
"total_pages": 10,
"page_notice": null,
"sort": "relevance",
"query": "airfryer",
"category": null,
"filters": {
"sellers": [
{
"name": "Teknosa",
"value": "teknosa",
"count": 2
},
{
"name": "Popüler Ev Aletleri",
"value": "2668",
"count": 55
},
{
"name": "[redacted-name]",
"value": "3602",
"count": 46
}
],
"brands": [
{
"name": "Popüler",
"code": "22955",
"count": 55
},
{
"name": "Karaca",
"code": "20396",
"count": 14
},
{
"name": "Philips",
"code": "2438",
"count": 14
}
],
"price_bands": [
{
"label": "0 - 500 TL arası",
"min": 0,
"max": 500,
"count": 2
},
{
"label": "500 - 1000 TL arası",
"min": 500,
"max": 1000,
"count": 59
},
{
"label": "1.000 - 2.000 TL arası",
"min": 1000,
"max": 2000,
"count": 6
}
],
"categories": [
{
"name": "[redacted-name]",
"code": "117",
"count": 128
},
{
"name": "Beyaz Eşya ve Ankastre",
"code": "103",
"count": 58
},
{
"name": "Ev ve Yaşam",
"code": "115",
"count": 4
}
]
},
"fallback_results_dropped": 0,
"keyword_matches_on_page": 20
}
}What the Teknosa API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search teknosa.com by keyword or browse a category, one row per listing: product code, title, brand, image, public price in TRY with struck price and discount, the TeknoClub members-only price as its own field, seller (Teknosa or marketplace shop), rating and review count, EAN barcode, category path and whether the row is a sponsored ad. Filter by seller, brand and price range, sort the way the site does, page through results. The response lists the sellers, brands, price bands and sub-categories available. | Pricing teams call search to search teknosa.com by keyword or browse a category, one row per listing. | query, category, page, sort, seller, ... |
| product/detail | The full Teknosa product record by product code or URL: title, brand, public price in TRY with struck price and discount, TeknoClub member price, instalment offer, product campaigns, the buy-box seller with badges and every other seller's offer and price, dispatch time, availability, rating with per-star breakdown, all images, breadcrumb, specifications table, description and bullet points, EAN barcode and MPN. | Marketplace operators call product/detail to get the full Teknosa product record by product code or URL. | product_id, seller_id, max_rotations |
| product/reviews | Customer reviews of one Teknosa product, 5 per page as on the site: star rating, title, text, date, which seller the reviewer bought from and whether they are a verified buyer, plus the product's rating and per-star breakdown. Sort newest, oldest, or by stars. | Catalog enrichment teams call product/reviews to get customer reviews of one Teknosa product, 5 per page as on the site. | product_id, page, sort, max_rotations |
| search/suggest | Teknosa's own search-box suggestions for a partial keyword: suggested terms, top products with sale price and list price, related brands, categories and marketplace sellers. | Retail analysts call search/suggest to get teknosa's own search-box suggestions for a partial keyword. | query, max_rotations |
Call search from your stack
curl -X POST https://api.reefapi.com/teknosa/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"airfryer"}'import requests
r = requests.post(
"https://api.reefapi.com/teknosa/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "airfryer"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/teknosa/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "airfryer"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.teknosa.search with {"query":"airfryer"}.Who uses this API and why
- Brands and distributors track their public price, the TeknoClub member price and who holds the buy box at Teknosa by product code or EAN.
- Marketplace sellers see every competing seller's price and dispatch time for a product before repricing.
- Price-comparison sites match Teknosa products to other Turkish retailers by EAN, returned on 423 of 445 measured search rows.
- Retail analysts sweep an electronics category with seller, brand and price filters and read ratings and review counts per product.
Questions developers ask before integrating
Is the TeknoClub member price ever returned as the price?
No. On a members-only offer Teknosa's own markup puts the member price in the fields a scraper usually reads, while the public price is the struck line above it. The engine returns the public price as price and the member price as member_price. Measured on 2026-09-15: a Preo headphone came back as price 1,499 TL and member_price 1,349 TL, and the public price equalled the price in the page's structured data.
Why is the seller not Teknosa on some Teknosa products?
Because the buy box goes to whichever offer Teknosa ranks first, and that can be a marketplace store. On 2026-09-15 an iPhone 17 Pro 256 GB opened with a marketplace store at 116,799 TL, while Teknosa's own offer of 116,999 TL and a third store at 125,999 TL were listed as other sellers. product/detail returns the buy-box seller in seller and the rest in other_offers. Passing seller_id re-opens the product for one seller: 'teknosa' returned Teknosa's offer at 116,999 TL, with requested_seller_served true.
Is stock returned?
Only where Teknosa publishes something that means stock. The warehouse flag on search rows belongs to Teknosa's own inventory and is empty on every marketplace listing, so in_stock is true on Teknosa's in-stock rows and null otherwise, never false. product/detail returns availability from the product's structured data. The 'not in stock' sentence found on every product page is a hidden price-alert template and is ignored.
What happens when a keyword has no real match?
You get an empty result, not Teknosa's filler. teknosa.com pads a keyword it cannot match with unrelated products: on 2026-09-15 a made-up keyword returned 296 batteries, with no marker saying so. The engine checks whether any product on the page contains a word of the query, tolerating typos and Turkish letters. If none does, results is empty, total_results is 0 and fallback_results_dropped counts what was dropped. include_fallback_results=true returns those products separately. Tested on 42 real Turkish searches, including brands, categories and misspellings like 'iphnoe' and 'samsng': none was emptied. All 10 nonsense keywords were.
What happens past the last page?
You get an empty page with a page_notice, never the wrong products. Teknosa itself serves unrelated fallback products one page past the end of a large result set. The engine refuses any page at or beyond the site's own page count. Measured: 'kulaklık' page 60 of 53 came back empty with the notice. Pages hold about 20 products but vary between 14 and 21. They never overlap, and on one query the pages added up exactly to the stated 88 results.
How do reviews work?
product/reviews returns 5 reviews per page, as the site does, newest first by default. Each has the star rating, title, text, date, the seller the reviewer bought from, and a verified-buyer flag. Teknosa's own default order is not date order, so the engine defaults to newest and offers the site's default as a separate sort. Oldest, highest-rated and lowest-rated are also available. The response includes the product's rating and per-star breakdown. Reviewer names are not returned. A product with no reviews returns an empty list, and a product that does not exist returns NOT_FOUND.
Which filters actually filter?
Each was checked against the unfiltered result on 2026-09-15. 'kulaklık' returned 1,055 products. seller 'teknosa' cut that to 384, every row sold by Teknosa. brand code 2299 gave 110, every row JBL. A 500 to 1,000 TL band gave 216, every price inside the band. A mobile-phone category browse filtered to Teknosa's own offers between 10,000 and 50,000 TL gave 103. Both price sorts were strictly monotone, and page 2 shared no product with page 1. The seller values and brand codes come back in filters.sellers and filters.brands.
What does Teknosa NOT publish?
The colour and capacity variant list is not published server-side, so variants is null; each variant is its own product code in search. MPN was empty on the 25 product records measured and appears only on some Apple offers. Instalment tables per bank are loaded separately by the site and are not in product/detail, while search rows carry the interest-free 'N x' offer. Sponsored rows are flagged when Teknosa serves them; they appeared in a recon capture of the TV category and on none of the live runs.
What is the Teknosa API?
Teknosa API is a ReefAPI endpoint group for turkish electronics retailer and marketplace: prices in try, member prices, every seller's offer and reviews. It returns live JSON through POST requests under /teknosa/v1.
Is the Teknosa API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Teknosa calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Teknosa login or account?
No login to Teknosa 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 Teknosa 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 Teknosa API use?
Teknosa 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 Teknosa from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call teknosa actions with the same key, credit pool and JSON envelope used by normal REST requests.