# Akakçe Price Comparison Scraper — TR Marketplace Offers (`tamgadev/akakce-price-scraper`) Actor

Scrape Akakçe product pages for merchant-level prices across Turkish marketplaces (n11, MediaMarkt, Pazarama, idefix, and more).

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

## Pricing

from $2.00 / 1,000 offers

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Akakçe Price Comparison Scraper — TR Marketplace Offers

Extract merchant-level prices from [Akakçe](https://www.akakce.com) for cross-marketplace price monitoring in Turkey.

Built for e-commerce operators, price intelligence teams, agencies, and founders who need structured offer data from n11, MediaMarkt, Pazarama, idefix, PttAVM, and other sellers — without opening dozens of storefronts.

### What you get

For each merchant offer:

- Product name, Akakçe URL, product ID
- Brand + SKU (when present in structured data)
- Aggregate low / high price + offer count
- Seller name + Akakçe store URL
- Offer price (TRY) + outbound offer URL
- Availability / condition when available
- Source (`json-ld` or HTML fallback)
- Scrape timestamp

### Who is this for

- Marketplace sellers tracking competitor prices on the same SKU
- Agencies building weekly TR price reports for retail clients
- Dynamic pricing / MAP monitoring teams
- Product researchers comparing landed prices across stores
- AI pipelines that need fresh Turkish retail offer rows

### How to use

1. Enter one or more search queries (`iphone 15 128`, `dyson v15`) **or** paste Akakçe product URLs.
2. Set `maxProducts` (how many product pages to open) and `maxOffers` (row cap).
3. Run. Export JSON / CSV / Excel from the dataset.

#### Example input

```json
{
  "queries": ["iphone 15 128"],
  "maxProducts": 5,
  "maxOffers": 100,
  "maxOffersPerProduct": 30,
  "maxSearchPages": 1,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

#### Example output

```json
{
  "productName": "Apple iPhone 15 128 GB",
  "productUrl": "https://www.akakce.com/cep-telefonu/en-ucuz-iphone-15-128-gb-siyah-fiyati,282674948.html",
  "productId": "282674948",
  "brand": "Apple",
  "seller": "Pazarama/MEDIAMARKT",
  "price": 56331,
  "currency": "TRY",
  "offerUrl": "https://www.pazarama.com/...",
  "lowPrice": 56331,
  "highPrice": 66585,
  "offerCount": 48,
  "source": "json-ld",
  "scrapedAt": "2026-09-15T00:00:00.000Z"
}
```

### Pricing (PPE)

This Actor is designed for **pay-per-event** pricing.

- Event: `offer` — charged once per delivered merchant offer row
- Recommended Store price: **$2.00 / 1,000 offers** (adjust after cost calibration)
- Platform usage can be included or billed separately depending on your monetization settings

Typical cost for users: a few cents for a 5-product / ~100-offer price matrix.

### Tips for better results

- Prefer exact model queries (`iphone 15 128 gb siyah`) over broad category terms.
- Pass product URLs when you already know the Akakçe page — skips search noise.
- Keep `maxOffersPerProduct` high enough to capture the full merchant ladder.
- On Apify platform, use **Unblocker** or **Residential** proxies (datacenter IPs get 403).
- Schedule daily runs to build a price history per SKU.

### Output fields

| Field | Description |
| --- | --- |
| `productName` | Product title from Akakçe |
| `seller` | Merchant / marketplace label |
| `price` | Offer price in TRY |
| `offerUrl` | Outbound storefront URL when available |
| `productUrl` | Akakçe comparison page |
| `lowPrice` / `highPrice` | Aggregate range on the product |
| `brand` / `sku` | Structured product metadata |

### Limitations

- Scrapes public Akakçe HTML / JSON-LD only — not a private API.
- Outbound offer URLs may be redirected through Akakçe tracking links in HTML mode.
- Very large catalogs need higher `maxProducts` / `maxOffers` and more memory.
- Site layout changes can require Actor updates.

### Related Actors

- [Şikayetvar Scraper](https://apify.com/hamzakayici/sikayetvar-scraper) — brand complaint intelligence
- [Şikayetvar Monitor](https://apify.com/hamzakayici/sikayetvar-monitor) — new-complaint alerts

# Actor input Schema

## `queries` (type: `array`):

Product search terms (e.g. iphone 15 128, dyson v15).

## `startUrls` (type: `array`):

Akakçe product pages (...fiyati,ID.html) or search URLs.

## `maxProducts` (type: `integer`):

Maximum product detail pages to open from search results.

## `maxOffers` (type: `integer`):

Maximum merchant offer rows to save across all products.

## `maxOffersPerProduct` (type: `integer`):

Cap merchant offers returned for a single product page.

## `maxSearchPages` (type: `integer`):

How many Akakçe search result pages to walk per query.

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

Akakçe blocks datacenter IPs. Prefer Apify Unblocker or Residential.

## Actor input object example

```json
{
  "queries": [
    "iphone 15 128"
  ],
  "startUrls": [],
  "maxProducts": 10,
  "maxOffers": 100,
  "maxOffersPerProduct": 30,
  "maxSearchPages": 1,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ]
  }
}
```

# Actor output Schema

## `offers` (type: `string`):

Scraped merchant offer records

# 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 = {
    "queries": [
        "iphone 15 128"
    ],
    "startUrls": [],
    "maxProducts": 10,
    "maxOffers": 100,
    "maxOffersPerProduct": 30,
    "maxSearchPages": 1,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "UNBLOCKER"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("tamgadev/akakce-price-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 = {
    "queries": ["iphone 15 128"],
    "startUrls": [],
    "maxProducts": 10,
    "maxOffers": 100,
    "maxOffersPerProduct": 30,
    "maxSearchPages": 1,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["UNBLOCKER"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("tamgadev/akakce-price-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 '{
  "queries": [
    "iphone 15 128"
  ],
  "startUrls": [],
  "maxProducts": 10,
  "maxOffers": 100,
  "maxOffersPerProduct": 30,
  "maxSearchPages": 1,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ]
  }
}' |
apify call tamgadev/akakce-price-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tamgadev/akakce-price-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/KVHE6MMlHGgJLQSsX/builds/EYihUxVsgf4xWSzIp/openapi.json
