# Trendyol Product Scraper (`sian.agency/trendyol-product-scraper`) Actor

Scrape Trendyol — Turkey's #1 marketplace — for prices (TRY), ratings, reviews, Q\&A, full specs, variants, images, favorites & seller data. Keyword, URL or category search; fast overview or full detail. Clean JSON/CSV/Excel, no code, no API key.

- **URL**: https://apify.com/sian.agency/trendyol-product-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** E-commerce, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.70 / 1,000 overview product extracteds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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

## Trendyol Product Scraper – Prices, Specs, Reviews & Seller Data 🚀

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Wildberries Product Scraper](https://img.shields.io/badge/Store-Wildberries%20Product%20Scraper-CB11AB)](https://apify.com/sian.agency/wildberries-product-scraper?fpr=sian) [![Amazon Product Scraper](https://img.shields.io/badge/Store-Amazon%20Product%20Scraper-FF9900)](https://apify.com/sian.agency/amazon-product-scraper?fpr=sian) [![AliExpress Product Scraper](https://img.shields.io/badge/Store-AliExpress%20Product%20Scraper-FF4747)](https://apify.com/sian.agency/aliexpress-product-scraper?fpr=sian)

#### 🎉 Export live Trendyol product data — prices in TRY, star ratings, full specs, seller scores and review insights — from Turkey's #1 marketplace, no code and no API key required.
##### Perfect for price-monitoring teams, e-commerce analysts, brand managers, and market researchers who need clean, structured Turkey e-commerce data on demand.

---

### 📋 Overview

**The Trendyol Product Scraper turns Turkey's biggest online marketplace into a clean data feed.** Search by keyword, category, or URL and get structured product records — across electronics, fashion, home, cosmetics, and every other Trendyol vertical — ready for Excel, BigQuery, or your pricing dashboard.

**Why thousands of professionals choose us:**
- ✅ **No Account, No API Key**: Just type a search term and click Run — nothing to configure, nothing to log in to
- ⚡ **Two Speeds, One Actor**: Fast Overview mode for bulk price sweeps, or Detail mode for full specs, reviews and seller data
- 🎯 **35+ Data Fields**: Price, discount %, star rating, specifications, variants, seller score and more — per product
- 💰 **Pay Per Result**: You're only charged for products successfully scraped — no wasted spend
- 💎 **Turkey-Native Data**: Prices in Turkish Lira (TRY), Turkish specs and review keywords, straight from Trendyol.com
- ✨ **NEW**: AI review summaries and aggregated review keyword tags distilled from thousands of customer comments

### ✨ Features

- 🔎 **Keyword, Category & URL Search**: Scrape any Trendyol search — paste a keyword, a category id, or a full trendyol.com URL with your filters already applied
- 💸 **Complete Pricing Data**: Current price, original strikethrough price, discount percentage, currency, and the free-cargo flag
- ⭐ **Ratings & Reviews**: Star rating, total rating count, written review-comment count and merchant Q&A count
- 🧩 **Full Specifications Table**: 25+ attributes per product — screen size, RAM, colour, warranty, material, and more
- 🎨 **Colour & Size Variants**: Every variant with its own product link, so you can track a full product family
- 🏬 **Seller Intelligence**: Store name, seller score, and total product count for each merchant
- 🧠 **AI Review Summary & Keyword Tags**: An AI-written pros/cons summary plus the top review themes, when available
- 🖼️ **Full Image Gallery**: Main image plus the complete high-resolution photo set for every product
- 📦 **Stock & Condition**: In-stock availability, product condition, and the rich product description
- 📤 **Clean Exports**: Download every run as JSON, CSV, or Excel in one click

### 🎬 Quick Start

Type a search term, pick a mode, and click Run — results stream into your dataset in seconds. Prefer the API? One call gets you going:

```bash
curl -X POST https://api.apify.com/v2/acts/sian.agency~trendyol-product-scraper/runs?token=YOUR_TOKEN \
-H 'Content-Type: application/json' \
-d '{"keywords": ["telefon"], "scrapeMode": "overview", "maxResults": 100}'
````

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Enter Your Search

Type one or more search keywords (one per line), paste a Trendyol category id, or drop in full trendyol.com URLs with your filters already set.

#### Step 2: Pick a Mode and Run

Choose **Overview** for a fast price-and-rating sweep, or **Detail** for full specs, variants, reviews and seller data. Set your sort order and price range, then click Run.

#### Step 3: Download Your Results

Export clean, structured product data as JSON, CSV, or Excel — ready for your dashboard, spreadsheet, or database.

**That's it! In under a minute, you'll have:**

- Live Trendyol prices in TRY with discount percentages
- Star ratings, review counts, and seller scores
- Full specification tables and product variants
- The complete image gallery for every product
- Export-ready data for pricing, catalog, and market research

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| keywords | array | No | Trendyol search terms, one per line (e.g. `telefon`, `bluetooth kulaklık`) |
| scrapeMode | string | No | `overview` (fast search) or `detail` (full specs, reviews & description) |
| sort | string | No | `relevance`, `best_seller`, `price_low`, `price_high`, or `newest` |
| minPrice | integer | No | Only return products at or above this price (TRY) |
| maxPrice | integer | No | Only return products at or below this price (TRY) |
| category | string | No | Trendyol category id, e.g. `103498` |
| brand | string | No | Trendyol brand id(s), comma-separated, e.g. `794` |
| urls | array | No | Advanced — full trendyol.com search/category URLs (your filters are preserved) |
| maxResults | integer | No | Maximum products to return across all searches (default `100`) |

**Example — keyword search in Detail mode:**

```json
{
  "keywords": ["telefon", "bluetooth kulaklık"],
  "scrapeMode": "detail",
  "sort": "best_seller",
  "minPrice": 500,
  "maxPrice": 15000,
  "maxResults": 100
}
```

**Example — paste Trendyol URLs (advanced):**

```json
{
  "urls": [
    "https://www.trendyol.com/sr?q=laptop",
    "https://www.trendyol.com/cep-telefonu-x-c103498"
  ],
  "scrapeMode": "overview"
}
```

### 📤 Output

Every product is saved to your Apify dataset with **35+ fields**. Overview mode returns the core commerce fields below; Detail mode adds specifications, variants, reviews, and seller intelligence.

| Field | Type | Description |
|-------|------|-------------|
| id | number | Trendyol product id |
| productTitle | string | Full product title |
| brand | string | Brand name |
| category | string | Product category |
| price | number | Current selling price (TRY) |
| original\_price | number | Original strikethrough price (TRY) |
| discount\_percentage | number | Discount percentage, when on sale |
| free\_cargo | boolean | Free-shipping (free-cargo) flag |
| rating | number | Average star rating |
| rating\_count | number | Number of ratings |
| review\_count | number | Written review-comment count *(Detail)* |
| qa\_count | number | Merchant question-and-answer count *(Detail)* |
| favorite\_count | number | How many shoppers favorited the product — a demand signal |
| order\_count | string | Approximate orders sold (e.g. `200+`) — a sales-velocity signal |
| seller\_name | string | Seller / store name *(Detail)* |
| seller\_score | number | Seller score out of 10 *(Detail)* |
| seller\_product\_count | number | Total products the seller lists *(Detail)* |
| in\_stock | boolean | Stock availability *(Detail)* |
| color | string | Product colour / selected option *(Detail)* |
| attributes | object | Full specifications table, 25+ attributes *(Detail)* |
| variants | array | Colour / size variants with their own links *(Detail)* |
| review\_tags | array | Aggregated review keyword tags *(Detail)* |
| ai\_review\_summary | string | AI-written review summary, when present *(Detail)* |
| description | string | Rich product description *(Detail)* |
| image | string | Main product image URL |
| images | array | Full high-resolution image gallery |
| url | string | Product page URL |

**Example (Detail mode, trimmed):**

```json
{
  "id": 881465224,
  "productTitle": "Samsung Galaxy A16 128 GB 4 GB Ram Siyah Cep Telefonu (Samsung Türkiye Garantili)",
  "url": "https://www.trendyol.com/samsung/galaxy-a16-128-gb-4-gb-ram-siyah-cep-telefonu-samsung-turkiye-garantili-p-881465224",
  "source": "detail",
  "brand": "Samsung",
  "category": "Android Cep Telefonu",
  "merchant_id": 968,
  "seller_name": "Trendyol",
  "seller_score": 9.3,
  "seller_product_count": 38342,
  "price": 9899,
  "original_price": 9899,
  "currency": "TRY",
  "discount_percentage": null,
  "free_cargo": false,
  "rating": 4.6,
  "rating_count": 593,
  "review_count": 287,
  "qa_count": 427,
  "in_stock": true,
  "condition": "New",
  "color": "128 GB",
  "attributes": {
    "Ekran Boyutu": "6,8 inç",
    "RAM Kapasitesi": "4 GB",
    "Dahili Hafıza": "128 GB",
    "Pil Gücü (mAh)": "5000",
    "Görüntü Teknolojisi": "AMOLED",
    "Garanti Tipi": "Samsung TR Garantili"
  },
  "variants": [
    { "type": "DsmColor", "title": "Renk", "value": "Siyah", "url": "https://www.trendyol.com/samsung/galaxy-a16-128-gb-4-gb-ram-siyah-cep-telefonu-samsung-turkiye-garantili-p-881465224", "selected": true },
    { "type": "DsmColor", "title": "Renk", "value": "Gri", "url": "https://www.trendyol.com/samsung/galaxy-a16-4-gb-ram-128-gb-gri-p-882761835", "selected": false }
  ],
  "review_tags": ["Fiyat", "Teslimat Süresi", "Paketleme", "Şarj/Pil/Batarya", "Garanti/Fatura"],
  "ai_review_summary": "• Tasarım ve görünüm beğenildi. • Kullanımı pratik, hediye olarak tercih ediliyor. • Fiyat-performans oranı olumlu bulundu. • Kamera günlük kullanım için yeterli. • Dayanıklı ve uzun ömürlü.",
  "image": "https://cdn.dsmcdn.com/ty1610/prod/QC/20241206/14/50aae64e-0031-31f0-a0f6-75fc90b4ec58/1_org_zoom.jpg",
  "images": [
    "https://cdn.dsmcdn.com/ty1610/prod/QC/20241206/14/50aae64e-0031-31f0-a0f6-75fc90b4ec58/1_org_zoom.jpg",
    "https://cdn.dsmcdn.com/ty1609/prod/QC/20241206/14/67d63131-2a63-344d-879d-456e1a146b36/1_org_zoom.jpg",
    "https://cdn.dsmcdn.com/ty1610/prod/QC/20241206/14/c8a03cd7-dc4e-3617-aaaf-30e4a5b26c57/1_org_zoom.jpg"
  ],
  "image_count": 6
}
```

### 💼 Use Cases & Examples

#### 1. Price & Promo Monitoring

**Retailers and analysts tracking how Trendyol prices and discounts move over time.**

**Input:** Your product keywords or category ids, scheduled daily in Overview mode
**Output:** Current price, original price, and discount % in TRY for every listing
**Use:** Trigger repricing, spot flash sales, and build price-history charts.

#### 2. Competitor Pricing Intelligence (Turkey Market)

**Brands and marketplaces benchmarking rivals selling into Turkey.**

**Input:** Competitor brand ids or search terms, sorted by best seller
**Output:** Price, seller, rating, and stock for every competing listing
**Use:** Understand where you sit on price and rating against the Turkish market.

#### 3. Catalog & Assortment Research

**Category managers mapping what's actually sold on Trendyol.**

**Input:** Category ids across the verticals you care about
**Output:** Full product lists with brands, prices, and images
**Use:** Find assortment gaps, trending brands, and new-product opportunities.

#### 4. Product-Spec Extraction for Feeds

**Feed and PIM teams that need clean structured attributes.**

**Input:** Product URLs or keywords in Detail mode
**Output:** A 25+ attribute specifications table, variants, and the full image gallery
**Use:** Populate product feeds, comparison sites, and marketplace listings.

#### 5. Brand & Seller Monitoring

**Brand-protection and marketplace teams watching who sells their products.**

**Input:** Your brand id in Detail mode
**Output:** Seller store names, seller scores, and product counts per listing
**Use:** Detect unauthorized sellers and track seller reputation over time.

#### 6. Market & Demand Research

**Analysts sizing demand across Turkish e-commerce categories.**

**Input:** Broad category or keyword searches sorted by best seller or newest
**Output:** Ratings, rating counts, and review volumes as demand signals
**Use:** Rank products by popularity and spot rising categories early.

#### 7. Review & Rating Aggregation

**Product and CX teams distilling customer sentiment at scale.**

**Input:** Product URLs in Detail mode
**Output:** Review counts, aggregated review keyword tags, and AI review summaries
**Use:** Surface recurring praise and complaints without reading every comment.

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/trendyol-product-scraper').call({
  keywords: ['telefon'],
  scrapeMode: 'detail',
  sort: 'best_seller',
  maxResults: 100
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/trendyol-product-scraper').call(
    run_input={
        'keywords': ['telefon'],
        'scrapeMode': 'detail',
        'sort': 'best_seller',
        'maxResults': 100
    }
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~trendyol-product-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"keywords": ["telefon"], "scrapeMode": "detail", "maxResults": 100}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: Schedule a daily run or fire from a webhook
2. **HTTP Request**: Call the actor API with your keywords
3. **Process**: Handle the JSON product records
4. **Action**: Save to your database, update a dashboard, or send a price-drop alert

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- Up to **25 products per run** — full feature access, same data quality
- No credit card required
- Perfect for testing and small projects

#### PAID Tier (Production Ready)

- **Unlimited** products per run
- Faster, uninterrupted large-scale scraping
- Pay-per-result: you're only charged for products successfully scraped

💰 **Best price on the market** — transparent pay-per-result pricing with no monthly minimums.

🔗 [View current pricing](https://apify.com/sian.agency/trendyol-product-scraper?fpr=sian)

### ❓ Frequently Asked Questions

**Q: How many products can I scrape?**
A: FREE tier: up to 25 products per run. PAID tier: unlimited, capped only by your `maxResults`.

**Q: Do I need a Trendyol account or API key?**
A: No. Just enter a search term and click Run — there's nothing to log in to.

**Q: What's the difference between Overview and Detail mode?**
A: Overview is a fast search sweep (id, title, price, rating, images). Detail also opens each product page for full specifications, variants, reviews, seller data, and the description.

**Q: What currency are the prices in?**
A: Turkish Lira (TRY), exactly as shown on Trendyol.com.

**Q: What output formats are available?**
A: JSON, CSV, and Excel — export directly from the Apify dataset.

**Q: Can I filter by price, category, or brand?**
A: Yes. Set a min/max price in TRY, a category id, or a brand id — or paste a full Trendyol URL with your filters already applied.

**Q: Is this legal?**
A: Yes — the actor only collects publicly available data. See the [legal section](#️-is-it-legal-to-scrape-data) below.

### 🐛 Troubleshooting

**No results returned**

- Check your keyword spelling — Trendyol is a Turkish-language site (e.g. `telefon`, not `phone`)
- Widen your min/max price range or remove the category/brand filter
- Confirm the search returns products when you open it on trendyol.com

**Missing specs, reviews, or seller data**

- Those fields are only populated in **Detail** mode — switch `scrapeMode` to `detail`
- Some products genuinely have no reviews or variants yet, so those fields stay empty

**Run stops early**

- FREE tier caps each run at 25 products — upgrade to PAID for unlimited results
- Raise `maxResults` if you set it lower than the number of products you need

**Pasted URL scraped the wrong products**

- Make sure the URL is a Trendyol search or category page, with your filters already applied in the browser

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what has been chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### 📜 Trademark & Legal Disclaimer

Trendyol is a trademark of Trendyol Group and its respective owners. This actor is an **independent tool** and is **not affiliated with, endorsed by, or sponsored by** Trendyol. All product names, brand names, logos, and trademarks referenced belong to their respective owners and are used for identification purposes only. This tool collects **only publicly available data** and does not access private accounts, private user information, or any content behind a login.

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue in the actor's repository
- Check [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- ✉️ <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

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

🔍 **KEYWORD SEARCH:** Free-text Trendyol searches — exactly what you'd type into the site's search bar (Turkish terms work best).

📝 **EXAMPLES:** `telefon` · `bluetooth kulaklık` · `kadın elbise` · `laptop` · `bebek arabası`

💡 **TIP:** Add one keyword per line — each runs as its own search and all results land in the same dataset.

🖊️ **BULK EDIT:** Click "Bulk edit" to paste many keywords at once (one per line).

✅ **IMPORTANT:** Provide either keywords, Trendyol URLs, OR a category/brand id (at least one is needed to have something to scrape).

## `scrapeMode` (type: `string`):

⚙️ **SCRAPE DEPTH:** Choose how much data to pull per product.

⚡ **Overview (fast):** Search results only — contentId, brand, merchant, category, price (current / original / discount), rating & review count, image gallery, product URL, free-cargo flag and badges. Fastest and cheapest path.

🔬 **Detail (full enrichment):** Everything in Overview PLUS the full specifications table (25+ attributes), colour & size variants, review-comment count, Q\&A count, seller store info (score & product count), rich product description, availability, condition and colour.

💡 **TIP:** Start with Overview to scope the catalog, then switch to Detail when you need the complete spec sheet for feeds or comparisons.

## `sort` (type: `string`):

🔃 **RESULT ORDERING:** Order search results using Trendyol's own native sort keys — so you get the same ranking real shoppers see.

🎯 **Relevance** is Trendyol's default score · 🏆 **Best seller** surfaces the most popular products first · 💲 **Price** sorts ascending or descending · 🆕 **Newest** prioritizes the latest arrivals.

## `maxResults` (type: `integer`):

🔢 **RESULT CAP:** Maximum number of products to return across all keywords, URLs and category/brand filters combined.

🎁 **TIER-BASED LIMITS:**

- **FREE users:** Up to 25 products per run
- **PAID users:** Unlimited — scrape entire catalogs in a single run

💡 **TIP:** Keep this low while you dial in your keywords, then raise it once the output looks right.

## `category` (type: `string`):

🧭 **CATEGORY BROWSING (Advanced):** Scrape a whole Trendyol category instead of a keyword search, using Trendyol's own web-category id (`wc`).

🔧 **HOW TO GET IT:** Open any Trendyol category page and copy the numeric `wc` value from the URL — e.g. `103498`.

💡 **TIP:** Leave blank if you're only using keywords — this is purely an advanced alternative for category-level harvesting.

## `brand` (type: `string`):

™️ **BRAND FILTER (Advanced):** Restrict results to one or more brands using Trendyol's own web-brand id (`wb`).

🔧 **HOW TO GET IT:** Open a brand page on Trendyol and copy the numeric `wb` value from the URL — e.g. `794` (Samsung).

🖊️ **MULTIPLE BRANDS:** Comma-separate ids, e.g. `794,968`.

💡 **TIP:** Leave blank to include every brand.

## `minPrice` (type: `integer`):

💵 **MINIMUM PRICE:** Only return products at or above this price, in Turkish Lira (TRY). Leave blank for no lower bound.

## `maxPrice` (type: `integer`):

💰 **MAXIMUM PRICE:** Only return products at or below this price, in Turkish Lira (TRY). Leave blank for no upper bound.

## `urls` (type: `array`):

🔗 **PASTE RESULT-PAGE URLs:** Paste full trendyol.com search or category result-page URLs to scrape them verbatim — the filters and sorting you already set in the URL are preserved.

📝 **EXAMPLE:** `https://www.trendyol.com/sr?q=telefon`

🖊️ **BULK EDIT:** Add one URL per line to sweep several pages in a single run.

## Actor input object example

```json
{
  "keywords": [
    "telefon"
  ],
  "scrapeMode": "overview",
  "sort": "relevance",
  "maxResults": 100
}
```

# Actor output Schema

## `trendyolProducts` (type: `string`):

Scraped Trendyol products with prices, ratings, reviews, full specifications, variants, images and seller store info.

# 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 = {
    "keywords": [
        "telefon"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/trendyol-product-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 = { "keywords": ["telefon"] }

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/trendyol-product-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "keywords": [
    "telefon"
  ]
}' |
apify call sian.agency/trendyol-product-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=sian.agency/trendyol-product-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Trendyol Product Scraper",
        "description": "Scrape Trendyol — Turkey's #1 marketplace — for prices (TRY), ratings, reviews, Q&A, full specs, variants, images, favorites & seller data. Keyword, URL or category search; fast overview or full detail. Clean JSON/CSV/Excel, no code, no API key.",
        "version": "1.0",
        "x-build-id": "NICGNfiQreD8dDZra"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~trendyol-product-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-trendyol-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/sian.agency~trendyol-product-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-trendyol-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/sian.agency~trendyol-product-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-trendyol-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "keywords": {
                        "title": "🔍 Search Keywords",
                        "type": "array",
                        "description": "🔍 **KEYWORD SEARCH:** Free-text Trendyol searches — exactly what you'd type into the site's search bar (Turkish terms work best).\n\n📝 **EXAMPLES:** `telefon` · `bluetooth kulaklık` · `kadın elbise` · `laptop` · `bebek arabası`\n\n💡 **TIP:** Add one keyword per line — each runs as its own search and all results land in the same dataset.\n\n🖊️ **BULK EDIT:** Click \"Bulk edit\" to paste many keywords at once (one per line).\n\n✅ **IMPORTANT:** Provide either keywords, Trendyol URLs, OR a category/brand id (at least one is needed to have something to scrape).",
                        "default": [
                            "telefon"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "scrapeMode": {
                        "title": "⚙️ Scrape Mode",
                        "enum": [
                            "overview",
                            "detail"
                        ],
                        "type": "string",
                        "description": "⚙️ **SCRAPE DEPTH:** Choose how much data to pull per product.\n\n⚡ **Overview (fast):** Search results only — contentId, brand, merchant, category, price (current / original / discount), rating & review count, image gallery, product URL, free-cargo flag and badges. Fastest and cheapest path.\n\n🔬 **Detail (full enrichment):** Everything in Overview PLUS the full specifications table (25+ attributes), colour & size variants, review-comment count, Q&A count, seller store info (score & product count), rich product description, availability, condition and colour.\n\n💡 **TIP:** Start with Overview to scope the catalog, then switch to Detail when you need the complete spec sheet for feeds or comparisons.",
                        "default": "overview"
                    },
                    "sort": {
                        "title": "🔃 Sort Order",
                        "enum": [
                            "relevance",
                            "best_seller",
                            "price_low",
                            "price_high",
                            "newest"
                        ],
                        "type": "string",
                        "description": "🔃 **RESULT ORDERING:** Order search results using Trendyol's own native sort keys — so you get the same ranking real shoppers see.\n\n🎯 **Relevance** is Trendyol's default score · 🏆 **Best seller** surfaces the most popular products first · 💲 **Price** sorts ascending or descending · 🆕 **Newest** prioritizes the latest arrivals.",
                        "default": "relevance"
                    },
                    "maxResults": {
                        "title": "🔢 Max Results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "🔢 **RESULT CAP:** Maximum number of products to return across all keywords, URLs and category/brand filters combined.\n\n🎁 **TIER-BASED LIMITS:**\n- **FREE users:** Up to 25 products per run\n- **PAID users:** Unlimited — scrape entire catalogs in a single run\n\n💡 **TIP:** Keep this low while you dial in your keywords, then raise it once the output looks right.",
                        "default": 100
                    },
                    "category": {
                        "title": "🧭 Category ID (Advanced)",
                        "type": "string",
                        "description": "🧭 **CATEGORY BROWSING (Advanced):** Scrape a whole Trendyol category instead of a keyword search, using Trendyol's own web-category id (`wc`).\n\n🔧 **HOW TO GET IT:** Open any Trendyol category page and copy the numeric `wc` value from the URL — e.g. `103498`.\n\n💡 **TIP:** Leave blank if you're only using keywords — this is purely an advanced alternative for category-level harvesting."
                    },
                    "brand": {
                        "title": "™️ Brand ID (Advanced)",
                        "type": "string",
                        "description": "™️ **BRAND FILTER (Advanced):** Restrict results to one or more brands using Trendyol's own web-brand id (`wb`).\n\n🔧 **HOW TO GET IT:** Open a brand page on Trendyol and copy the numeric `wb` value from the URL — e.g. `794` (Samsung).\n\n🖊️ **MULTIPLE BRANDS:** Comma-separate ids, e.g. `794,968`.\n\n💡 **TIP:** Leave blank to include every brand."
                    },
                    "minPrice": {
                        "title": "💵 Min Price (TRY)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "💵 **MINIMUM PRICE:** Only return products at or above this price, in Turkish Lira (TRY). Leave blank for no lower bound."
                    },
                    "maxPrice": {
                        "title": "💰 Max Price (TRY)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "💰 **MAXIMUM PRICE:** Only return products at or below this price, in Turkish Lira (TRY). Leave blank for no upper bound."
                    },
                    "urls": {
                        "title": "🔗 Trendyol URLs (Advanced)",
                        "type": "array",
                        "description": "🔗 **PASTE RESULT-PAGE URLs:** Paste full trendyol.com search or category result-page URLs to scrape them verbatim — the filters and sorting you already set in the URL are preserved.\n\n📝 **EXAMPLE:** `https://www.trendyol.com/sr?q=telefon`\n\n🖊️ **BULK EDIT:** Add one URL per line to sweep several pages in a single run.",
                        "items": {
                            "type": "string"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
