Hepsiburada APIhepsiburada.com ↗
Access Hepsiburada product listings, prices, reviews, categories, and campaigns via a structured JSON API. 5 endpoints covering Turkey's largest e-commerce platform.
What is the Hepsiburada API?
This API exposes 5 endpoints covering Hepsiburada's product catalog, customer reviews, category tree, and active campaigns. Use search_products to run full-text queries across millions of listings and get back structured fields like price, rating, reviewCount, and brand per product. get_product_details returns the full specification sheet, category hierarchy, and stock status for any product identified by its HBC product ID, SKU, URL, or slug.
curl -X GET 'https://api.parse.bot/scraper/a42a78b8-347f-4c69-8e83-135320d2b001/search_products?page=1&query=laptop&filters=fiyat%3A0-50000' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace hepsiburada-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Hepsiburada SDK — search products, drill into details and reviews, browse categories and campaigns."""
from parse_apis.hepsiburada_api import Hepsiburada, ProductSummary, Product, Review, Category, CampaignPage, ProductNotFound
hepsiburada = Hepsiburada()
# Search for SSDs with a price filter, capped at 5 results
for item in hepsiburada.products.search(query="SSD", filters="fiyat:0-2000", limit=5):
print(item.name, item.brand, item.price, item.review_count)
# Drill into the first search result's full details
result = hepsiburada.products.search(query="laptop", limit=1).first()
if result:
full = result.details()
print(full.product_name, full.category, full.unit_price, full.stock_status)
print(full.review_summary.average_rating, full.review_summary.total_reviews)
# Fetch reviews for a known product via constructible Product
product = hepsiburada.product(product_id="HBC0000DLDY3M")
for review in product.list_reviews(limit=3):
print(review.user_name, review.rating, review.comment[:60], review.is_purchase_verified)
# Browse top-level categories
for category in hepsiburada.categories.list(limit=5):
print(category.title, category.entity_type, category.id)
# Get active campaigns
campaigns = hepsiburada.campaignpages.get()
print(campaigns.data)
# Typed error handling
try:
bad = hepsiburada.products.search(query="nonexistent_xyz_zzz", limit=1).first()
if bad:
bad.details()
except ProductNotFound as exc:
print(f"Product not found: {exc.url}")
print("exercised: products.search / details / product.list_reviews / categories.list / campaignpages.get")
Full-text search over Hepsiburada's product catalog. Returns paginated product listings with name, brand, price, rating, and review count. Supports price-range filters via the `filters` param. Each page returns ~36 products; totalCount reflects the server-side result count (capped at 10000).
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-based). |
| queryrequired | string | Search keyword (e.g. 'laptop', 'headphones', 'SSD'). |
| filters | string | Advanced filter string in the format used by Hepsiburada (e.g. 'fiyat:0-1000' for price range 0–1000 TL). |
{
"type": "object",
"fields": {
"page": "integer current page number",
"products": "array of product objects with name, productId, sku, price, priceText, url, brand, merchantName, rating, reviewCount, imageUrl, isSponsored, discountRate",
"totalCount": "integer total number of search results (capped at 10000)"
},
"sample": {
"data": {
"page": 1,
"products": [
{
"sku": "HBCV0000CM0YNQ",
"url": "https://www.hepsiburada.com/lenovo-ideapad-slim-3-p-HBCV0000CM0YNQ",
"name": "Lenovo Ideapad Slim 3 AMD Ryzen 7 7735HS 16GB 512GB SSD Freedos 15.3\" Taşınabilir Bilgisayar 83K70098TR",
"brand": "Lenovo",
"price": 28999,
"rating": 5,
"imageUrl": "https://productimages.hepsiburada.net/s/777/222-222/110001492876851.jpg",
"priceText": "28,999.00 TL",
"productId": "HBC0000DLDY3M",
"isSponsored": false,
"reviewCount": 74,
"discountRate": 0,
"merchantName": "Hepsiburada"
}
],
"totalCount": 10000
},
"status": "success"
}
}About the Hepsiburada API
Search and Product Data
The search_products endpoint accepts a query string and an optional filters parameter — for example, fiyat:0-1000 to restrict results to items priced between 0 and 1000 TL. Each page returns approximately 36 product objects, each with productId, sku, price, priceText, brand, merchantName, rating, reviewCount, and imageUrl. The totalCount field reflects the server-side match count, capped at 10,000. Pagination is 1-based via the page parameter.
Product Details and Reviews
get_product_details accepts a bare product ID (e.g. HBC0000DLDY3M), a full Hepsiburada URL, or a slug path, and returns fields including description (HTML), specifications (array), category (breadcrumb string separated by > ), stock_status, unit_price, original_price, and a review_summary object containing average_rating, total_reviews, and rating_distribution. The get_product_reviews endpoint provides paginated customer review records — roughly 5 per page — with fields id, userName, rating, comment, createdAt, merchantName, and isPurchaseVerified.
Categories and Campaigns
get_category_tree requires no input and returns the full navigation hierarchy as a nested tree. Each node includes id, title, url, entityType, and a children array of subcategories. get_campaigns also requires no input and returns active promotional campaign cards with titles, images, discount details, and URLs. Both endpoints give a snapshot of Hepsiburada's current storefront structure without any filtering parameters.
The Hepsiburada API is a managed, monitored endpoint for hepsiburada.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when hepsiburada.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official hepsiburada.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a TL price-comparison tool using
search_productswithfiyatfilter ranges across product categories. - Track stock status changes for specific products by polling
get_product_detailsonstock_statusandunit_price. - Aggregate verified purchase reviews using
get_product_reviewswith theisPurchaseVerifiedfield for sentiment analysis. - Map the full Hepsiburada category taxonomy using
get_category_treeto build a navigation or classification system. - Monitor active discount campaigns with
get_campaignsto surface time-limited deals in a deals aggregator. - Enrich product data sets with
specificationsarrays fromget_product_detailsfor structured attribute comparison. - Calculate brand-level average ratings across search results using
ratingandreviewCountfields fromsearch_products.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Hepsiburada offer an official developer API?+
What does `get_product_details` return and how do I identify a product?+
HBC0000DLDY3M), an HBCV SKU, a full Hepsiburada product URL, or a slug path. It returns product_name, brand, category (as a breadcrumb), unit_price, original_price, stock_status, description HTML, a specifications array, and a review_summary object with average_rating, total_reviews, and rating_distribution.How does search pagination work and is there a results cap?+
search_products endpoint returns approximately 36 products per page. The totalCount field reflects the server-side count of matching products but is capped at 10,000 regardless of actual catalog size. Use the 1-based page parameter to step through results.Does the API return seller listings or price history for a product?+
unit_price and original_price per product from get_product_details, and merchantName from search results. Multiple competing seller offers for the same product and historical price data are not currently exposed. You can fork this API on Parse and revise it to add an endpoint that surfaces additional seller offer details.Can I filter search results by brand, rating, or seller in addition to price?+
filters parameter supports price-range filters in the fiyat:min-max format. Brand, rating, or seller filters are not documented as supported inputs. You can fork this API on Parse and revise the endpoint to pass additional filter parameters if you need finer-grained filtering.