Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Kitantik API page →
E-commerce & Marketplaces

Kitantik API & Scraper

Kitantik is the Turkish marketplace where second-hand booksellers (sahaf) and antique dealers list rare and used books, periodicals, postcards, coins, banknotes, stamps, records and collectibles, and where those shops also run timed auctions (mezat / müzayede).

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

This API reads it as JSON. `search` takes Turkish free text, a category, a shop, and the site's own filters: new or second-hand, auction lots only, with or without photo, binding, book features such as signed or first edition, a lira price range (min_price, max_price) and eight sort orders. `product` returns one listing in full: title, authors, publisher, year, every printed attribute (pages, binding, language, translator, place of print, dimensions, weight), condition and grade, price with the shop discount, stock, who pays shipping and the fee, all photos and the shop block with its rating, review count, completed orders and success rate. `auctions` lists open or finished auctions, `auction_lots` reads one auction's lots with starting bid, current bid, bid count, watchers and time left, and `lot_prices` refreshes the bids of up to 50 lots in one call. On 2026-10-07 a search for "roman" alone matched 457,587 listings and 51 shop auctions were open.

Reference

What a Kitantik field actually contains

Fields that read differently from how they look. Every row was measured against live Kitantik pages on 2026-10-07.

FieldWhat it holds
price_tryThe price the page prints, after the shop's own discount. Kitantik writes it Turkish style ("1.250,00 TL" is 1,250 lira). In 36 checks over 22 different fixed-price listings it matched the search card, the product page and the page's structured data every time.
original_price_try, store_discount_pctThe struck-through price and the shop's discount percentage when a shop runs one ("% 20 Mağaza indirimi"). Null when there is no discount.
is_auction (search)True for a listing that is in a running auction. Auction cards print "Müzayede" instead of a price, so price_try is null on them; the bids come from auction_lots, lot_prices or product.
schema_price_tryThe price in the page's structured data. For a fixed listing it equals price_try. For an auction lot it is the item's own list price, not a bid: one lot carried 750 TL there while it opened at 50 TL.
auction.bidsstarting_bid_try, current_bid_try (null until someone bids), bid_count, watcher_count, buy_it_now_price_try (null when the lot has no buy-it-now) and remaining_text, the time left as the site prints it.
shipping_paid_by, shipping_fee_try"Alıcı Öder" (buyer pays) with the fee in lira and the carrier, or seller-paid shipping with no fee. The fee is the number the page states for that listing.
condition, condition_gradecondition is İkinci El (second-hand) or Yeni (new); condition_grade is the shop's own grade such as "Çok iyi" or "İyi".
sellerThe shop: name, store_id, link, average rating and the number of reviews behind it, completed orders, success rate, the order value above which shipping is free, shops it shares shipping with, and its own about text. No e-mail or phone: Kitantik does not print them.
lot_statusin_auction while the auction runs. After an auction closes, unsold lots come back as ordinary listings with a fixed price (listed_after_auction); the final hammer price is not published.

Search reaches the first 501 pages of 20 results (10,020 listings) of any query; narrow with a category, shop or filter to see the rest. The total is Kitantik's own count.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/kitantik/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "nutuk"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "kitantik",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 2308.5,
    "record_count": 20,
    "bytes": 204961,
    "cache_hit": false,
    "upstream_requests": 1,
    "charged_credits": 3,
    "version": "1.0.0",
    "request_id": "c0f83b47519e45e1",
    "queue_ms": 1.7,
    "fetched_at": "2026-10-07T15:52:10.749Z"
  },
  "data": {
    "total": 3786,
    "reachable_total": 3786,
    "page": 1,
    "page_size": 20,
    "last_page": 190,
    "has_more": true,
    "sort": "relevance",
    "products": [
      {
        "product_id": "1br9qfyl4pl86k61x08",
        "title": "TÜRKİYE CUMHURİYET TARİHİ + NUTUK",
        "url": "https://www.kitantik.com/product/TURKIYE-CUMHURIYET-TARIHI-NUTUK_1br9qfyl4pl86k61x08",
        "image": "https://s3.cloud.ngn.com.tr/kitantik/images/2022-06-22/1br9qfyl4pj0rk11gt4-thumb.jpg",
        "kind": "book",
        "subtitle": "tü5rkiye cumhuriyeti tarih nutuk, Belge Yayınları",
        "condition": "İkinci El",
        "store_name": "eskidunyasi",
        "is_auction": false,
        "price_try": 250,
        "original_price_try": null,
        "store_discount_pct": null,
        "price_display": "250,00 TL",
        "list_price_try": 250,
        "category_path": [
          "Kitap",
          "Tarih",
          "Tarih Bilimi"
        ],
        "currency": "TRY"
      },
      {
        "product_id": "1br9qfwldbyyb0417ct",
        "title": "NUTUK NEDİR NE DEĞİLDİR-AHMET KÖKLÜGİLLER",
        "url": "https://www.kitantik.com/product/NUTUK-NEDIR-NE-DEGILDIR-AHMET-KOKLUGILLER_1br9qfwldbyyb0417ct",
        "image": "https://s3.cloud.ngn.com.tr/kitantik/images/2023-01-26/1br9qfwldbyyb0417cq-thumb.jpeg",
        "kind": "book",
        "subtitle": "NUTUK NEDİR NE DEĞİLDİR-AHMET KÖKLÜGİLLER",
        "condition": "İkinci El",
        "store_name": "Yonca_Kitabevi",
        "is_auction": false,
        "price_try": 98,
        "original_price_try": null,
        "store_discount_pct": null,
        "price_display": "98,00 TL",
        "list_price_try": 98,
        "category_path": [
          "Kitap",
          "Edebiyat, Kurgu",
          "Diğer"
        ],
        "currency": "TRY"
      },
      {
        "product_id": "1br9qfwmt2uya5u1i2a",
        "title": "Çocuklar İçin Nutuk Mustafa Kemal Atatürk",
        "url": "https://www.kitantik.com/product/Cocuklar-Icin-Nutuk-Mustafa-Kemal-Ataturk_1br9qfwmt2uya5u1i2a",
        "image": "https://s3.cloud.ngn.com.tr/kitantik/images/2026-08-21/1br9qfwmt2uya5u1i26-thumb.jpeg",
        "kind": "book",
        "subtitle": "Çocuklar İçin Nutuk Mustafa Kemal Atatürk, REN COCUK",
        "condition": "İkinci El",
        "store_name": "Sanal Çerci",
        "is_auction": false,
        "price_try": 55,
        "original_price_try": null,
        "store_discount_pct": null,
        "price_display": "55,00 TL",
        "list_price_try": 55,
        "category_path": [
          "Kitap",
          "Tarih"
        ],
        "currency": "TRY"
      }
    ],
    "categories": [
      {
        "category_id": 181,
        "name": "Kitap",
        "count": 3645,
        "level": "root"
      },
      {
        "category_id": 550,
        "name": "Tarih",
        "count": 2462,
        "level": "child"
      },
      {
        "category_id": 417,
        "name": "Süreli Yayınlar",
        "count": 516,
        "level": "child"
      }
    ]
  }
}
Actions

What the Kitantik API does

ActionDescriptionConcrete use caseKey params
searchSearch kitantik.com listings — second-hand and rare books, antiques, ephemera, coins, stamps, postcards, records — by keyword, category or shop, with the site's own filters. Needs at least one of query, category_id or store_id.Pricing teams call search to search kitantik.com listings.query, category_id, store_id, condition, listing_type, ...
productFull listing page: title, authors, publisher, year, every printed attribute (pages, binding, language, dimensions, weight…), condition and grade, price and store discount, stock, shipping payer/carrier/fee, all photos, the shop block (rating, review count, completed orders, success rate) and, for an auction lot, the live bid state.Marketplace operators call product to get full listing page.product_id
auctionsAuctions (mezat / müzayede) run by kitantik shops — open ones or the archive: title, shop, description, closing time, number of lots.Catalog enrichment teams call auctions to get auctions (mezat / müzayede) run by kitantik shops.status, query, sort, page, per_page
auction_lotsOne auction's lots with their live bids: lot number, title, photo, grade, starting bid, current bid, bid and watcher counts, buy-it-now price, time left.Retail analysts call auction_lots to get one auction's lots with their live bids.auction_id
lot_pricesLive bid state for up to 50 auction lots in one call — the cheap way to watch lots you already found.Pricing teams call lot_prices to get live bid state for up to 50 auction lots in one call.auction_product_ids
Code samples

Call search from your stack

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

Who uses this API and why

  • Price rare and second-hand Turkish books: search a title or author, filter signed or first edition and track TL prices across shops.
  • Watch live coin, stamp and banknote auctions and alert on lots still at their opening bid near closing time.
  • Build a dealer directory of Turkish booksellers and antique shops with rating, review count, completed orders and stock size.
  • Monitor how often a title appears for sale and at what condition grade, for a collector's want list.
  • Feed a cataloguing tool with publisher, year, translator, page count, binding and dimensions of Turkish editions.
FAQ

Questions developers ask before integrating

Do I need a Kitantik account?

No. Everything is read logged out: listings, shops, auctions and the current bids. Placing a bid and the bid history need an account and are not part of this API.

Can I follow an auction while it runs?

Yes. auction_lots gives every lot with its auction_product_id and current bid; pass up to 50 of those ids to lot_prices for a cheap refresh of starting bid, current bid, bid count, watchers and time left.

What happens to a lot when the auction ends?

The auction moves to the archive (auctions with status=closed). Lots that did not sell are re-listed by the shop at a fixed price and show lot_status listed_after_auction; Kitantik does not publish the hammer price.

Can I search only signed or first-edition books?

Yes, features=signed or features=first_edition. For "roman" that narrowed 457,587 listings to 4,777 signed and 28,466 first editions. Leather bindings: 392.

How do I get one shop's whole stock?

Every product carries seller.store_id; pass it to search as store_id, alone or with a query. One Ankara shop we measured had 17,734 live listings.

Which categories are covered?

All three roots: Kitap (books, category_id 181), Efemera, Müzik, Sinema (ephemera, coins, stamps, postcards, records, 103) and Antika-Koleksiyon, Hobi-Sanat (antiques and collectibles, 1). Every search returns the category facet with ids and counts.

How deep can I page?

Up to page 501 of 20 results. Past that Kitantik itself stops answering, so reachable_total and last_page tell you where the window ends.

Are authors and publishers available for antiques too?

Only for books. Antiques and ephemera carry title, grade, description, attributes when the shop fills them, price and photos; author, publisher and year were empty on all 9 non-book items we read.

What is the Kitantik API?

Kitantik API is a ReefAPI endpoint group for turkey's rare-book and antiques marketplace: second-hand books, ephemera, coins, stamps and live shop auctions with current bids. It returns live JSON through POST requests under /kitantik/v1.

Is the Kitantik API free to try?

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

Do I need a Kitantik login or account?

No login to Kitantik 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 Kitantik 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 Kitantik API use?

Kitantik actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call Kitantik from an AI assistant or MCP client?

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

docs / kitantik

Kitantik

Turkey's rare-book and antiques marketplace: second-hand books, ephemera, coins, stamps and live shop auctions with current bids.

base /kitantik/v15 endpoints
post/kitantik/v1/product2 credits

Full listing page: title, authors, publisher, year, every printed attribute (pages, binding, language, dimensions, weight…), condition and grade, price and store discount, stock, shipping payer/carrier/fee, all photos, the shop block (rating, review count, completed orders, success rate) and, for an auction lot, the live bid state.

ParameterAllowed / rangeDescription
product_idrequired—A kitantik product id (`product_id` from search, auction_lots or a product URL's last segment after '_'), or the full kitantik.com/product/… URL.
Try in playground →
post/kitantik/v1/auctions2 credits

Auctions (mezat / müzayede) run by kitantik shops — open ones or the archive: title, shop, description, closing time, number of lots.

ParameterAllowed / rangeDescription
status = activeoptionalactive · closedactive = open auctions (default); closed = the archive.
queryoptional—Words in the auction title.
sort = ending_soonestoptionalending_soonest · newest · store_name · titleOrder of auctions.
page = 1optional1–1000Page number.
per_page = 50optional20 · 30 · 40 · 50Auctions per page: 20, 30, 40 or 50.
Try in playground →
post/kitantik/v1/auction_lots3 credits

One auction's lots with their live bids: lot number, title, photo, grade, starting bid, current bid, bid and watcher counts, buy-it-now price, time left.

ParameterAllowed / rangeDescription
auction_idrequired—An auction id (`auction_id` from auctions or a product's `auction` block) or a kitantik.com/mezat-muzayede/… URL.
page = 1optional1–1000Page of lots.
per_page = 50optional20 · 30 · 40 · 50Lots per page: 20, 30, 40 or 50 (the auction page's own selector).
Try in playground →
post/kitantik/v1/lot_prices1 credit

Live bid state for up to 50 auction lots in one call — the cheap way to watch lots you already found.

ParameterAllowed / rangeDescription
auction_product_idsrequired—Up to 50 `auction_product_id` values (from auction_lots or a product's `auction` block). Returns the live bid state the auction page itself polls.
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.