Get n11 data with one API
The n11 API returns product data from the Turkish marketplace n11 as clean JSON.
6 active endpoints. Every call is 1 credit.
- POST/n11/v1/product/detail
- POST/n11/v1/product/reviews
- POST/n11/v1/search
- POST/n11/v1/category
- POST/n11/v1/seller
- POST/n11/v1/resolve
What n11 endpoints does ReefAPI ship?
6 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
n11 API
2 of 6 endpoints, ready to run
Full n11 product by url or product_id.
// Press "Try it" and this pane shows exactly what the // live site returned this second — including an empty // result, if that is the truth. No key, no account.
How the n11 API works
n11 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 185 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.
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.
| Field | What it holds | Measured on product 106765738 |
|---|---|---|
| product_id | The digits at the end of /urun/<slug>-<id>. Also accepted as `url`, which resolves more reliably. | 106765738 |
| price / price_text / currency | Shelf price as a number, plus the Turkish-formatted string. Always TRY. | 11348.03, "11.348,03 TL", "TRY" |
| original_price / discount_rate | Strike-through price and percentage. Both come back empty when there is no shelf discount. | null / 0 |
| campaign / campaign_price | The basket-discount banner text and the in-basket price, both as strings. | "SEPETTE %4 İNDİRİM" / "10.894,11 TL" |
| gtin | EAN-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 / breadcrumb | Numeric n11 category id plus the full path. | 1000476, [Elektronik, Telefon & Aksesuarları, Cep Telefonu] |
| seller.id / seller.grade | Numeric store id and n11's 0-100 seller grade. | 1195623 / 100 |
| rating_breakdown | Star 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.
What people build with n11
The jobs this data is most often used for.
endpoints
credit per call
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.
What n11 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 185 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/n11/v1/product/detail \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"url":"https://www.n11.com/urun/samsung-galaxy-a07-4-gb-128-gb-samsung-turkiye-garantili-106765738"}'import requests
r = requests.post(
"https://api.reefapi.com/n11/v1/product/detail",
headers={"x-api-key": REEF_KEY},
json={
"url": "https://www.n11.com/urun/samsung-galaxy-a07-4-gb-128-gb-samsung-turkiye-garantili-106765738"
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up n11.
Get a free key →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.
15 More APIs APIs on the same key
One key, one credit pool, one response envelope. If you are pulling n11, you are one call away from the rest of the category — no second contract, no second integration.
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 184 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.