Compare every Hepsiburada merchant selling the same product
The Hepsiburada API returns product data from a leading Turkish e-commerce marketplace as clean JSON.
6 active endpoints, on 1 and 2 credit tiers.
- POST/hepsiburada/v1/product/detail
- POST/hepsiburada/v1/product/reviews
- POST/hepsiburada/v1/product/offers
- POST/hepsiburada/v1/search
- POST/hepsiburada/v1/category
- POST/hepsiburada/v1/seller
What Hepsiburada endpoints does ReefAPI ship?
6 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Hepsiburada API
3 of 6 endpoints, ready to run
Results with the HB product code, title, brand, price and pre-discount price in lira, the discount rate, rating and review count.
{ "ok": true, "meta": { "api": "hepsiburada", "endpoint": "search", "mode": "live", "latency_ms": 7314, "record_count": 12, "cache_hit": false, "completeness_pct": 100 }, "data": { "results": [ { "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": 60249, "original_price": 60249, "discount_rate": 0, "currency": "TRY", "rating": 4.8, "rating_count": 226, "merchant": null, "installment_count": 9 }, { "sku": "HBCV0000COLVCS", "title": "HP AI 15 Intel® Core™ Ultra 5 225U 16GB 512GB SSD Freedos 15.6\" Taşınabilir Bilgisayar D51E0EA", "brand": "HP", "url": "https://www.hepsiburada.com/hp-ai-15-intel-core-ultra-5-225u-16gb-512gb-ssd-freedos-15-6-tasinabilir-bilgisayar-d51e0ea-p-HBCV0000COLVCS", "image": "https://productimages.hepsiburada.net/s/777/222-222/110002025122462.jpg", "price": 29955.55, "original_price": 29955.55, "discount_rate": 0, "currency": "TRY", "rating": 4.5, "rating_count": 56, "merchant": null, "installment_count": 9 }, { "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": 31999, "original_price": 33683.16, "discount_rate": 5, "currency": "TRY", "rating": null, "rating_count": 10, "merchant": null, "installment_count": 9 } ], "query": "laptop", "page": 1, "render": "ssr" } }
How the Hepsiburada API works
Hepsiburada 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.
Two calls turn a keyword into a merchant price table
The buy-box price is one merchant's price. On a marketplace where several merchants list the same product, the answer worth having is all of them, ordered.
{"query": "laptop", "page": 1}Take sku from a row — it is the HBCV… code, stable across merchants.
{"sku": "HBCV0000A9HHKX"}One row per merchant, in buy-box order, each with its own price, stock quantity and shipping. Six merchants on the product we opened.
Two credits for a full price table on one product. Repeat only the second call to track it — the sku does not move.
curl -X POST https://api.reefapi.com/hepsiburada/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"laptop"}'{
"ok": true,
"data": { … },
"meta": {
"api": "hepsiburada",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}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.
Reading a Hepsiburada price, and the one number to compute yourself
Measured against the live marketplace across four queries and two products. Three of these go against us.
Every row carries currency explicitly as TRY and price as a plain number, with original_price beside it. There is no country parameter and no unit ambiguity.
Checked against the two prices on a discount-sorted page: 56,499 against 99,999 reported 44, 8,750 against 12,500 reported 30, 12,790 against 16,780 reported 24. Where a row is not discounted, original_price equals price and the rate is 0 — a genuine zero rather than a phantom saving computed from an inflated reference.
The merchant rows tell a different story from the search rows. A buy-box offer priced at 60,249 against an original of 60,999, and a second merchant at 63,709.57 against 66,198.88, both reported discount_rate 0. The two price numbers are correct; the rate beside them is not. Derive it from price and original_price on this endpoint.
Search returns has_more and nothing else — there is no count of how many products match. And the rows per page are not a constant: one query returned 12 on page 1, 16 on page 10 and 35 on page 30. Page until has_more turns false rather than dividing a total by a page size.
Page 60 of one query answered a retryable block on both attempts, roughly forty seconds each. Pages 1, 10 and 30 of the same query all answered normally. If you need the far tail of a broad query, narrow the query instead of paging into it.
merchant came back null on all 12 rows of a search page. It arrives filled on detail and on every row of offers, with the merchant's name, city, rating and store URL. Plan the merchant join onto the second call.
Two runs of one query returned the identical 12 product codes. Deeper pages returned fresh codes with no overlap on page 1, so paging genuinely advances.
Hepsiburada publishes review authors as an initial pattern rather than a name, and that is what comes back. The rating, the date and the full body text are intact.
What people build with Hepsiburada
The jobs this data is most often used for.
endpoints
credits per call
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.
What Hepsiburada 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/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"])Have a question? We got answers.
The questions people actually ask before wiring up Hepsiburada.
Get a free key →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-2 credits per successful call. Failed or blocked calls are free, and 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.
37 E-commerce & Marketplaces APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Hepsiburada, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
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. Field notes were captured on 2026-08-28.