# Hepsiburada Search Scraper - Rank, Price & Multi-Keyword (`gio21/hepsiburada-search-scraper`) Actor

Search Hepsiburada by one or many keywords and get every product with price, brand, image, search rank (position) and URL. $0.003 per product, no extra fees.

- **URL**: https://apify.com/gio21/hepsiburada-search-scraper.md
- **Developed by:** [Gio](https://apify.com/gio21) (community)
- **Categories:** E-commerce
- **Features:** Limited permissions
- **Stats:** 9 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$3.00 / 1,000 product scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Hepsiburada Search Scraper - Rank, Price & Multi-Keyword

### Why use this scraper

Hepsiburada is Turkey's largest e-commerce marketplace, and anyone pricing
products, tracking a competitor's catalog or researching the Turkish market
needs its search results in a structured feed rather than a browser tab.
Hepsiburada has no public search API for third parties, so getting that
data means scraping the site yourself and keeping the scraper working as
the page changes. This actor does that for you: send a keyword (or a list
of keywords), get back every matching product as clean JSON with price,
brand, image and its exact position in the search results. That last
field matters more than it sounds: Hepsiburada's own ranking for a
keyword is a reasonable proxy for how visible a listing is to real
shoppers searching that term, which plain price-scraping tools skip.

### Overview

Input is one or more keywords. Output is one JSON item per product found
for each keyword, paginated automatically up to the `maxItems` you set (up
to 300 per keyword). A single-keyword run with 40 items typically finishes
in under a minute. You are billed per product returned, so a keyword that
matches fewer products than your `maxItems` cap costs less, not more. A
run with the default `maxItems` of 40 on a popular keyword costs around
$0.12 at $0.003 per product, and scales the same way whether you run one
keyword or batch a list of them in the same call.

### Supported inputs

- **Single keyword** (`keyword`, e.g. `"laptop"`) - searches Hepsiburada
  for that term and returns matching products.
- **Multiple keywords** (`keywords`, an array, e.g. `["laptop", "monitor",
  "mouse"]`) - runs the same search for each term in one call; every item
  in the output carries its own `keyword` so you can split results back
  out per term.
- **maxItems** - caps how many products come back per keyword (default
  40, up to 300), with automatic pagination through Hepsiburada's search
  result pages until the cap or the result set is reached.

### Use cases

- **Price monitoring:** track how a product or category is priced on
  Hepsiburada over time by re-running the same keyword on a schedule.
- **Competitor catalog tracking:** pull a competitor brand's full listing
  for a keyword to see what they have live and at what price.
- **Share-of-search tracking:** use the `position` field to see where a
  brand or product ranks for a keyword today versus last week.
- **Market research:** compare prices, brands and currency across a
  category before entering the Turkish market.
- **Product sourcing:** scan a keyword for suppliers and price points
  before deciding what to import or resell.
- **Catalog gap analysis:** run your own brand's keyword alongside a
  competitor's to compare which SKUs, colors and price points each one
  lists on Hepsiburada right now.

### How it works

The actor submits your keyword to Hepsiburada's own search results pages,
the same ones a shopper sees, and parses the product grid directly from
the page's structured data instead of scraping visible text, which keeps
results accurate even when the visual layout changes. For `maxItems`
above one page of results, it walks forward through the site's pagination
automatically, stopping once your cap is reached or results run out.

### Input configuration

Single keyword, default cap:

```json
{
  "keyword": "laptop",
  "maxItems": 40
}
```

Multiple keywords in one call:

```json
{
  "keywords": ["laptop", "monitor", "mouse"],
  "maxItems": 50
}
```

Single keyword, larger pull for a full catalog scan:

```json
{
  "keyword": "iphone",
  "maxItems": 200
}
```

### Output sample

Real items from a production run (September 2026), keyword `"laptop"`:

```json
[
  {
    "name": "Asus TUF Gaming F16 FX608JHI-TU231 Intel Core i5 14450HX 16GB 512GB SSD RTX5050 Freedos 16\" 144Hz Tasinabilir Bilgisayar",
    "sku": "HBCV0000G0KYA1",
    "url": "https://www.hepsiburada.com/asus-tuf-gaming-f16-fx608jhi-tu231-intel-core-i5-14450hx-16gb-512gb-ssd-rtx5050-freedos-16-144hz-tasinabilir-bilgisayar-pm-HBC0000G0KY9S",
    "color": "Gri",
    "brand": "Asus",
    "image": "https://productimages.hepsiburada.net/s/777/222-222/110001859756432.jpg",
    "price": 59999,
    "currency": "TRY",
    "position": 1,
    "keyword": "laptop",
    "scrapedAt": "2026-09-30T19:06:00.468Z"
  },
  {
    "name": "Lenovo IdeaPad Slim 3 AMD Ryzen 7 170 16GB 512GB SSD Freedos 15.3\" Tasinabilir Bilgisayar 83K700PSTR",
    "sku": "HBCV0000FC0KHB",
    "url": "https://www.hepsiburada.com/lenovo-ideapad-slim-3-amd-ryzen-7-170-16gb-512gb-ssd-freedos-15-3-tasinabilir-bilgisayar-83k700pstr-p-HBCV0000FC0KHB",
    "color": "Gri",
    "brand": "Lenovo",
    "image": "https://productimages.hepsiburada.net/s/777/222-222/110001806741453.jpg",
    "price": 34999,
    "currency": "TRY",
    "position": 2,
    "keyword": "laptop",
    "scrapedAt": "2026-09-30T19:06:00.469Z"
  }
]
```

### Key output fields

| Field | Type | Description |
|---|---|---|
| `name` | string | Full product title as listed on Hepsiburada. |
| `sku` | string | Hepsiburada's internal product code. |
| `url` | string | Direct link to the product page. |
| `color` | string/null | Color variant shown in the search result, when set. |
| `brand` | string | Brand name. |
| `image` | string | Main product image URL. |
| `price` | number | Current listed price. |
| `currency` | string | Always `TRY` (Turkish lira). |
| `position` | integer | Rank of the product in the search results for that keyword. |
| `keyword` | string | The keyword that returned this item, for multi-keyword runs. |
| `scrapedAt` | string | ISO timestamp of when the item was scraped. |

### Pricing

| Event | Price |
|---|---|
| Product scraped (each product item returned) | $0.003 |

Pay per result only. A keyword that returns fewer products than your
`maxItems` cap is billed for what came back, not the cap.

### What makes this richer than the competition

Two other Hepsiburada scrapers on the Apify Store, by users in the last 30
days: `fatihtahta/hepsiburada-scraper` (31) and
`great_saint/hepsiburada-scraper` (7). Both are keyword-and-URL scrapers
aimed at full product detail (reviews, Q\&A, ratings). This actor is built
for fast, repeatable search-result tracking: every item carries `position`,
the product's rank in that keyword's results, so you can watch how a brand
or SKU moves in the rankings over time without diffing full product pages.
It also takes a `keywords` array in the same input as a single `keyword`,
so a multi-term catalog scan is one run instead of several, with each item
tagged by the exact keyword that found it so you can split the dataset
back out per term without re-running anything. The actor focuses on doing
search-result tracking well rather than trying to cover every page type
on the site, which keeps runs fast and the field set predictable across
every keyword and category.

### Notes & limitations

- Results reflect Hepsiburada's own search ranking and relevance for the
  keyword you send, the same thing a shopper searching that term would
  see; the actor does not re-sort or filter by price or rating itself.
- `color` is only populated when Hepsiburada's search result for that
  product includes a color variant; many listings leave it unset.
- Price and currency reflect Hepsiburada's Turkish-market listing in TRY;
  this actor does not convert currency.
- This actor returns search-result data only, not full product detail
  pages (no reviews, Q\&A or stock-by-variant breakdown).
- Position reflects Hepsiburada's live ranking at the moment of the run;
  sponsored or promoted listings mixed into the search results are
  returned the same way a shopper would see them, with no separate flag
  distinguishing organic from paid placement.

### FAQ

**Can I search in English keywords?**
Yes, but results depend on Hepsiburada's own matching; a Turkish term for
Turkish-market products (e.g. `"dizüstü bilgisayar"` instead of `"laptop"`)
can return more relevant results for some categories.

**Does `position` reset for each keyword in a multi-keyword run?**
Yes, `position` is the product's rank within its own keyword's results,
starting at 1 for each keyword in the `keywords` array.

**What happens if a keyword returns no products?**
The run finishes with 0 items for that keyword and you are not charged for
it, since billing is per product returned.

**Can I filter by price range or brand before scraping?**
Not directly; the actor returns what Hepsiburada's own search ranks for
your keyword. Filter the output after the run if you only need a brand or
price band.

**Is the price tax-inclusive?**
The `price` field is exactly what Hepsiburada displays in the search
result for that product, which is the price shown to a Turkish shopper.

**Can I run this on a schedule to track price changes?**
Yes, Apify's built-in scheduler can trigger this actor daily or weekly
with the same keyword; compare `scrapedAt` and `price` across runs to spot
changes.

**Does `maxItems` of 300 always return 300 products?**
Only if the keyword has at least that many matches on Hepsiburada. A
narrow keyword that matches fewer products returns everything available
and stops there.

### For AI Agents & LLM Apps

This actor is callable directly from an MCP-compatible client at
`mcp.apify.com`, or via the standard Apify API. Example with the
run-sync-get-dataset-items endpoint, which runs the actor and returns the
dataset items in one call:

```bash
curl "https://api.apify.com/v2/acts/gio21~hepsiburada-search-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keyword": "laptop", "maxItems": 40}'
```

### Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by,
or sponsored by Hepsiburada or any of its subsidiaries. All trademarks
mentioned are the property of their respective owners.

### SEO Keywords

hepsiburada scraper, hepsiburada api, turkey ecommerce scraper,
hepsiburada product scraper, hepsiburada price monitoring, hepsiburada
search api

# Actor input Schema

## `keyword` (type: `string`):

Search term, e.g. "laptop".

## `keywords` (type: `array`):

Optional: several search terms at once. Results are split across them.

## `maxItems` (type: `integer`):

Maximum number of products to return per keyword (paginates as needed).

## Actor input object example

```json
{
  "keyword": "laptop",
  "maxItems": 40
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keyword": "laptop",
    "maxItems": 40
};

// Run the Actor and wait for it to finish
const run = await client.actor("gio21/hepsiburada-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keyword": "laptop",
    "maxItems": 40,
}

# Run the Actor and wait for it to finish
run = client.actor("gio21/hepsiburada-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keyword": "laptop",
  "maxItems": 40
}' |
apify call gio21/hepsiburada-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,gio21/hepsiburada-search-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/pCRbzehbkE8nXaqS0/builds/rCosHPKPHOoxGKmPP/openapi.json
