# Kitantik — Turkish rare books, antiques, ephemera & auctions

> Search 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.
> ReefAPI engine `kitantik` · 5 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/kitantik/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed calls are free except verified SHEIN NOT_FOUND on product/detail and price (4 credits).
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http). Send the key as `Authorization: Bearer <key>`, or put it in the URL (`?key=<key>`) when the client has no header field, as ChatGPT does.

## Endpoints

### POST https://api.reefapi.com/kitantik/v1/search — 3 credits
Search 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.

**Parameters:**
- `query` (string, optional) — Free-text search over titles, authors, publishers and descriptions, as the site's own search box (Turkish works best: 'nutuk', 'osmanlıca', 'pul', 'kartpostal'). One of query, category_id or store_id is required.
- `category_id` (integer, optional) — Kitantik category id (the `category_id` values in the `categories` facet of any search, or a product's `category_path`). 181 = Kitap (books).
- `store_id` (string, optional) — Only this shop's listings: a `seller.store_id` / `store_id` value from product, auctions or auction_lots.
- `condition` (enum, optional) — New or second-hand (the site's 'Kullanım Durumu'). [one of: new, second_hand]
- `listing_type` (enum, optional, default "all") — 'auction' keeps only items currently in an auction (their cards carry no fixed price). Default all. [one of: all, auction]
- `has_image` (boolean, optional) — true = only listings with a photo, false = only listings without one.
- `binding` (enum, optional) — Book binding (Cilt Durumu). [one of: paperback, cloth, leather, leather_spine, other_binding, other]
- `features` (array, optional) — Book features, any of (all must apply): signed, first_edition, pocket, fine_binding, incunabula, fine_press, illustrated, illustrated_cover, set, gilt, manuscript, ottoman_turkish, limited_edition, ex_libris, dust_jacket. [one of: signed, first_edition, pocket, fine_binding, incunabula, fine_press, illustrated, illustrated_cover, set, gilt, manuscript, ottoman_turkish, limited_edition, ex_libris, dust_jacket]
- `min_price` (number, optional) — Lowest price in TRY.
- `max_price` (number, optional) — Highest price in TRY.
- `sort` (enum, optional, default "relevance") — Result order, the site's own sort menu. [one of: relevance, newest, price_asc, price_desc, title_asc, title_desc, year_asc, year_desc]
- `page` (integer, optional, default 1) — Page number, 20 results per page; the site serves pages up to 501 (10,020 results), whatever the total.

**Returns:** {total, page, last_page, has_more, products:[{product_id, title, url, image, kind, subtitle, condition, store_name, is_auction, price_try, original_price_try, list_price_try, category_path}], categories:[{category_id, name, count, level}]}

**Example request body:**
```json
{
  "query": "nutuk"
}
```

### POST https://api.reefapi.com/kitantik/v1/product — 2 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.

**Parameters:**
- `product_id` (string, required) — 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.

**Returns:** {product_id, product_code, title, authors, publisher, year, category_path, condition, condition_grade, availability, stock_quantity, price_try, original_price_try, store_discount_pct, shipping_*, attributes, description, images, seller{…}, auction{auction_id, ends_at, is_live, bids{…}} | null}

**Example request body:**
```json
{
  "product_id": "0z8kgltjm1x1zwp1vun"
}
```

### POST https://api.reefapi.com/kitantik/v1/auctions — 2 credits
Auctions (mezat / müzayede) run by kitantik shops — open ones or the archive: title, shop, description, closing time, number of lots.

**Parameters:**
- `status` (enum, optional, default "active") — active = open auctions (default); closed = the archive. [one of: active, closed]
- `query` (string, optional) — Words in the auction title.
- `sort` (enum, optional, default "ending_soonest") — Order of auctions. [one of: ending_soonest, newest, store_name, title]
- `page` (integer, optional, default 1) — Page number.
- `per_page` (integer, optional, default 50) — Auctions per page: 20, 30, 40 or 50. [one of: 20, 30, 40, 50]

**Returns:** {status, page, per_page, has_more, auctions:[{auction_id, title, url, image, store_id, store_name, description, ends_at, is_live, lot_count}]}

**Example request body:**
```json
{
  "status": "active",
  "per_page": 20
}
```

### POST https://api.reefapi.com/kitantik/v1/auction_lots — 3 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.

**Parameters:**
- `auction_id` (string, required) — An auction id (`auction_id` from auctions or a product's `auction` block) or a kitantik.com/mezat-muzayede/… URL.
- `page` (integer, optional, default 1) — Page of lots.
- `per_page` (integer, optional, default 50) — Lots per page: 20, 30, 40 or 50 (the auction page's own selector). [one of: 20, 30, 40, 50]

**Returns:** {auction_id, title, store_*, ends_at, is_live, lot_count, total_pages, page, lots:[{product_id, auction_product_id, lot_number, title, url, image, condition_grade, lot_status, bids{starting_bid_try, current_bid_try, bid_count, watcher_count, buy_it_now_price_try, is_open, remaining_text}}]}

**Example request body:**
```json
{
  "auction_id": "1br9qfwmuox3hml1xoh"
}
```

### POST https://api.reefapi.com/kitantik/v1/lot_prices — 1 credit
Live bid state for up to 50 auction lots in one call — the cheap way to watch lots you already found.

**Parameters:**
- `auction_product_ids` (array, required) — 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.

**Returns:** {lots:[{auction_product_id, product_id, starting_bid_try, current_bid_try, bid_count, watcher_count, buy_it_now_price_try, is_open, remaining_text}]}

**Example request body:**
```json
{
  "auction_product_ids": [
    "1br9qfwmupiut8a1m29"
  ]
}
```

## At scale
- **Volume:** 5M+ requests a day, measured at 60 requests a second across the fleet with no
  central bottleneck. Per-key limits are raised for high-volume accounts; volume pricing on request.
- **Missing a source:** tell us a site we do not cover and it becomes an engine. A customer asked
  for bestprice.gr on 21 Sep 2026 and it was in the catalog on 22 Sep.
- **Support:** 2 minute median time from a question in the live chat to the first answer. Setup
  help included, no support tier to buy.
- **One key, one credit pool** across every API. No per-site plans, no separate subscriptions.

## More
- Try it live, no code: https://reefapi.com/playground?engine=kitantik
- Human docs page: https://reefapi.com/docs/kitantik
- Overview page: https://reefapi.com/kitantik-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
