Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the n11 API page →
Brand Stores and Specialty Retail

n11 API & Scraper

The n11 API returns product data from the Turkish marketplace n11 as clean JSON.

6 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 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.

The primary product/detail endpoint returns a product's id, title, brand, price (TRY), original price, discount rate and campaign, and you can pull product/reviews, run a search, browse a category, pull a seller and resolve a URL. It is built for price intelligence, catalog enrichment and Turkish e-commerce analytics that need n11 data without a scraper. One ReefAPI key, one shared credit pool, the standard envelope.

Reference

n11 ids, TRY prices and the SEPETTE basket discount

n11 runs two separate discount mechanisms and the one shoppers actually pay is not the one in `price`. Every row below was read from a live call on product 106765738 (a Samsung Galaxy A07) on 2026-08-27. Prices are TRY on every action; there is no other currency and no other country storefront.

FieldWhat it holdsMeasured on product 106765738
product_idThe digits at the end of /urun/<slug>-<id>. Also accepted as `url`, which resolves more reliably.106765738
price / price_text / currencyShelf price as a number, plus the Turkish-formatted string. Always TRY.11348.03, "11.348,03 TL", "TRY"
original_price / discount_rateStrike-through price and percentage. Both come back empty when there is no shelf discount.null / 0
campaign / campaign_priceThe basket-discount banner text and the in-basket price, both as strings."SEPETTE %4 İNDİRİM" / "10.894,11 TL"
gtinEAN-13 barcode, on the product and again on each variant.8806097743415
variants[]One row per option combination with options[], price, stock and its own gtin.3 colorways; only the in-stock one carried price and stock
category.id / breadcrumbNumeric n11 category id plus the full path.1000476, [Elektronik, Telefon & Aksesuarları, Cep Telefonu]
seller.id / seller.gradeNumeric store id and n11's 0-100 seller grade.1195623 / 100
rating_breakdownStar histogram as five integer counts.five 339, four 23, three 5, two 2, one 9

campaign_price is a formatted Turkish string, not a number: "10.894,11 TL" uses a dot for thousands and a comma for the decimal. Parse it yourself, or compute it from `price` and the percentage in `campaign`. Types are not stable across actions either. rating_count came back as the string "378" on product/detail and as the integer 361 on a search row, and discount_rate was 0.0 on one search row and null on the next, so coerce before you compare.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/n11/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "telefon"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "n11",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 4158.9,
    "record_count": 20,
    "bytes": 559841,
    "cache_hit": false,
    "method": "ssr_window_model",
    "page": 1,
    "total": 2797689
  },
  "data": {
    "products": [
      {
        "product_id": 106765738,
        "title": "Samsung Galaxy A07 4 GB 128 GB  (Samsung Türkiye Garantili)",
        "brand": "Samsung",
        "url": "https://www.n11.com/urun/samsung-galaxy-a07-4-gb-128-gb-samsung-turkiye-garantili-[redacted-phone]",
        "price": 9054.5,
        "price_text": "9.054,50 TL",
        "currency": "TRY",
        "discount_rate": null,
        "rating": null,
        "rating_count": 197,
        "image": "https://n11scdn.akamaized.net/a1/org/15/56/76/79/IMG-[redacted-phone].jpg",
        "seller": "İÇKALEİLETİSİM",
        "category": "Cep Telefonu",
        "in_stock": true
      },
      {
        "product_id": 99175414,
        "title": "Xiaomi Redmi 15C 8 + 256 GB (Xiaomi Türkiye Garantili)",
        "brand": "Xiaomi",
        "url": "https://www.n11.com/urun/xiaomi-redmi-15c-8-256-gb-xiaomi-turkiye-garantili-99175414",
        "price": 11549,
        "price_text": "11.549 TL",
        "currency": "TRY",
        "discount_rate": 0,
        "rating": null,
        "rating_count": 412,
        "image": "https://n11scdn.akamaized.net/a1/org/13/22/54/35/IMG-[redacted-phone].png",
        "seller": "n11",
        "category": "Cep Telefonu",
        "in_stock": true
      },
      {
        "product_id": 117445317,
        "title": "Xiaomi Redmi Note 15 Pro 8 GB+256 GB (Xiaomi Türkiye Garantili)",
        "brand": "Xiaomi",
        "url": "https://www.n11.com/urun/xiaomi-redmi-note-15-pro-8-gb256-gb-xiaomi-turkiye-garantili-[redacted-phone]",
        "price": 22000,
        "price_text": "22.000 TL",
        "currency": "TRY",
        "discount_rate": 0,
        "rating": null,
        "rating_count": 112,
        "image": "https://n11scdn.akamaized.net/a1/org/11/58/08/30/IMG-[redacted-phone].jpg",
        "seller": "İÇKALEİLETİSİM",
        "category": "Cep Telefonu",
        "in_stock": true
      }
    ],
    "count": 20,
    "total": 2797689,
    "page": 1
  }
}
Actions

What the n11 API does

ActionDescriptionConcrete use caseKey params
product/detailFull n11 product by `url` or `product_id`: title, brand, price, discount, campaign (Sepette indirim), rating, review_count, images, seller, gtin/barcode, category, description, attributes, variants, rating_breakdown and sample reviews. Parsed from n11's own window.model JSON (durable).Pricing and assortment teams call product/detail to get full n11 product by `url` or `product_id`.url, product_id, max_rotations
product/reviewsCustomer reviews for a product by `url` or `product_id`, paginated (`page`). Returns author, text, rating, date, helpful_count.Brand-protection teams call product/reviews to get customer reviews for a product by `url` or `product_id`, paginated (`page`).url, product_id, page, max_rotations
searchSearch n11 by keyword (`query`), paginated + sortable. Every card carries product_id, title, brand, price, rating, image, url.Retail analysts call search to search n11 by keyword (`query`), paginated + sortable.query, page, sort, max_rotations
categoryBrowse an n11 category by its `url` (…/<slug> or …-c-<id>), paginated + sortable.Catalog enrichment teams call category to get browse an n11 category by its `url` (…/<slug> or …-c-<id>), paginated + sortable..url, page, sort, max_rotations
sellerSeller (mağaza) profile + its products by nickname or store `url`.Pricing and assortment teams call seller to get seller (mağaza) profile + its products by nickname or store `url`..seller, page, max_rotations
resolveResolve an n11 short-link (`token` or `url`, e.g. sl.n11.com/n/<token>) to its REAL n11.com URL + type. Follows www.n11.com/n/<token> THROUGH the wall (which a plain client 403s) and captures the final URL — escaping the app-only adj.st/Play-Store dead-end that the short link otherwise hits. Classifies product/store/campaign/category; for products it embeds the full product detail (include_detail) so one call returns both. Deterministic per token → cacheable.Brand-protection teams call resolve to resolve an n11 short-link (`token` or `url`, e.g.token, url, include_detail, max_rotations
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/n11/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"telefon"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.n11.search with {"query":"telefon"}.
Use cases

Who uses this API and why

  • Pricing teams call search and product/detail to track n11 prices and campaigns.
  • Catalog-enrichment tools use product/detail and product/reviews to fill listings.
  • Seller-intelligence products use seller to audit a competitor's n11 catalog.
FAQ

Questions developers ask before integrating

Where do I find an n11 product_id?

It is the digit block at the end of the product URL. For https://www.n11.com/urun/samsung-galaxy-a07-4-gb-128-gb-samsung-turkiye-garantili-106765738 the id is 106765738. Both `product_id` and `url` are accepted on product/detail and product/reviews, and the full URL is the more reliable of the two because it needs no id lookup on n11's side.

Why is discount_rate 0 and original_price null when n11 clearly shows a discount?

Because n11 has two different discounts and only one of them touches `price`. On the live call the product returned price 11348.03 TRY with discount_rate 0 and original_price null, while `campaign` said "SEPETTE %4 İNDİRİM" and `campaign_price` said "10.894,11 TL". The basket discount is applied at checkout, not on the price tag, so it never shows up as a discount_rate. If you are building price intelligence, read campaign_price alongside price or you will overstate what buyers actually pay.

What is in the variants array and why do most variants have a null price?

One row per option combination, each with an options[] list (in the measured case Dahili Hafıza and Renk), a price, a stock count and its own gtin. Only the purchasable variant carries numbers: the Mor 128 GB row returned price 11348.03 and stock 4, while the Yeşil and Siyah rows returned price null, stock null and in_stock false. One caution from the same response: sku_id repeated identically as 127400733191 across all three colorways, so key your variants on the option values plus gtin rather than on sku_id.

Does the product/reviews action work?

On 2026-08-27 it did not. Two live attempts, one by product_id and one by url, both returned error code TARGET_BLOCKED after roughly 30 seconds. We would rather say so than pretend otherwise. The dependable path for review data today is product/detail, which returned a complete rating_breakdown histogram (339 five-star, 23 four-star, 5 three-star, 2 two-star, 9 one-star) plus a sample_reviews array with author, text and date. Note that those sample reviews carry rating: null even though the histogram is complete.

What does the resolve action do with an n11 short link?

It follows an sl.n11.com/n/<token> link to its real n11.com destination and classifies what it found. A live call on token vnETLtk returned kind "store", final_url https://www.n11.com/magaza/n11 with n11's own affiliate query string intact, store_slug "n11", product_id null and http_status 301. When a token resolves to a product instead, kind is "product", product_id is filled and the full product detail is embedded under `product` so you do not need a second call.

What does the `total` in a search response mean?

It is n11's own match count for the keyword, not the number of rows you can page through. A live search for "telefon" returned count 20 for page 1 and total 3037505. Treat total as a market-size signal, and page with `page` until the products array comes back short.

Why are brand, url, image and category null in the seller action's product cards?

The seller storefront and the search results are two different n11 surfaces carrying different amounts of data per card. A live call on seller "tepeiletişim" returned seller id 3410850 and 6 products with product_id, title, price, currency, rating and in_stock filled, but brand, url, image and category all null. Search rows for the same kind of product carry all of them. If you need the missing fields, take the product_id from the seller response and call product/detail.

Is there a language or currency option?

No, and there does not need to be. n11 is a single Turkish marketplace: every price came back in TRY, every category breadcrumb and attribute name came back in Turkish, and campaign text is Turkish marketing copy. Your query strings should be Turkish too. Searching "telefon" returns phones; searching "phone" does not work nearly as well.

What is the n11 API?

n11 API is a ReefAPI endpoint group for n11 It returns live JSON through POST requests under /n11/v1.

Is the n11 API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. n11 calls use the same shared credit balance as every other ReefAPI engine.

Do I need a n11 login or account?

No login to n11 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 n11 data?

The page example is captured from a live product/detail call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the n11 API use?

n11 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 n11 from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call n11 actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / n11

n11

n11

base /n11/v16 endpoints
post/n11/v1/product/detail1 credit

Full n11 product by `url` or `product_id`: title, brand, price, discount, campaign (Sepette indirim), rating, review_count, images, seller, gtin/barcode, category, description, attributes, variants, rating_breakdown and sample reviews. Parsed from n11's own window.model JSON (durable).

ParameterAllowed / rangeDescription
urloptionalFull n11 product URL (…/urun/<slug>-<id>). Provide url OR product_id.
product_idoptionaln11 product id — the digits at the end of /urun/<slug>-<id>. Provide product_id OR url (url is most reliable).
max_rotations = 6optional1–12Advanced: residential IP-rotation attempts (1-12, default 6).
Try in playground →
post/n11/v1/product/reviews1 credit

Customer reviews for a product by `url` or `product_id`, paginated (`page`). Returns author, text, rating, date, helpful_count.

ParameterAllowed / rangeDescription
urloptionalFull n11 product URL (…/urun/<slug>-<id>). Provide url OR product_id.
product_idoptionaln11 product id — the digits at the end of /urun/<slug>-<id>. Provide product_id OR url (url is most reliable).
page = 1optional1–Result page (1-based).
max_rotations = 6optional1–12Advanced: residential IP-rotation attempts (1-12, default 6).
Try in playground →
post/n11/v1/category1 credit

Browse an n11 category by its `url` (…/<slug> or …-c-<id>), paginated + sortable.

ParameterAllowed / rangeDescription
urlrequiredFull n11 category URL (…/<slug> or …-c-<id>).
page = 1optional1–Result page (1-based).
sort = defaultoptionaldefault · price_asc · price_desc · best_seller · newestResult ordering.
max_rotations = 6optional1–12Advanced: residential IP-rotation attempts (1-12, default 6).
Try in playground →
post/n11/v1/seller1 credit

Seller (mağaza) profile + its products by nickname or store `url`.

ParameterAllowed / rangeDescription
sellerrequiredSeller nickname (nickName) or full store URL (…/magaza/<nick>).
page = 1optional1–Result page (1-based).
max_rotations = 6optional1–12Advanced: residential IP-rotation attempts (1-12, default 6).
Try in playground →
post/n11/v1/resolve1 credit

Resolve an n11 short-link (`token` or `url`, e.g. sl.n11.com/n/<token>) to its REAL n11.com URL + type. Follows www.n11.com/n/<token> THROUGH the wall (which a plain client 403s) and captures the final URL — escaping the app-only adj.st/Play-Store dead-end that the short link otherwise hits. Classifies product/store/campaign/category; for products it embeds the full product detail (include_detail) so one call returns both. Deterministic per token → cacheable.

ParameterAllowed / rangeDescription
tokenoptionaln11 short-link token — the part after /n/ in https://sl.n11.com/n/<token> or https://www.n11.com/n/<token>. Provide token OR url.
urloptionalFull n11 short-link (sl.n11.com/n/…, www.n11.com/n/…, or an adj.st link carrying the token). Provide url OR token.
include_detail = trueoptionalWhen the token resolves to a product, also embed the full product detail under `product` (saves a second call). Default true.
max_rotations = 6optional1–12Advanced: residential IP-rotation attempts (1-12, default 6).
Try in playground →