Teknosa API

Teknosa's shelf and marketplace as JSON: every price, every seller

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.

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

4 active endpoints. Every call is 1 credit.

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

What Teknosa 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

1 cr

Search teknosa.com by keyword or browse a category, one row per listing.

required
optional
query, category, page, sort, seller, brand, min_price, max_price, include_fallback_results, max_rotations

product/detail

1 cr

The full Teknosa product record by product code or URL.

required
product_id
optional
seller_id, max_rotations

product/reviews

1 cr

Customer reviews of one Teknosa product, 5 per page as on the site.

required
product_id
optional
page, sort, max_rotations

search/suggest

1 cr

Teknosa's own search-box suggestions for a partial keyword.

required
query
optional
max_rotations

Every parameter, every allowed value →

Teknosa API

3 of 4 endpoints, ready to run

View docs ↗

Teknosa products for a keyword or a category: product code, title, brand, image, public price in TRY, struck price, TeknoClub member price, seller, rating and review count, EAN and a sponsored flag, plus the sellers, brands and price bands available.

1 credit0 required · 8 optional
POST/teknosa/v1/search
ok2036 ms · 20 records · sample
{
  "ok": true,
  "meta": {
    "api": "teknosa",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 2036,
    "record_count": 20,
    "cache_hit": false
  },
  "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": "Rast Enterprise",
          "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": "Rast Enterprise",
          "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": "Rast Enterprise",
          "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": "Rast Enterprise",
          "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": "Elektrikli Ev Aletleri",
          "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
  }
}
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 Teknosa API works

Teknosa 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 /teknosa/v1/…

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

03
Pay
1 credit 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.

See who really sells a product on Teknosa, and at what price

Search gives you the shelf with sellers and member prices. The product record shows who holds the buy box and what every other seller asks.

01search
POST/teknosa/v1/search
{"query": "iphone 17 pro", "seller": "teknosa", "sort": "price_asc"}

Teknosa's own offers, cheapest first, each with price, struck price, member price, rating and product_id.

02detail
POST/teknosa/v1/product/detail
{"product_id": "100000058764"}

The buy-box seller, which can be a marketplace store, and other_offers with each seller's price, dispatch time and seller_id_param.

03detail
POST/teknosa/v1/product/detail
{"product_id": "100000058764", "seller_id": "teknosa"}

The same product re-opened on Teknosa's own offer, with requested_seller_served confirming it.

Teknosa's own price, the marketplace prices around it and who wins the buy box for a product, in three calls.

request
curl -X POST https://api.reefapi.com/teknosa/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"airfryer"}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "teknosa",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

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.

FieldWhat it isMeasured on 2026-09-15
priceThe public price a shopper without membership pays, from the seller holding the buy box445 of 445 search rows; equal to the page's own structured-data price on 6 of 6 compared products
was_price, discount_percentThe struck-through price and percentage, only when Teknosa shows one29 of 445 search rows
member_priceThe TeknoClub members-only price ('Üyelere Özel'). Never written into price11 of 445 search rows; a headphone at 1,499 TL public and 1,349 TL for members
sellerWho holds the buy box. On a Teknosa-stocked product this can be a marketplace storeAn 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 seller12 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 returned354 of 445 search rows
campaigns[]Basket-level offers such as a discounted add-on above a spend threshold. Never subtracted from price7 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.

Which market, which id, which price, and what Teknosa does not publish

teknosa.com only: one country, one currency, and the product code in every product URL. Measured on 2026-09-15 across 42 live e2e cases, a 70-call reliability run and a check against the rendered product page. Four of these lines go against us.

One market: Türkiye, prices in TRY

This engine reads teknosa.com, a single Turkish storefront. Every price is a TRY number and the currency is stated on every row.

The id is the number in the product URL

A product URL ends in -p-100000060317, and search returns that number as product_id. product/detail and product/reviews accept it or the whole URL. Before anything is returned, the engine checks that the page served is the product asked for; a product that does not exist returns NOT_FOUND.

How reliable and how heavy one call is

Measured on 2026-09-15 with 25 searches, 25 product records, 10 review calls and 10 suggestion calls. With every call a single attempt, 70 of 70 succeeded, and a second run with the normal retry was also 70 of 70. An earlier single-attempt run made while other tests were hitting the site at the same time lost 4 of 25 product records to network timeouts, which the normal retry is there to absorb. Median time: search 1.0 s, product record 2.4 s, reviews 2.3 s, suggestions 1.1 s.

Checked against the product page itself

Six products in five categories were fetched through the API and as the product page, then compared with the page's own structured data and the visible buy box: title, price, seller, availability, rating and review count matched on 6 of 6, and no TL price shown on those pages went unreturned. A scan of every string in the live responses found no HTML tags or entities.

Filters were proved to bite

'kulaklık' returned 1,055 products. seller 'teknosa' gave 384, all sold by Teknosa. brand code 2299 gave 110, all JBL. 500 to 1,000 TL gave 216, all inside the band. Both price sorts were strictly monotone and page 2 shared nothing with page 1.

Against us: no-match detection is our rule, not Teknosa's

Teknosa fills an unmatched keyword with unrelated products and publishes no flag. The engine empties a page when no product on it contains a query word: 0 of 42 real searches emptied and 10 of 10 nonsense keywords dropped on 2026-09-15. Dropped products stay available with include_fallback_results=true. A real search whose page happened to contain none of its words would be emptied too.

Against us: no variant list

Colour and capacity siblings are not published server-side, so variants is null; each is its own product code in search.

Against us: stock only for Teknosa's own offers

Teknosa's stock flag on search rows is its warehouse flag and is empty on every marketplace listing, so in_stock is null rather than guessed for those rows.

Against us: sponsored rows are request-dependent

Rows Teknosa serves as ads are flagged, but they appeared only in one recon capture (13 of 33 rows on a TV search) and on none of the live runs, so the flag's live coverage is unproven.

What people build with Teknosa

The jobs this data is most often used for.

4

endpoints

1

credit per call

01

Brands and distributors track their public price, the TeknoClub member price and who holds the buy box at Teknosa by product code or EAN.

02

Marketplace sellers see every competing seller's price and dispatch time for a product before repricing.

03

Price-comparison sites match Teknosa products to other Turkish retailers by EAN, returned on 423 of 445 measured search rows.

04

Retail analysts sweep an electronics category with seller, brand and price filters and read ratings and review counts per product.

What Teknosa 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/teknosa/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"airfryer"}'
python
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"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up Teknosa.

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

91 E-commerce & Marketplaces APIs on the same key

One key, one credit pool, one response envelope. If you are pulling Teknosa, 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.