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 →
E-commerce & Marketplaces

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": 3294.4,
    "record_count": 20,
    "bytes": 478537,
    "cache_hit": false,
    "page": 1,
    "total": 3096148,
    "charged_credits": 2,
    "version": "0.1.0"
  },
  "data": {
    "products": [
      {
        "product_id": 104205004,
        "title": "Apple MFHP4TU/A Airpods Pro 3 Bluetooth Kulak İçi Kulaklık",
        "brand": "Apple",
        "url": "https://www.n11.com/urun/apple-mfhp4tua-airpods-pro-3-bluetooth-kulak-ici-kulaklik-104205004",
        "price": 11542.03,
        "price_text": "11.542,03 TL",
        "currency": "TRY",
        "discount_rate": 8,
        "rating": 4.5,
        "rating_count": 225,
        "image": "https://n11scdn.akamaized.net/a1/org/04/12/62/47/IMG-462336211837159551.jpg",
        "seller": "MEDIAMARKT",
        "category": "Bluetooth Kulaklık",
        "in_stock": true
      },
      {
        "product_id": 98196396,
        "title": "Samsung Galaxy A17 5G 8 GB 256 GB (Samsung Türkiye Garantili)",
        "brand": "Samsung",
        "url": "https://www.n11.com/urun/samsung-galaxy-a17-5g-8-gb-256-gb-samsung-turkiye-garantili-98196396",
        "price": 16599,
        "price_text": "16.599 TL",
        "currency": "TRY",
        "discount_rate": null,
        "rating": 5,
        "rating_count": 442,
        "image": "https://n11scdn.akamaized.net/a1/org/12/81/85/86/IMG-8717982485371863171.jpg",
        "seller": "n11",
        "category": "Cep Telefonu",
        "in_stock": true
      },
      {
        "product_id": 129237401,
        "title": "POCO C81 Pro 4 GB 128 GB (Xiaomi Türkiye Garantili)",
        "brand": "Poco",
        "url": "https://www.n11.com/urun/poco-c81-pro-4-gb-128-gb-xiaomi-turkiye-garantili-129237401",
        "price": 10299,
        "price_text": "10.299 TL",
        "currency": "TRY",
        "discount_rate": 0,
        "rating": 5,
        "rating_count": 46,
        "image": "https://n11scdn.akamaized.net/a1/org/01/71/10/73/IMG-4635463795675300814.png",
        "seller": "BittiBitiyor",
        "category": "Cep Telefonu",
        "in_stock": true
      }
    ],
    "count": 20,
    "total": 3096148,
    "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 teams call product/detail to get full n11 product by `url` or `product_id`.url, product_id, max_rotations
product/reviewsEvery customer review n11 publishes for a product, paginated and ordered. `sort=newest` (the default) puts the most recent review first and holds that order across pages, so you can poll a product for new reviews; `sort=helpful` orders by n11's helpful-vote count instead. Each page carries the honest totals — how many people rated the product, how many wrote text, the star breakdown, total_pages for your page_size, and how deep n11 actually serves — plus n11's own AI review summary. Reviewer names are returned exactly as n11 publishes them on the product page — usually masked (e.g. 'a*** s***'), but n11 does not mask all of them, so treat the field as public site content rather than as anonymised.Marketplace operators call product/reviews to get every customer review n11 publishes for a product, paginated and ordered.url, product_id, page, page_size, sort, ...
searchSearch n11 by keyword (`query`), paginated + sortable. Every card carries product_id, title, brand, price, rating, image, url.Catalog enrichment teams 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.Retail analysts 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 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, capturing the final destination — a short link opened directly dead-ends on an app-install page instead of the item. Classifies product/store/campaign/category; for products it embeds the full product detail (include_detail) so one call returns both. Deterministic per token → cacheable.Marketplace operators 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-2 credits per successful call. Failed or blocked calls are free. 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/detail2 credits

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
urloptional—Full n11 product URL (…/urun/<slug>-<id>). Provide url OR product_id.
product_idoptional—n11 product id — the digits at the end of /urun/<slug>-<id>. Provide product_id OR url (url is most reliable).
max_rotations = 6optional1–12Advanced: how many times to retry the fetch (1-12, default 6).
Try in playground →
post/n11/v1/product/reviews1 credit

Every customer review n11 publishes for a product, paginated and ordered. `sort=newest` (the default) puts the most recent review first and holds that order across pages, so you can poll a product for new reviews; `sort=helpful` orders by n11's helpful-vote count instead. Each page carries the honest totals — how many people rated the product, how many wrote text, the star breakdown, total_pages for your page_size, and how deep n11 actually serves — plus n11's own AI review summary. Reviewer names are returned exactly as n11 publishes them on the product page — usually masked (e.g. 'a*** s***'), but n11 does not mask all of them, so treat the field as public site content rather than as anonymised.

ParameterAllowed / rangeDescription
urloptional—Full n11 product URL (…/urun/<slug>-<id>). Provide url OR product_id.
product_idoptional—n11 product id — the digits at the end of /urun/<slug>-<id>. Provide product_id OR url (url is most reliable).
page = 1optional1–Review page — 1-BASED (1, 2, 3…); summary.total_pages says how many exist and summary.reachable_pages how many n11 serves.
page_size = 20optional1–100Reviews per page (1–100, default 20). A larger page_size also reaches further into the corpus, because n11 caps the OFFSET rather than the page number.
sort = newestoptionalnewest · helpfulReview ordering. `newest` (default) returns the most recent reviews first and keeps that order across pages. `helpful` orders by n11's helpful-vote count. n11 does not publish an oldest-first or rating-ordered view of its reviews.
max_rotations = 6optional1–12Advanced: how many times to retry the fetch (1-12, default 6).
Try in playground →
post/n11/v1/category2 credits

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

ParameterAllowed / rangeDescription
urlrequired—Full 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: how many times to retry the fetch (1-12, default 6).
Try in playground →
post/n11/v1/seller2 credits

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

ParameterAllowed / rangeDescription
sellerrequired—Seller nickname (nickName) or full store URL (…/magaza/<nick>).
page = 1optional1–Result page (1-based).
max_rotations = 6optional1–12Advanced: how many times to retry the fetch (1-12, default 6).
Try in playground →
post/n11/v1/resolve2 credits

Resolve an n11 short-link (`token` or `url`, e.g. sl.n11.com/n/<token>) to its REAL n11.com URL + type, capturing the final destination — a short link opened directly dead-ends on an app-install page instead of the item. 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
tokenoptional—n11 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.
urloptional—Full 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 = trueoptional—When the token resolves to a product, also embed the full product detail under `product` (saves a second call). Default true.
max_rotations = 6optional1–12Advanced: how many times to retry the fetch (1-12, default 6).
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.