# Trendyol Scraper - Products, Reviews & Q\&A (`parsebird/trendyol-product-scraper`) Actor

Scrape Trendyol product data, prices, ratings, sellers, reviews, Q\&A, coupons, badges, and promotion signals. Use API access, scheduling, integrations, and JSON, CSV, Excel exports.

- **URL**: https://apify.com/parsebird/trendyol-product-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:** E-commerce, Automation, Integrations
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.60 / 1,000 product listings

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 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

### Trendyol Scraper - Products, Reviews & Q\&A

Trendyol Scraper - Products, Reviews & Q\&A extracts public product, price, seller, rating, review, Q\&A, coupon, badge, and promotion data from [Trendyol](https://www.trendyol.com/) for ecommerce research and marketplace monitoring.

<table><tr>
<td style="border-left:4px solid #F27A1A;padding:12px 16px;font-weight:600">
Collect structured Trendyol product listings from search, category, merchant, collection, and product URLs, then optionally enrich each item with product-page details, customer reviews, and answered Q&A.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```text
Use Apify Actor parsebird/trendyol-product-scraper to scrape public Trendyol product data. Python example: from apify_client import ApifyClient; client=ApifyClient("APIFY_TOKEN"); run=client.actor("parsebird/trendyol-product-scraper").call(run_input={"queries":["playstation 5"],"minPrice":5000,"maxPrice":40000,"minimumStarRating":"4","couponsOnly":True,"enrich_data":True,"getReviews":True,"maxReviews":20,"limit":500}); items=list(client.dataset(run["defaultDatasetId"]).iterate_items()). JavaScript example: import { ApifyClient } from "apify-client"; const client = new ApifyClient({ token: "APIFY_TOKEN" }); const run = await client.actor("parsebird/trendyol-product-scraper").call({ queries:["playstation 5"], limit:500, enrich_data:true }); const { items } = await client.dataset(run.defaultDatasetId).listItems(); Key inputs: startUrls string[], queries string[], minPrice integer, maxPrice integer, minimumStarRating enum 1/2/3/4/4.5, lowestPriceDays string[] 10/14/30, influencerPreferredOnly boolean, couponsOnly boolean, specialOffersOnly boolean, newlyReleasedOnly boolean, enrich_data boolean default false, getReviews boolean default false, maxReviews integer, getQna boolean default false, maxQna integer, limit integer default 50000. Output records have type product/review/qna, id, url, source_context, and grouped product data including identifiers, brand, category, pricing, availability, seller, fulfillment, media, metrics, attributes, badges, promotions, advertising, and details. API docs: https://docs.apify.com/api/client/python/ and https://docs.apify.com/api/client/js/. Token: https://console.apify.com/account/integrations.
```

### What is Trendyol Scraper?

**Trendyol Scraper - Products, Reviews & Q\&A** is a Trendyol scraper and Trendyol API alternative for collecting public marketplace data from [Trendyol.com](https://www.trendyol.com/). Use it to scrape Trendyol search results, category pages, merchant pages, collection pages, and individual product pages.

The actor is built for price monitoring, assortment tracking, catalog enrichment, promotion analysis, review research, and repeatable ecommerce data pipelines. Results can be downloaded from Apify in JSON, CSV, Excel, XML, or HTML table formats.

### What can Trendyol Scraper do?

- Scrape Trendyol products from keywords such as brands, models, or categories.
- Collect products from Trendyol search URLs, category URLs, collection URLs, merchant store URLs, merchant all-products URLs, and product URLs.
- Extract product titles, prices, IDs, brand data, category data, seller details, availability, images, ratings, badges, coupons, and promotion signals.
- Optionally enrich discovered listings by visiting product pages for richer product details.
- Optionally collect customer reviews and answered product Q\&A as separate dataset records.
- Run once, schedule recurring runs with [Apify schedules](https://docs.apify.com/platform/schedules), or call the actor through the [Apify API](https://docs.apify.com/api/v2).
- Send results to databases, BI tools, Google Sheets, webhooks, or other apps through [Apify integrations](https://apify.com/integrations).

### What Trendyol data can you extract?

| Data group | Description |
|------------|-------------|
| `identifiers` | Product, content, listing, item, group, brand, merchant, campaign, boutique, and product-code identifiers |
| `brand` | Brand names, brand IDs, web-brand references, and global-brand flags |
| `category` | Category ID/name, hierarchy, tree, business unit, rankings, layout, and category flags |
| `pricing` | Current numeric price, currency, tax/installment data, source price objects, and source price components |
| `availability` | In-stock flags, stock state, quantity, sale limits, refundability, and related availability flags |
| `seller` | Seller identity, registered legal information when exposed, operational flags, campaign data, and winning variant data |
| `fulfillment` | Shipping, delivery, flash-sale, fulfilment type, and delivery-duration fields |
| `media` | Product image URLs, primary image, video data, and media capability flags |
| `metrics` | Rating totals, favorite count, review/comment counts, and social-proof labels |
| `attributes` | Product attributes, variants, gender, energy class, and source attribute flags |
| `badges` | Ranking, seller, tag, free-shipping, featured, premium, sale, and other source badges |
| `promotions` | Coupons, price labels, applied promotions, code-promo flags, and source promotion objects |
| `reviews` | Review ID, rating, comment, date, language, trusted flag, reviewer, seller, metrics, media, and parent product |
| `qna` | Question and answer IDs, text, dates, seller/user data, parent product, and source details |

### How to scrape Trendyol products

1. Open **Trendyol Scraper - Products, Reviews & Q\&A** on Apify.
2. Add one or more `queries`, such as `playstation 5`, or paste Trendyol URLs into `startUrls`.
3. Set optional filters such as `minPrice`, `maxPrice`, `minimumStarRating`, `couponsOnly`, or `newlyReleasedOnly`.
4. Keep `limit` small for a test run, then raise it for broader product discovery.
5. Turn on `enrich_data` to visit product pages and merge richer details into product records.
6. Turn on `getReviews` or `getQna` only when you need separate review or Q\&A records.
7. Start the run and export the dataset as JSON, CSV, Excel, XML, or HTML.

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `startUrls` | string\[] | No | `[]` | One or more Trendyol URLs to scrape directly |
| `queries` | string\[] | No | `[]` | Product-focused search terms for automatic Trendyol discovery |
| `minPrice` | integer | No | - | Optional minimum price for query-based searches |
| `maxPrice` | integer | No | - | Optional maximum price for query-based searches |
| `minimumStarRating` | string | No | - | Minimum customer rating: `1`, `2`, `3`, `4`, or `4.5` |
| `lowestPriceDays` | string\[] | No | `[]` | Keep products at their lowest tracked price in `10`, `14`, or `30` days when exposed |
| `influencerPreferredOnly` | boolean | No | `false` | Include only products labeled as Influencer Preferred |
| `couponsOnly` | boolean | No | `false` | Include only products that show coupon availability |
| `specialOffersOnly` | boolean | No | `false` | Include only products that show a special offer |
| `newlyReleasedOnly` | boolean | No | `false` | Include only newly released products |
| `enrich_data` | boolean | No | `false` | Visit product pages and merge richer product details |
| `getReviews` | boolean | No | `false` | Save customer reviews as separate dataset records |
| `maxReviews` | integer | No | - | Maximum reviews to save per product |
| `getQna` | boolean | No | `false` | Save answered Q\&A entries as separate dataset records |
| `maxQna` | integer | No | - | Maximum Q\&A items to save per product |
| `limit` | integer | No | `50000` | Maximum product listings to save for each query or listing URL |

### Input / Output

Example input:

```json
{
  "queries": ["playstation 5", "gaming chair"],
  "minPrice": 5000,
  "maxPrice": 40000,
  "minimumStarRating": "4",
  "couponsOnly": true,
  "enrich_data": true,
  "getReviews": true,
  "maxReviews": 20,
  "limit": 500
}
```

Product output example:

```json
{
  "type": "product",
  "id": "800623487",
  "url": "https://www.trendyol.com/sony/playstation-5-slim-dijital-2-dualsense-ps5-kol-sarj-istasyonu-ithalatci-garantili-p-800623487",
  "title": "Playstation 5 Slim Dijital 2. Dualsense Ps5 Kol Sarj Istasyonu",
  "source_context": {
    "seed_type": "query",
    "seed_value": "playstation 5",
    "domain": "www.trendyol.com"
  },
  "identifiers": {
    "product_id": "800623487",
    "content_id": 800623487,
    "merchant_id": 555576
  },
  "brand": {
    "name": "Sony"
  },
  "pricing": {
    "current_price": 37198,
    "currency": "TRY"
  },
  "seller": {
    "primary": {
      "name": "Fly Technology Ankara"
    }
  },
  "metrics": {
    "rating": {
      "average_rating": 4.52,
      "comment_count": 1762
    }
  }
}
```

Review and Q\&A records use the same top-level envelope with `type`, `id`, `url`, `parent_product`, `source_context`, and source-backed review or Q\&A fields. Use `type + ":" + id` as a stable idempotency key.

### How much does it cost to scrape Trendyol?

**What is the price per 1,000 Trendyol records?**

| Event | Free | Bronze | Silver | Gold |
|-------|------|--------|--------|------|
| Product Listing | $0.89 / 1,000 | $0.80 / 1,000 | $0.70 / 1,000 | $0.60 / 1,000 |
| Product Enrichment | $0.69 / 1,000 | $0.60 / 1,000 | $0.50 / 1,000 | $0.40 / 1,000 |
| Review/Q\&A | $0.69 / 1,000 | $0.60 / 1,000 | $0.50 / 1,000 | $0.40 / 1,000 |

Each `product-listing` event means one Trendyol product record was delivered. Each `product-enrichment` event means a product page was successfully merged into a product record. Each `review-qna` event means one review or answered Q\&A record was delivered. Apify free trial credits may cover small test runs where applicable.

### Use cases

- Track Trendyol prices, availability, coupons, and promotion signals over time.
- Compare marketplace sellers, ratings, badges, and assortment coverage.
- Enrich internal product catalogs with public Trendyol product metadata.
- Analyze customer reviews and answered Q\&A for product research.
- Monitor competitor listings through scheduled runs and API workflows.

### How it works

1. The actor validates Trendyol URLs, search terms, filters, enrichment settings, and record limits.
2. Query and listing URL seeds are converted into Trendyol listing API requests.
3. Product URL seeds are fetched directly from the product page.
4. Product records are normalized into stable semantic groups.
5. Optional enrichment fetches product pages and merges richer details into product records.
6. Optional review and Q\&A collection saves related records linked to the parent product.
7. Records are pushed to the default Apify dataset and charged through PPE only on the Apify platform.

### Python API example

```python
from apify_client import ApifyClient

client = ApifyClient("APIFY_TOKEN")

run = client.actor("parsebird/trendyol-product-scraper").call(
    run_input={
        "queries": ["playstation 5"],
        "minPrice": 5000,
        "maxPrice": 40000,
        "minimumStarRating": "4",
        "couponsOnly": True,
        "enrich_data": True,
        "getReviews": True,
        "maxReviews": 20,
        "limit": 500,
    }
)

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

See the [Apify Python client documentation](https://docs.apify.com/api/client/python/) for authentication and dataset methods.

### JavaScript API example

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

const client = new ApifyClient({ token: "APIFY_TOKEN" });

const run = await client.actor("parsebird/trendyol-product-scraper").call({
  queries: ["gaming chair"],
  enrich_data: true,
  getQna: true,
  maxQna: 20,
  limit: 500,
});

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

See the [Apify JavaScript client documentation](https://docs.apify.com/api/client/js/) for more examples.

### Is it legal to scrape Trendyol?

**Can I legally scrape Trendyol product data?**

This actor is designed to collect publicly available product, pricing, merchant, review, and answered Q\&A information from [Trendyol](https://www.trendyol.com/) for legitimate business purposes such as ecommerce research, market analysis, catalog enrichment, and promotion monitoring. You are responsible for making sure your use complies with applicable laws, regulations, and Trendyol's terms. This is informational, not legal advice. For general context, see Apify's guide to [web scraping legality](https://blog.apify.com/is-web-scraping-legal/).

### Other ecommerce scrapers / Related Actors

| Actor | Use case |
|-------|----------|
| [1688 Products Wholesale Scraper - Full Supplier Details](https://apify.com/parsebird/1688-wholesale-scraper) | Wholesale product, supplier, MOQ, SKU, and shipping research |
| [JD.com Jingdong All-in-one Scraper - Prices & Reviews](https://apify.com/parsebird/jd-com-scraper) | JD.com product prices, shops, stock, variants, ratings, and reviews |
| [eBay Sold Listings Scraper](https://apify.com/parsebird/ebay-sold-listings-scraper) | Historical sold listing prices for resale and product research |
| [Shopify Store Leads Scraper](https://apify.com/parsebird/shopify-store-leads-scraper) | Shopify store lead and ecommerce market discovery |

### FAQ

**Can I scrape Trendyol product URLs directly?**
Yes. Add Trendyol product URLs to `startUrls`. Direct product URL records are collected from the product page even when `enrich_data` is false.

**Can I scrape Trendyol reviews and Q\&A?**
Yes. Enable `getReviews` or `getQna`. Reviews and Q\&A are saved as separate records linked to the parent product.

**Can I schedule Trendyol monitoring?**
Yes. Use [Apify schedules](https://docs.apify.com/platform/schedules) to run the same input daily, weekly, or on a custom cron interval.

**Can I use this as a Trendyol scraper API?**
Yes. Run the actor through the Apify API, then read the dataset through the API or client libraries.

**Why are some fields missing?**
Trendyol fields vary by product, seller, availability, page type, and source response. The actor only returns source-backed values and omits fields that are not exposed for a given item.

**How do I export Trendyol data?**
Open the dataset after a run and download JSON, CSV, Excel, XML, or HTML. You can also connect runs to integrations, webhooks, or downstream systems.

**Where can I report issues?**
Open the Issues tab on the actor page and include the input, run ID, and a Trendyol URL or product ID when possible.

# Actor input Schema

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

Add Trendyol search, category, collection, merchant store, merchant all-products, or product URLs.

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

Add product-focused Trendyol search terms such as a brand, model, or category.

## `limit` (type: `integer`):

Maximum product listings to save for each query or listing URL. Keep test runs small before scaling.

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

Optional minimum product price in TRY for query-based searches.

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

Optional maximum product price in TRY for query-based searches.

## `minimumStarRating` (type: `string`):

Keep query results at or above the selected customer rating.

## `lowestPriceDays` (type: `array`):

Keep products currently at their lowest tracked price within the selected timeframe when Trendyol exposes that filter.

## `influencerPreferredOnly` (type: `boolean`):

Include only products labeled as Influencer Preferred.

## `couponsOnly` (type: `boolean`):

Include only products that currently show coupon availability.

## `specialOffersOnly` (type: `boolean`):

Include only products that currently show a special offer.

## `newlyReleasedOnly` (type: `boolean`):

Include only newly released products.

## `enrich_data` (type: `boolean`):

Visit each discovered product page and merge richer details into product records. Direct product URLs are always collected from product pages.

## `getReviews` (type: `boolean`):

Collect customer reviews as separate dataset records linked to the parent product.

## `maxReviews` (type: `integer`):

Optional maximum number of reviews to save per product.

## `getQna` (type: `boolean`):

Collect answered product Q\&A entries as separate dataset records linked to the parent product.

## `maxQna` (type: `integer`):

Optional maximum number of answered Q\&A items to save per product.

## Actor input object example

```json
{
  "startUrls": [],
  "queries": [
    "playstation 5"
  ],
  "limit": 10,
  "minimumStarRating": "",
  "lowestPriceDays": [],
  "influencerPreferredOnly": false,
  "couponsOnly": false,
  "specialOffersOnly": false,
  "newlyReleasedOnly": false,
  "enrich_data": false,
  "getReviews": false,
  "getQna": false
}
```

# Actor output Schema

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

No description

# 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 = {
    "startUrls": [],
    "queries": [
        "playstation 5"
    ],
    "limit": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/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 = {
    "startUrls": [],
    "queries": ["playstation 5"],
    "limit": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/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 '{
  "startUrls": [],
  "queries": [
    "playstation 5"
  ],
  "limit": 10
}' |
apify call parsebird/trendyol-product-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/QrJHf9VMn075ZfOsw/builds/PcUNefolAQnXmUBxX/openapi.json
