Hepsiburada Scraper [$0.75/1K💰] | TR Prices, Sellers, Delivery
Pricing
from $0.60 / 1,000 results
Hepsiburada Scraper [$0.75/1K💰] | TR Prices, Sellers, Delivery
Scrape Hepsiburada.com product listings into structured rows - TRY price, old price, discount, rating, seller, buy-box rank, stock and the real per-product delivery promise and cut-off hour.
Pricing
from $0.60 / 1,000 results
Rating
0.0
(0)
Developer
Ahmed Jasarevic
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
Hepsiburada Scraper
Scrape Hepsiburada.com, Türkiye's largest marketplace, into structured product rows — TRY price, original price, discount percentage, rating, review count, seller, buy-box rank, warehouse and stock — plus the real per-product delivery promise with its cut-off hour and courier.
Built for Turkish e-commerce price monitoring, competitor and buy-box analysis, marketplace seller research and catalogue ingestion. HTTP-only: no headless browser, no login, no captcha solver.
What you get
Monitor Turkish prices and discount depth
price, originalPrice, discountPercent and priceText on every row, with currency always TRY, so you can track real shelf-price movement instead of scraping a promo banner. scrapedAt plus stable sku gives you a clean diff key.
See who actually wins the buy box
isBuyBoxWinner, buyboxOrder, isMultiSeller, seller, sellerId and availableWarehouses expose multi-seller competition. isMultiSeller tells you whether a product is contested at all, and buyboxOrder ranks the offers — the two fields you need for buy-box share analysis.
Get delivery data most scrapers drop
deliveryDate, deliveryText, deliveryCheckoutText, deliveryDays, deliveryCutOffTime, deliveryOptions, shipmentDay, jetDelivery, isNextDayDelivery, cargoFirmId and warehouseCodes describe the delivery promise per product, not per seller. deliveryCutOffTime is what you need to answer "can I still order this today?" — and it is rarely exposed elsewhere.
Separate stock from availability
inStock, inStockDate, warehouseId and warehouseCodes distinguish genuinely in-stock items from listing shells. Pair that with includeOutOfStock to decide deliberately rather than discovering empty rows downstream.
Ingest clean Turkish catalogue data
sku, productId, name, brand, categoryId, categoryName, categoryPath, listingId and images[] form a ready-to-load product table, with url and appDeepLink for deep linking.
How it works
Hepsiburada listing and category pages embed their product payload in the server-rendered HTML as a JSON block, so the Actor fetches pages over plain HTTP with CheerioCrawler and extracts that payload. No browser is launched.
Products are collected from three sources, and every row records which one via sourceType (search, category or url) and sourceList:
searchQueries— free-text search terms, e.g.["telefon", "bluetooth kulaklık"].categoryUrls— category listing pages.maxProducts— hard cap on total rows;maxPagesPerList— pages per source.
Rows also carry searchQuery, page, listingId, warehouseId and warehouseCodes so you can trace a row back to the exact page and warehouse it came from.
Why delivery fields are worth the extra request
The listing payload already contains the delivery promise Hepsiburada renders in its own UI, including the cut-off hour and courier. Because it comes from the same response as the price, there is no extra cost — it is simply a matter of reading fields that most scrapers ignore. That is the single biggest reason this Actor returns more usable data per row than a price-only competitor.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
searchQueries | string[] | [] | Free-text search terms in Turkish, e.g. ["cep telefonu"]. Each term becomes one search source. |
categoryUrls | string[] | [] | Hepsiburada category listing URLs. Each URL becomes one category source. |
maxProducts | integer | 100 | Hard cap on total dataset rows across all sources. |
maxPagesPerList | integer | 3 | Pages fetched per search or category source. |
sort | string | "" | "" (relevance), artanfiyat (price ↑), azalanfiyat (price ↓), coksatan (best selling), yorumsayisi (most reviewed), degerlendirmepuani (top rated), indirimurunler (on discount), enyeni (newest). |
includeOutOfStock | boolean | true | Keep unavailable products. Set false to drop listing shells. |
includeDeliveryInfo | boolean | true | Populate the delivery fields. Turn off only if you have no use for them. |
imageSize | string | 500-500 | Hepsiburada image variant, e.g. 1000-1000. |
proxy | object | { useApifyProxy: false } | Standard Apify proxy picker. |
searchQueries and categoryUrls are additive — use either, or both. With both empty there is nothing to crawl, so supply at least one.
Output
45 fields, one row per product:
sku, productId, name, brand, price, originalPrice, discountPercent, currency, priceText, rating, reviewCount, seller, sellerId, inStock, inStockDate, warehouseId, shipmentDay, jetDelivery, isNextDayDelivery, isMultiSeller, isBuyBoxWinner, availableWarehouses, warehouseCodes, hasVariants, buyboxOrder, listingId, image, images, url, appDeepLink, categoryId, categoryName, categoryPath, deliveryDate, deliveryText, deliveryCheckoutText, deliveryDays, deliveryCutOffTime, deliveryOptions, cargoFirmId, sourceType, sourceList, searchQuery, page, scrapedAt
Two dataset views ship with the Actor: Overview and Delivery.
Field notes that change how you read the data:
currencyis alwaysTRY;price/originalPriceare numbers,priceTextis the rendered string ("₺1.249,99"). Use the numeric fields for arithmetic.discountPercentis0when there is no discount — notnull. A0means "no markdown", not "unknown".inStockis a boolean,inStockDateis when stock was recorded. IfincludeOutOfStockistrueyou will receive rows withinStock: false; filter before loading.sourceType(search|category|url) plussourceList,searchQueryandpageare your provenance chain back to the request.images[]holds every variant Hepsiburada renders;imageis the primary one.
Example input
Track a category against its best sellers:
{"searchQueries": ["bluetooth kulaklik"],"sort": "coksatan","maxProducts": 200,"maxPagesPerList": 4}
Cheapest-first sweep with out-of-stock items excluded:
{"searchQueries": ["cep telefonu", "tablet"],"sort": "artanfiyat","includeOutOfStock": false,"maxProducts": 500,"maxPagesPerList": 5}
Category pages with full delivery data:
{"categoryUrls": ["https://www.hepsiburada.com/kategori/telefonlar-300100101"],"includeDeliveryInfo": true,"maxProducts": 300}
Example output
{"sku": "HBCV2101008412","productId": "hp-2101008412","name": "Apple AirPods Pro 2 USB-C Kulaklik Bluetooth Kulaklık","brand": "Apple","price": 7499.0,"originalPrice": 8499.0,"discountPercent": 11.77,"currency": "TRY","priceText": "₺7.499,00","rating": 4.7,"reviewCount": 3184,"seller": "Apple Store","sellerId": "seller-apple-tr","inStock": true,"inStockDate": "2026-10-04T09:14:00.000Z","warehouseId": "WH-IST-04","shipmentDay": 1,"jetDelivery": true,"isNextDayDelivery": true,"isMultiSeller": true,"isBuyBoxWinner": true,"availableWarehouses": ["İstanbul Anadolu", "İstanbul Avrupa", "İzmir"],"warehouseCodes": ["IST04", "IST07", "IZM02"],"hasVariants": false,"buyboxOrder": 1,"listingId": "LST-8821346","image": "https://images.hepsiburada.com/2101008412-500-500.jpg","images": ["https://images.hepsiburada.com/2101008412-500-500.jpg","https://images.hepsiburada.com/2101008412-750-750.jpg"],"url": "https://www.hepsiburada.com/apple-airpods-pro-2-usb-c-kulaklik-bluetooth-kulaklik-HBCV2101008412","appDeepLink": "hepsiburada://product/HBCV2101008412","categoryId": "300100101","categoryName": "Telefonlar","categoryPath": "Elektronik > Telefonlar > Kulaklık","deliveryDate": "2026-10-05","deliveryText": "Yarın Kargoda","deliveryCheckoutText": "Bugün sipariş verirseniz yarın elinizde","deliveryDays": 1,"deliveryCutOffTime": "23:59","deliveryOptions": [{ "text": "Yarın Kargoda", "cargoFirmId": "CF-AKAREX", "days": 1 }],"cargoFirmId": "CF-AKAREX","sourceType": "search","sourceList": "bluetooth kulaklik","searchQuery": "bluetooth kulaklik","page": 1,"scrapedAt": "2026-10-04T09:15:22.408Z"}
Integrations & automation
Call it over the Apify API, from Python/JavaScript, the CLI or MCP. Datasets export as JSON, CSV, Excel or XML.
For price monitoring, a daily run over the same searchQueries with a fixed sort gives you a stable comparable set — change sort between runs and you are comparing different product sets, not different prices. For assortment and discount tracking, run weekly with sort: "indirimurunler". For buy-box monitoring, keep isMultiSeller products and alert on isBuyBoxWinner flips.
Typical pipeline: run on schedule → upsert on sku → compute price and discountPercent deltas → alert when a tracked sku drops below a target price, when a seller you follow takes or loses isBuyBoxWinner, or when deliveryCutOffTime moves and same-day delivery disappears. Because currency is always TRY, no FX handling is needed.
Related Actors
| Actor | Why |
|---|---|
scrapyx/hepsiburada-products-scraper | The most-used Hepsiburada Actor, 118 users. Good benchmark for core fields. |
midnight_static/hepsiburada-product-scraper | Price-focused alternative; useful for comparing field coverage. |
yeyo/hepsiburada-product-scraper | Another Turkish-focused implementation, review data included. |
ahmed_jasarevic/notino-scraper | Same retail-product problem, different market: Italian cosmetics and personal care. |
ahmed_jasarevic/jumia-scraper | The structurally identical Actor for African marketplaces — same multi-seller, review and price model across 9 markets. |
FAQ
What makes this different from other Hepsiburada scrapers?
Delivery. Most Hepsiburada scrapers return name, price, rating and images. This Actor returns 45 fields including the per-product delivery promise — deliveryDate, deliveryText, deliveryCheckoutText, deliveryDays, deliveryCutOffTime, deliveryOptions, cargoFirmId — plus full multi-seller and buy-box data (isMultiSeller, isBuyBoxWinner, buyboxOrder, availableWarehouses, warehouseCodes). That is what you need for logistics analysis, same-day cut-off logic and buy-box share, rather than just a price list.
Is there an official Hepsiburada API?
Only a merchant-scoped one. Hepsiburada's Merchant Product API is for partners to manage their own catalogue, orders and reports, and requires merchant credentials. There is no public API for reading competitor listings or marketplace-wide product data, which is what a price-monitoring or market-research job needs.
How do I get the cheapest products?
Set sort: "artanfiyat" (price ascending). sort accepts artanfiyat (price ↑), azalanfiyat (price ↓), coksatan (best selling), yorumsayisi (most reviewed), degerlendirmepuani (top rated), indirimurunler (on discount) and enyeni (newest). Empty string means relevance order.
Can I exclude unavailable products?
Yes — set includeOutOfStock: false. It defaults to true, so out-of-stock rows are included unless you opt out. For catalogue ingestion you almost always want false.
Do I need a browser or proxy?
No. Product data is embedded in the server-rendered HTML, so the Actor uses plain HTTP requests. proxy is available if you hit rate limits, but the default run works without it. crawlDelayMillis is not an input here; if you get throttled, reduce maxPagesPerList or add delay in your orchestrator.
Are prices in Turkish lira?
Yes. currency is always TRY. priceText renders with the Turkish format ("₺7.499,00" uses . as thousands separator and , as decimal), so parse the numeric price field rather than the text.
SEO Keywords
hepsiburada scraper, hepsiburada.com, turkish ecommerce data, hepsiburada api alternative, turkey product prices, turkiye ecommerce dataset, price monitoring turkey, marketplace seller data, buy box analysis, product discount tracking, turkish retail scraping, hepsiburada product data, same day delivery data, product catalogue ingestion, competitor price analysis, turkish marketplace research, cheapest products turkey, electronics price tracking turkey, catalog scraping api, ecommerce scraping turkey
For AI Agents & LLM Apps
Returns Hepsiburada product listings as flat dataset rows, one per product, with per-product delivery promise and multi-seller/buy-box fields.
Minimal input — smallest input that produces a valid run:
{ "searchQueries": ["telefon"], "maxProducts": 50 }
Typical run — best sellers with delivery data:
{ "searchQueries": ["bluetooth kulaklik"], "sort": "coksatan", "maxProducts": 200, "maxPagesPerList": 4 }
Category source:
{ "categoryUrls": ["https://www.hepsiburada.com/kategori/telefonlar-300100101"], "maxProducts": 300 }
Output fields (45): sku, productId, name, brand, price, originalPrice, discountPercent, currency, priceText, rating, reviewCount, seller, sellerId, inStock, inStockDate, warehouseId, shipmentDay, jetDelivery, isNextDayDelivery, isMultiSeller, isBuyBoxWinner, availableWarehouses, warehouseCodes, hasVariants, buyboxOrder, listingId, image, images, url, appDeepLink, categoryId, categoryName, categoryPath, deliveryDate, deliveryText, deliveryCheckoutText, deliveryDays, deliveryCutOffTime, deliveryOptions, cargoFirmId, sourceType, sourceList, searchQuery, page, scrapedAt
Behaviours an agent should know
searchQueriesandcategoryUrlsare additive. Both empty means nothing to crawl — supply at least one. Every row'ssourceTypeandsourceListtell you which source produced it.sortis applied per source and accepts exactly:"",artanfiyat,azalanfiyat,coksatan,yorumsayisi,degerlendirmepuani,indirimurunler,enyeni. Turkish keywords are required, English ones will be ignored.includeOutOfStockdefaults to true, so a default run does include unavailable products. Set it tofalsefor catalogue ingestion.includeDeliveryInfodefaults totrue.discountPercentis0— notnull— when there is no discount. Don't read0as "unknown".price/originalPriceare numeric TRY.priceTextuses Turkish formatting (.thousands,,decimal) — never parse it.maxProducts(default 100) is the total row cap across all sources, so it is your cost ceiling. Billing is $0.00075 per product.
Legal & Compliance
This Actor is an independent third-party tool. It is not affiliated with, endorsed by, or sponsored by Hepsiburada, or by any seller, merchant or brand whose listings appear in its output.
What it actually accesses: publicly visible Hepsiburada search, category and product listing pages over plain HTTP, with no login, no authentication bypass, no captcha solving and no private endpoints. It reads only the product payload Hepsiburada serves to any anonymous visitor.
One thing we could not verify: Hepsiburada's robots.txt returned HTTP 403 Forbidden when checked, so its actual crawl directives could not be read or confirmed. We are not in a position to tell you what they say. If automated access matters to your use case, request the file yourself or contact Hepsiburada directly before running at volume.
Hepsiburada's Merchant API terms govern the official partner API, which is scoped to a merchant's own catalogue — using this Actor to read competitor or marketplace-wide listings is not covered by them, and doing so may breach Hepsiburada's Terms of Service.
You are solely responsible for compliance with Hepsiburada's Terms of Service, its crawl directives, and applicable law including GDPR and Türkiye's KVKK. Keep request volumes modest: maxProducts (default 100) and maxPagesPerList (default 3) bound a run without effort. Resale or redistribution of scraped marketplace data may require a commercial agreement with Hepsiburada — check before you build a product on top of it.