Hepsiburada API & Scraper
The Hepsiburada API returns product data from a leading Turkish e-commerce marketplace as clean JSON.
🤖 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 title, brand, price (TRY), original price, discount rate, images, rating, review count, stock and seller, and you can pull product/reviews, product/offers, run a search, browse a category and pull a seller. It is built for price intelligence, catalog enrichment and Turkish e-commerce analytics that need Hepsiburada data without a scraper. One ReefAPI key, one shared credit pool, the standard envelope.
Hepsiburada ids, Turkish price formatting and two rating scales
One Hepsiburada product carries three different ids, and the response gives you the price twice on purpose, because Turkish formatting uses the dot for thousands and the comma for kuruş. The merchant score and the product score also run on different scales. Measured on 2026-08-27 against HBCV00008749EE, a MacBook Air M4, and a 'laptop' search.
| Field | Format | Measured value |
|---|---|---|
| sku | "HBCV" plus 10 upper-case alphanumerics, 14 characters. This is what every action takes | HBCV00008749EE |
| product_id | "HBC" plus 10 characters, 13 long. Close to the sku but not equal to it | HBC00008749ED |
| listing_id | UUID identifying one merchant's offer on that product | 94e353b0-b2e7-41b8-ad56-4ddb0bb56b14 |
| price | A plain number in TRY, kuruş as the decimals | 67199.04 |
| price_formatted | The Turkish string as the site prints it: dot for thousands, comma for kuruş | "67.199,04" |
| original_price + discount_rate | Pre-discount price and an integer percentage | 69999.0 and 4 |
| rating / rating_count | Product score on a 0-5 scale | 4.9 over 302 ratings |
| merchant.rating | Merchant score on a 0-10 scale, a different scale from the product | 9.6 for PivotExpert, 10.0 for MegaCraft |
| other_offers[].quantity | That merchant's own stock count for the listing | 3 and 28 on the two competing offers |
| category (parameter) | "<slug>-c-<id>", and the id comes back as category_id | laptop-notebook-dizustu-bilgisayarlar-c-98 returned category_id 98 |
| gtin / variants[].barcode | Retail barcode digits | "0195949890413" |
| meta.render | "ssr" means real rows were served, "skeleton" means none were | skeleton returned record_count 0 with ok true |
Review authors arrive pre-masked by Hepsiburada ("Ahmet A*****"), review dates are ISO YYYY-MM-DD, and roughly 10 reviews come back per page. Page one of both search and category returned 14 rows in this measurement, so page with meta.pagination rather than assuming a fixed page size.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/hepsiburada/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "laptop"
}
}{
"ok": true,
"meta": {
"api": "hepsiburada",
"endpoint": "search",
"mode": "live",
"latency_ms": 4696.5,
"record_count": 12,
"bytes": 3532973,
"cache_hit": false,
"completeness_pct": 100,
"render": "ssr",
"pagination": {
"page": 1,
"has_more": true
},
"charged_credits": 3,
"version": "0.2.0"
},
"data": {
"results": [
{
"sku": "HBCV0000FC0KHB",
"title": "Lenovo IdeaPad Slim 3 AMD Ryzen 7 170 16GB 512GB SSD Freedos 15.3\" Taşınabilir Bilgisayar 83K700PSTR",
"brand": "Lenovo",
"url": "https://www.hepsiburada.com/lenovo-ideapad-slim-3-amd-ryzen-7-170-16gb-512gb-ssd-freedos-15-3-tasinabilir-bilgisayar-83k700pstr-p-HBCV0000FC0KHB",
"image": "https://productimages.hepsiburada.net/s/777/222-222/110001806741453.jpg",
"price": 34999,
"original_price": 34999,
"discount_rate": 0,
"currency": "TRY",
"rating": 4.9,
"rating_count": 25,
"merchant": null,
"installment_count": 6
},
{
"sku": "HBCV0000FX57Q2",
"title": "Acer Aspire Lite Intel Celeron N4500 8GB 256GB SSD Freedos 15.6\" Taşınabilir Bilgisayar NX.DHFEY.001",
"brand": "Acer",
"url": "https://www.hepsiburada.com/acer-aspire-lite-intel-celeron-n4500-8gb-256gb-ssd-freedos-15-6-tasinabilir-bilgisayar-nx-dhfey-001-p-HBCV0000FX57Q2",
"image": "https://productimages.hepsiburada.net/s/777/222-222/110001851281810.jpg",
"price": 13999,
"original_price": 13999,
"discount_rate": 0,
"currency": "TRY",
"rating": 3.5,
"rating_count": 8,
"merchant": null,
"installment_count": 6
},
{
"sku": "HBCV0000A9HHKX",
"title": "Casper Excalibur G870 Intel Core i7 13620H 24GB 1TB SSD RTX5060 Freedos 15.6\" 165Hz Taşınabilir Bilgisayar G870.1362-CF60X-C",
"brand": "Casper",
"url": "https://www.hepsiburada.com/casper-excalibur-g870-intel-core-i7-13620h-24gb-1tb-ssd-rtx5060-freedos-15-6-165hz-tasinabilir-bilgisayar-g870-1362-cf60x-c-p-HBCV0000A9HHKX",
"image": "https://productimages.hepsiburada.net/s/777/222-222/110001225302512.jpg",
"price": 71699,
"original_price": 71699,
"discount_rate": 0,
"currency": "TRY",
"rating": 4.8,
"rating_count": 243,
"merchant": null,
"installment_count": 6
}
],
"query": "laptop",
"page": 1,
"render": "ssr"
}
}What the Hepsiburada API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| product/detail | Full Hepsiburada product details by `url` or HB code (`sku`): title, brand, price, discount, images, rating, stock, seller (merchant), category, specifications, variants, top reviews, coupon/campaign badges, and all other_offers (every merchant selling the same product). | Pricing teams call product/detail to get full Hepsiburada product details by `url` or HB code (`sku`). | url, sku, max_rotations |
| product/reviews | Paginated customer reviews for a product by `sku` or `url`, in the order you ask for. `sort=newest` puts the most recently written reviews first and holds that order across pages, so you can poll a product for new reviews; without `sort` Hepsiburada returns its own default order, which is not chronological. Every page carries the honest totals — how many reviews exist, the full star histogram, the average computed from it, total_pages for your page_size, and how deep Hepsiburada actually lets you page. Note that Hepsiburada mixes written reviews with star-only ratings in the same list: rows carry `type` ('review' or 'rating') and `has_text` so you can keep only the ones with text. Up to 100 reviews per page. Reviewer names are published by Hepsiburada already masked (e.g. 'Ahmet K***') and the row's gender/birth-date fields are deliberately not returned. | Marketplace operators call product/reviews to get paginated customer reviews for a product by `sku` or `url`, in the order you ask for. | sku, url, page, page_size, sort, ... |
| product/offers | Every merchant listing (buybox + other sellers) for a product by `sku` or `url`: compare price, seller rating, shipping and stock across all sellers of the same item. | Catalog enrichment teams call product/offers to get every merchant listing (buybox + other sellers) for a product by `sku` or `url`. | sku, url, max_rotations |
| search | Search Hepsiburada products by keyword with optional sort and price/brand filters — returns results with SKU, title, brand, price, list price, rating, image and merchant. Results may be empty for very niche queries; try a broader keyword. | Retail analysts call search to search Hepsiburada products by keyword with optional sort and price/brand filters. | query, page, sort, price_min, price_max, ... |
| category | Browse a Hepsiburada category page by its path (`category` = '<slug>-c-<id>', e.g. 'laptop-notebook-dizustu-bilgisayarlar-c-98') with optional sort/price filters and pagination. Use it to list everything in a category, not just a keyword match. | Pricing teams call category to get browse a Hepsiburada category page by its path (`category` = '<slug>-c-<id>', e.g. | category, page, sort, price_min, price_max, ... |
| seller | Hepsiburada merchant (mağaza) profile + its product catalogue by store slug (`seller`, e.g. 'jollyshop') or full /magaza/<slug> URL. Returns seller info (name, rating, total product count) and a paginated list of the seller's products. | Marketplace operators call seller to get hepsiburada merchant (mağaza) profile + its product catalogue by store slug (`seller`, e.g. | seller, page, sort, price_min, price_max, ... |
Call search from your stack
curl -X POST https://api.reefapi.com/hepsiburada/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"laptop"}'import requests
r = requests.post(
"https://api.reefapi.com/hepsiburada/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "laptop"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/hepsiburada/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "laptop"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.hepsiburada.search with {"query":"laptop"}.Who uses this API and why
- Pricing teams call search and product/offers to track Hepsiburada prices and seller competition.
- Catalog-enrichment tools use product/detail to fill listings with images, specs and stock.
- Review-analysis products pull product/reviews to monitor sentiment and ratings for a product.
Questions developers ask before integrating
How does the API handle Turkish number formatting, where the dot means thousands?
It returns both forms so nothing has to be guessed. price is a plain number and price_formatted is the string exactly as the site prints it. For HBCV00008749EE that was price 67199.04 and price_formatted "67.199,04", which is sixty-seven thousand lira and four kuruş, not sixty-seven lira. The arithmetic checks out too: original_price 69999.0 with discount_rate 4 gives 67199.04.
What is the difference between sku, product_id and listing_id?
sku is the HBCV code in the URL and the value every action accepts, 14 characters, for example HBCV00008749EE. product_id is a shorter HBC code (HBC00008749ED) for the catalog entry. listing_id is a UUID for one merchant's offer, so a product has one listing_id per seller and those are what appear in other_offers[]. Fetch by sku.
Why is merchant.rating 9.6 when the product rating is 4.9?
They are two different scales inside the same response. Product ratings are the familiar 0-5, so 4.9 over 302 ratings on that MacBook. Merchant ratings are Hepsiburada's 0-10 store score, and the two sellers on that listing scored 9.6 and 10.0. The same 0-10 numbers appear as merchant_rating in other_offers[] and in the offers action, so do not normalise the two together.
Why did a search return ok true with zero results?
Because Hepsiburada served the page skeleton instead of rendered results, which happens on very narrow queries. The response says so: meta.render came back "skeleton" with record_count 0, against "ssr" with 14 rows for 'laptop'. Treat skeleton as 'ask again, more broadly', not as 'this product does not exist'.
Why is merchant null on search results but filled in on product detail?
The search grid does not publish the seller, so the field is left null rather than guessed. It was null on all 14 rows of a 'laptop' search. product/detail and product/offers read the buybox, so there you get merchant{name, id, city, country, rating, rating_count} plus seller_name, and every competing seller in other_offers[].
How do I compare every seller of the same product?
product/detail returns other_offers[] and offer_count, and product/offers returns those rows on their own. Each row carries merchant_name, merchant_id, price, original_price, discount_rate, in_stock, quantity, free_shipping, fast_shipping, fulfilled_by_hb, coupon_count, merchant_rating and buybox_order. Measured on that MacBook: two offers, 67199.04 from PivotExpert at buybox_order 1 and 99999.0 from MegaCraft at 2.
Are Hepsiburada variants separate products?
Yes. Each entry in variants[] has its own sku, url, price, price_formatted, barcode and a properties[] list of what makes it different. The 16GB/256GB MacBook (HBCV00008749EE at 67199.04) and the 24GB/512GB one (HBCV00008749MO at 82989.0) are separate SKUs that list each other as variants, so to price a specific configuration you fetch that variant's own sku.
Is there personal data in the reviews?
No. Hepsiburada masks review authors before publishing them, so they arrive as "Ahmet A*****" or "C**** D****" and there is nothing left to redact. Each review carries author, rating on the 0-5 scale, an ISO date such as "2025-09-05" and the body text. product/reviews serves about 10 per page and you walk them with page until meta.pagination.has_more is false.
What is the Hepsiburada API?
Hepsiburada API is a ReefAPI endpoint group for turkish marketplace products, prices and reviews. It returns live JSON through POST requests under /hepsiburada/v1.
Is the Hepsiburada API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Hepsiburada calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Hepsiburada login or account?
No login to Hepsiburada 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 Hepsiburada 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 Hepsiburada API use?
Hepsiburada 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 Hepsiburada from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call hepsiburada actions with the same key, credit pool and JSON envelope used by normal REST requests.