# Hepsiburada Scraper — Turkey Prices, Sellers & Discounts (`haketa/hepsiburada-scraper`) Actor

Scrape Hepsiburada product prices, sellers, ratings and discounts from Turkey's leading marketplace. Search any Turkish keyword and export clean, structured e-commerce data for price monitoring, seller research, assortment analysis and discount tracking in Turkey. Built for brands and data teams.

- **URL**: https://apify.com/haketa/hepsiburada-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.75 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

<div align="center">

## Hepsiburada Scraper — Turkey Marketplace Prices, Sellers & Discounts

**Collect Hepsiburada product prices, sellers, ratings and discounts from Turkey's leading marketplace as clean, structured data for price monitoring and assortment research.**

![Hepsiburada](https://img.shields.io/badge/Hepsiburada-Turkey%20Marketplace-FF6000?style=for-the-badge)
![Apify Actor](https://img.shields.io/badge/Apify-Actor-97C93F?style=for-the-badge)
![Export](https://img.shields.io/badge/Export-JSON%20%C2%B7%20CSV%20%C2%B7%20Excel-blue?style=for-the-badge)
![No Code](https://img.shields.io/badge/No%20Code-Required-purple?style=for-the-badge)

</div>

***

### 📑 Contents

- [At a glance](#-at-a-glance)
- [What this Hepsiburada scraper does](#-what-this-hepsiburada-scraper-does)
- [Key features](#-key-features)
- [Who it is for](#-who-it-is-for)
- [Use cases](#-use-cases)
- [How it works](#-how-it-works)
- [Step-by-step usage](#-step-by-step-usage)
- [Input](#-input)
- [Output](#-output)
- [Proven results (local verification)](#-proven-results-local-verification)
- [Integrations](#-integrations)
- [Tips for better results](#-tips-for-better-results)
- [Limitations](#-limitations)
- [FAQ](#-faq)
- [Keywords](#-keywords)
- [Disclaimer](#-disclaimer)

***

### ⚡ At a glance

| | |
|---|---|
| **What you collect** | Hepsiburada products: name, brand, TRY price, seller, rating, discount |
| **Search by** | Turkish keyword — several terms merged without duplicates |
| **Sort by** | Recommended, price, best sellers, most reviewed, highest rated, discount, newest |
| **Key fields** | Price & original price (TRY), discount %, seller name & ID, rating, reviews |
| **Empty run** | Still returns about 100 products from popular starter searches |
| **Output formats** | JSON, CSV, Excel, HTML and XML via the Apify Console export |
| **Code required** | None — type keywords and press Start |
| **Typical run** | 100 products in under a minute; deep searches scale to thousands |

***

### 🛒 What this Hepsiburada scraper does

Hepsiburada is Turkey's leading marketplace: millions of products,
thousands of sellers, and prices that move with campaigns, stock and
competition. Watching that by hand — searching keyword after keyword
and copying prices, sellers and ratings into a spreadsheet — is slow,
and the numbers go stale before you finish. A single popular keyword
such as `telefon` matches up to ten thousand products.

This **Hepsiburada scraper** turns keyword searches into a dataset you
can actually work with. Type one Turkish keyword or several, pick a
sort order, and it returns one clean record per product with the
details that matter:

- what it is (**product name**, **brand**, **SKU**),
- what it costs (**price in TRY**, **original price**, **discount %**),
- who sells it (**seller name and ID**, **in-stock** status,
  **campaign labels** such as "30 günün en düşük fiyatı"),
- how buyers rate it (**rating**, **review count**) and a direct link
  back to the product page.

Whether you are running **price monitoring** on competing sellers,
mapping a category for **assortment research**, or tracking
**discount campaigns** across the marketplace, this actor gives you
comparable Turkish e-commerce data in minutes instead of days of
manual browsing.

***

### ✨ Key features

- **Turkish keyword search that merges cleanly** — add several terms
  (for example `telefon`, `laptop`, `kulaklik`) and get one combined,
  de-duplicated result set, balanced across terms.
- **Eight sort orders** — recommended ranking, price low-to-high or
  high-to-low, best sellers, most reviewed, highest rated, biggest
  discount or newest first, so the products you care about surface
  first.
- **Seller captured on every record** — seller name and seller ID
  travel with the price, ready for seller-level price comparison.
- **Discounts and campaigns included** — original price, discount rate
  and campaign labels are captured whenever they apply, ready for
  filtering.
- **Ratings paired with review counts** — a 4.8 from 481 reviews and a
  4.8 from 4 reviews are different signals; you get both numbers.
- **Works with an empty form** — press Start without changing anything
  and still get about 100 products from popular starter searches.
- **Deep pagination** — 36 products per page, walked page after page
  per term; raise the page cap for catalogue-scale exports.
- **Clean, analysis-ready records** — consistent field names, duplicates
  removed across terms and pages, empty values left out.
- **Export anywhere** — download JSON, CSV or Excel, or send results to
  your stack with Apify integrations and the API.

***

### 👥 Who it is for

- **Brands and distributors** monitoring how their products are priced
  and sold on Hepsiburada.
- **Marketplace sellers** tracking competing sellers, prices and
  campaign participation in their categories.
- **Price-monitoring and repricing teams** who need repeatable TRY
  price snapshots instead of manual checks.
- **E-commerce researchers** mapping Turkish assortment, price bands
  and discount depth.
- **Data analysts** building Turkish e-commerce datasets and dashboards.
- **Students and curious builders** who want a real, explorable sample
  of a live marketplace without writing code.

***

### 💡 Use cases

#### 1. Monitor seller prices on your products

Search your product keywords, sort by price low-to-high, and compare
`price` and `merchantName` across sellers. Re-run on a schedule and
diff by `sku` to catch undercutting as it happens.

#### 2. Map a category for assortment research

Search the category keyword in Turkish (for example `kulaklik` for
headphones), raise **Max results**, and export the range: brands,
price bands, ratings and sellers — enough to analyse price
architecture properly.

#### 3. Track discount campaigns

Sort by **Biggest discount** and watch `discountRate` and
`campaignLabels`. Campaign participation ("30 günün en düşük
fiyatı" and similar labels) is visible without opening each product
page.

#### 4. Find best sellers and proven products

Sort by **Best sellers** or **Most reviewed** and read `rating`
together with `reviewCount`. High review volume at a strong rating is
the closest thing to a proven-demand signal the marketplace publishes.

#### 5. Compare sellers head-to-head

Because every record carries `merchantName` and `merchantId`, one
export answers "who sells this cheapest, and how are they rated?" —
the shortlist for competitive and partnership research.

#### 6. Feed a pricing dashboard

Run the actor via the Apify API or on a schedule and pipe the dataset
into your warehouse, BI tool or repricing model. Consistent fields
across runs make week-over-week comparisons straightforward.

#### 7. Support academic and market research

Build a citable snapshot of Turkish e-commerce at a point in time:
counts by brand and price band, discount distributions, and seller
concentration — all from one export instead of manual sampling.

***

### ⚙️ How it works

1. **You describe what you want** — add Turkish keywords, pick a sort
   order, and set how much to collect.
2. **The actor searches each term** page by page (36 products per
   page), round-robin across terms so a capped run stays balanced.
3. **Records are tidied as they arrive** — duplicates are removed by
   SKU, prices stay in TRY, and each product gets a direct link to
   its page.
4. **You get a dataset** in the Apify Console: preview it in the table,
   filter it, and export it as JSON, CSV or Excel — or pull it through
   the API.

No setup, no scripts and nothing to maintain on your side. If you
leave every field as it is, the actor simply collects about 100
products from the starter searches (`telefon`, `laptop`, `kulaklik`)
so you can see the output shape right away.

***

### 🚀 Step-by-step usage

1. Open the actor in the Apify Console and go to the **Input** tab.
2. Add **Search terms** in Turkish — `telefon`, `laptop` and
   `kulaklik` are pre-filled as a starter sample.
3. Pick a **Sort order** — "Recommended" is a solid default; "Price:
   low to high" and "Biggest discount" are the monitoring favourites.
4. Set **Max results** to the size you want (100 is a good first run).
5. (For deep exports) Raise **Max pages per search term** together
   with **Max results**.
6. Press **Start** and watch the live log and status counter.
7. When the run finishes, open the **Dataset** tab to preview records.
8. Use **Export** to download JSON, CSV or Excel — or open the
   **Integrations** tab to send data onward automatically.
9. Re-run any time; try scheduling daily or weekly runs to build a
   time series.

***

### 📥 Input

Every field is optional. Start with the defaults, then narrow down.

| Field | What it does | Example |
|---|---|---|
| **Search terms** | Turkish keywords; each searched, merged without duplicates | `telefon` |
| **Sort order** | Recommended, price, best sellers, reviews, rating, discount, newest | `recommended` |
| **Max results** | Cap on products collected across all terms | `100` |
| **Max pages per search term** | How deep to paginate each term (36 per page) | `20` |
| **Proxy configuration** | Connection settings; the default is right for most runs | default |

#### Example 1 — Instant starter sample (zero setup)

```json
{}
```

Returns about 100 products balanced across the starter searches
(`telefon`, `laptop`, `kulaklik`).

#### Example 2 — Cheapest phones first

```json
{
  "searchTerms": ["telefon"],
  "sortOrder": "artanfiyat",
  "maxItems": 200
}
```

Collects 200 phone listings ordered by ascending price — seller
comparison in one export.

#### Example 3 — Biggest discounts

```json
{
  "searchTerms": ["laptop"],
  "sortOrder": "indirimurunler",
  "maxItems": 200
}
```

Surfaces the deepest laptop discounts with campaign labels.

#### Example 4 — Most reviewed, highest rated

```json
{
  "searchTerms": ["kulaklik"],
  "sortOrder": "degerlendirmepuani",
  "maxItems": 150
}
```

Ranks headphones by buyer rating, with review counts alongside.

#### Example 5 — Multi-term assortment pull

```json
{
  "searchTerms": ["telefon", "tablet", "akilli saat"],
  "maxItems": 600,
  "maxPagesPerSearch": 30
}
```

Collects a balanced 600-product sample across three categories.

<details>
<summary>Example 6 — Deep single-term export</summary>

```json
{
  "searchTerms": ["telefon"],
  "maxItems": 5000,
  "maxPagesPerSearch": 150
}
```

A popular term matches up to 10,000 products (36 per page). Deep
exports need **Max results** and **Max pages per search term** raised
together — expect a longer run at this scale.

</details>

***

### 📤 Output

Each run produces one record per Hepsiburada product (its default
variant). Field names stay the same across terms and sort orders, so
exports are easy to combine and compare. Empty values are simply left
out of a record.

**Coverage legend** (from the local verification runs below):
🟢 present for nearly every record · 🟡 present when the product
provides it · ⚪ present for a smaller share of records.

#### Product identity

| Field | Meaning | Coverage |
|---|---|---|
| `name` | Product name as listed | 🟢 every record |
| `brand` | Brand, e.g. `Samsung` | 🟢 every record |
| `sku` | Product SKU (`HBCV…`) | 🟢 every record |
| `productUrl` | Direct link to the product page | 🟢 every record |
| `searchTerm` | Keyword that surfaced the product | 🟢 every record |

#### Price & discount

| Field | Meaning | Coverage |
|---|---|---|
| `price` | Current price in TRY | 🟢 every record |
| `currency` | Always `TRY` | 🟢 every record |
| `originalPrice` | Price before discount in TRY | 🟢 nearly every record |
| `discountRate` | Discount in percent | 🟡 only on discounted products |

#### Seller & availability

| Field | Meaning | Coverage |
|---|---|---|
| `merchantName` | Seller name | 🟢 every record |
| `merchantId` | Seller identifier | 🟢 every record |
| `inStock` | Whether the default variant is procurable | 🟢 every record |
| `campaignLabels` | Campaign labels, e.g. `30 günün en düşük fiyatı` | 🟡 campaign products only |

#### Buyer signals & provenance

| Field | Meaning | Coverage |
|---|---|---|
| `rating` | Buyer rating (0–5) | 🟢 every rated product |
| `reviewCount` | Number of buyer reviews | 🟢 every record |
| `scrapedAt` | When this actor collected the record | 🟢 every record |

#### Example output record

```json
{
  "name": "Samsung Galaxy A17 5g 256 GB 8 GB Ram (Samsung Türkiye Garantili) Mavi",
  "brand": "Samsung",
  "sku": "HBCV00009SA9G8",
  "price": 17399.07,
  "currency": "TRY",
  "productUrl": "https://www.hepsiburada.com/samsung-galaxy-a17-5g-256-gb-8-gb-ram-samsung-turkiye-garantili-mavi-p-HBCV00009SA9G8",
  "searchTerm": "telefon",
  "scrapedAt": "2026-10-23T13:43:20.272Z",
  "originalPrice": 17669.07,
  "discountRate": 2,
  "merchantName": "gureller",
  "merchantId": "a69106e7-57d4-41b0-b10f-506a18b6ccee",
  "rating": 4.7,
  "reviewCount": 791,
  "inStock": true,
  "campaignLabels": ["30 günün en düşük fiyatı"]
}
```

***

### ✅ Proven results (local verification)

This actor was run locally before release. All numbers below are from
those real runs — same code, same output shape you will receive.

| Check | Input | Result |
|---|---|---|
| Starter sample | `telefon` (default terms), default cap | **30 products** collected in the sample run |
| Live search size | `telefon`, page 1 | **10,000 products** matched (marketplace-reported total) |
| Live search size | `laptop`, page 1 | **10,000 products** matched (marketplace-reported total) |
| Pagination | 36 products per page, `sayfa=` stepping | Verified page after page with SKU deduplication |

Field fill highlights from the `telefon` sample (30 records):

- Identity, price and seller were complete: `name`, `brand`, `sku`,
  `price`, `currency`, `merchantName`, `merchantId`, `productUrl`,
  `searchTerm` and `scrapedAt` appeared on every record.
- Ratings were present with review counts on rated products (for
  example 4.7 from 791 reviews) — real buyer numbers, nothing padded.
- `originalPrice` appeared on every sampled record; `discountRate`
  appeared on the discounted share (4 of 30) and `campaignLabels` on
  campaign products (9 of 30), by design.
- `inStock` was reported on every record, including out-of-stock
  variants (`false` is real data and is kept).
- Sample product links were opened and answered successfully.

What this means for you: the core columns you will filter and sort on
arrive filled. A single popular term already matches 10,000 products,
and multi-term deep exports go well beyond that — raise **Max
results** and **Max pages per search term** together to collect at
that scale.

***

### 🔌 Integrations

Because results live in a standard Apify dataset, they flow into the
tools you already use:

- **Spreadsheets** — export CSV or Excel, or connect Google Sheets to
  refresh a TRY price workbook on a schedule.
- **Databases & warehouses** — pull the dataset through the Apify API
  into Postgres, BigQuery, Snowflake or your internal catalogue.
- **Automation platforms** — trigger Make, Zapier or n8n workflows when
  a scheduled run finishes (for example: "seller undercut on SKU …").
- **Chat alerts** — post a Slack or email digest of the biggest
  discount movers after each run.
- **BI dashboards** — feed Looker Studio, Tableau or Power BI from the
  exported data for an always-current assortment view.
- **Custom code** — call the actor from the Apify API / SDKs in your
  own pricing pipeline and read structured JSON back.

A typical pattern: schedule the actor daily per keyword, then let an
automation diff prices by `sku` and flag the biggest movers.

***

### 💡 Tips for better results

- **Search in Turkish.** Hepsiburada is a Turkish marketplace —
  `telefon`, `kulaklik`, `akilli saat` return far richer results than
  English equivalents.
- **Start with the starter sample.** Run the pre-filled terms first to
  see the output shape, then focus on your keywords.
- **Match the sort to the question.** Cheapest-first answers "who is
  cheapest?", biggest-discount answers "what is on campaign?", most-
  reviewed answers "what is proven?".
- **Read `rating` with `reviewCount`.** A 5.0 from 4 reviews and a 4.8
  from 4,800 reviews are different signals; the pair tells the story.
- **Raise both caps together.** **Max results** and **Max pages per
  search term** work as a pair; deep exports need both lifted.
- **Keep runs comparable.** Same terms and sort on a schedule give you
  a clean time series; changing inputs mid-series breaks comparisons.
- **Split broad topics into terms.** Several focused keywords collect
  a wider overall selection than one very broad term alone.

***

### ⚠️ Limitations

- **Search-result data.** The actor collects what search listings
  show for your terms. Variant-level detail beyond the default
  variant lives on each product page — follow `productUrl`.
- **Default variant per product.** One record represents the product's
  default variant (its headline price and seller). Other colour /
  capacity variants are listed on the product page itself.
- **Discounts mirror the marketplace.** If a product has no campaign,
  there is no discount to report. The actor never invents one.
- **Prices move.** TRY prices, campaigns and stock change through the
  day — treat each run as a timestamped snapshot (`scrapedAt`).
- **Turkish catalogue.** Content, currency and campaign labels are
  Turkish (TRY) by design; that is the marketplace's own language.

***

### ❓ FAQ

#### Do I need a Hepsiburada account?

No. The actor works with public search results. Just press Start.

#### What happens if I run it with no input at all?

You still get data: about 100 products balanced across the starter
searches (`telefon`, `laptop`, `kulaklik`). It is the fastest way to
see exactly what the output looks like.

#### How many products can I collect?

A single popular term matches up to 10,000 products. Set **Max
results** and raise **Max pages per search term** (36 products per
page) to collect deeply; combining terms goes further still.

#### Which keywords should I use?

Turkish category and product words: `telefon` (phone), `laptop`,
`kulaklik` (headphones), `tablet`, `akilli saat` (smartwatch). Add
brand names to focus on one maker's range.

#### Why do some products have no discount?

They are not on campaign. `discountRate` and `campaignLabels` only
exist when the marketplace applies them — full-price products
correctly carry neither.

#### Can I compare sellers for the same product?

Yes. Search the product keyword, sort by price low-to-high, and read
`price` next to `merchantName` / `merchantId`. Every record names its
seller.

#### Can I run this on a schedule and track price changes?

Yes. Schedule identical inputs (daily works well) and compare exports
by `sku` and `scrapedAt`. Changing prices and campaigns show movement.

#### Which export format should I choose?

CSV or Excel for spreadsheet work, JSON for code and pipelines. The
Console preview table is handy for a quick look and light filtering.

#### Are prices really in Turkish lira?

Yes — `currency` is always `TRY` and `price` / `originalPrice` are
the lira amounts shown on Hepsiburada. No conversion is applied.

***

### 🔍 Keywords

Hepsiburada scraper · Turkey marketplace data · Turkish e-commerce
scraper · Hepsiburada prices · seller price monitoring · TRY price
tracker · discount and campaign tracking · assortment research Turkey ·
marketplace product export · Turkish product data API

***

### 📄 Disclaimer

This is an independent tool for collecting publicly available search
information. **Not affiliated with Hepsiburada.** Hepsiburada is a
trademark of its respective owner; product and brand names appear here
only to describe what the data refers to. Please respect
Hepsiburada's terms when using collected data.

# Actor input Schema

## `searchTerms` (type: `array`):

Turkish keywords to search on Hepsiburada, e.g. telefon (phone), laptop, kulaklik (headphones). Each term is searched separately and results are combined without duplicates. Leave empty to use the popular starter searches.

## `sortOrder` (type: `string`):

How search results are ordered on Hepsiburada: recommended ranking, lowest or highest price, best sellers, most reviewed, highest rated, biggest discount or newest first. Helps you surface cheapest offers, top sellers or trending products first.

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

Maximum number of products to collect across all search terms. Results are spread across your terms so you get a balanced sample. Leave at 100 for a quick overview, or raise it for deeper price and assortment research.

## `maxPagesPerSearch` (type: `integer`):

How many result pages to visit for each search term (36 products per page). Higher values collect more of the catalogue for that keyword. The run also stops automatically when a term has no more new products.

## `proxyConfiguration` (type: `object`):

Proxy settings for stable, uninterrupted collection. Apify Proxy is enabled by default so runs complete reliably; you can switch groups or use your own proxy if you prefer.

## Actor input object example

```json
{
  "searchTerms": [
    "telefon",
    "laptop",
    "kulaklik"
  ],
  "sortOrder": "recommended",
  "maxItems": 100,
  "maxPagesPerSearch": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

All scraped Hepsiburada products (name, brand, SKU, TRY price, seller, rating, discounts and product link).

# 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 = {
    "searchTerms": [
        "telefon",
        "laptop",
        "kulaklik"
    ],
    "sortOrder": "recommended",
    "maxItems": 100,
    "maxPagesPerSearch": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/hepsiburada-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 = {
    "searchTerms": [
        "telefon",
        "laptop",
        "kulaklik",
    ],
    "sortOrder": "recommended",
    "maxItems": 100,
    "maxPagesPerSearch": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/hepsiburada-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 '{
  "searchTerms": [
    "telefon",
    "laptop",
    "kulaklik"
  ],
  "sortOrder": "recommended",
  "maxItems": 100,
  "maxPagesPerSearch": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call haketa/hepsiburada-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,haketa/hepsiburada-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/KVE8pViULcrY9H0Ne/builds/03TN2INyPMdgc6aZB/openapi.json
