# Trendyol Scraper: Products, Prices, Reviews (`automation_craft/trendyol-scraper`) Actor

Scrape Trendyol searches, categories, brands, seller shops or product links in Turkey and 34 more storefronts, no login. Get price, crossed out price, discount, rating, favourites, seller and badges, plus details, reviews, answered questions and sellers. JSON, CSV or Excel; pay per row.

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

## Pricing

from $0.48 / 1,000 products

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

### Trendyol Scraper: Products, Prices, Reviews

**Trendyol scraper** for products, prices, sellers, reviews and answered questions: give search words, a category, brand or shop link, product ids or seller ids, and get every product as a row with its price, crossed out price, discount, rating, favourites, seller, badges and sponsored flag, in Turkey or 34 more Trendyol storefronts in their own currency. No login, no cookies, no browser.

Add-ons, each its own row type and its own price: **Product details** (barcode, variants with stock, attributes, description, every seller's offer, the review summary with Trendyol's AI summary, the delivery estimate), **reviews** with star, photo and date filters, **answered questions** of every seller, and **seller** rows. A monitor keeps only new products, or reports price and stock changes and removed products, on a schedule.

#### Who uses it

- Sellers and brands on Trendyol who watch competing sellers' prices, campaigns, coupons and who wins the offer (Trendyol shows no seller another seller's data).
- Agencies and price intelligence tools that track categories and brands every day.
- Teams that analyse reviews and questions: what buyers praise, what they return, which size runs small.
- Cross border sellers comparing the Turkish, Gulf and European storefronts.

### Quick start

1. Type search words in **Search words** (for example `laptop` or `spor ayakkabı`), or paste a Trendyol link in **Trendyol links**: a search page, a category or brand page, a seller shop or a product page.
2. Set **Max products** (20 for a first look).
3. Optional: pick a **Storefront**, an **Order**, filters, and the add-ons you need (Product details, Reviews, Answered questions, Seller rows).
4. Start the run. Rows appear in the Output tab as they are read; download them as JSON, CSV or Excel, or read them through the Apify API.

### What you get

One row per product and storefront, delivered once per run however often it appears (a sponsored product shown twice is one row, flagged `sponsored`). Sponsored products come with searches and seller shops (filtered by brand, price, rating, free shipping, fast delivery or coupon, each checked on the row); on category and brand pages, the flash sales page and lists filtered by category, gender, size, badge or another attribute, Trendyol also places sponsored products of other categories, so there they are skipped, free.

| Field | What it is | Filled (2,126 distinct Turkish search cards, 2026-10-17) |
|---|---|---|
| `productId`, `url`, `name`, `brand`, `categoryName` | Trendyol's product id, link, name, brand and category | 100 percent |
| `price` | what a buyer pays now, basket promotions applied | 100 percent |
| `originalPrice`, `discountPercent` | the price Trendyol shows crossed out, and the discount | 34 percent (only products with a crossed out price) |
| `sellingPrice` | the price before basket promotions | 100 percent |
| `currency`, `storefront` | the storefront's currency (TRY in Turkey) and its code | 100 percent |
| `rating`, `ratingCount` | average stars and how many ratings | 62 percent (products with ratings) |
| `favoriteCount`, `favoriteCountRounded` | how many shoppers added it to favourites, as Trendyol shows it (from 1,000 on rounded, "17K" is 17,000, flagged `favoriteCountRounded`) | 49 percent |
| `sellerId` | the seller whose offer the row shows | 100 percent |
| `images`, `imageUrl` | product images | 100 percent |
| `freeShipping`, `fastDelivery`, `nextDayDelivery`, `sameDayShipping`, `hasCoupon`, `soldOut`, `officialSeller` | Trendyol's own flags on the card | 100 percent |
| `promotions`, `priceLabels`, `badges`, `rankingBadge`, `dealBadge` | promotions, campaign and ranking badges (for example "most viewed number 2") | 33 percent have a promotion |
| `cardAttributes` | the key attributes Trendyol puts on the card | 61 percent |
| `sponsored`, `position`, `page` | a paid placement, and where the product stood | 100 percent |

**Product details** (`details`, with `includeDetails`; 62 products of 8 kinds): barcode, every variant with its stock flag and price, attributes, description (5 of 8 products have one), the full category path, the winning seller with its official company name, score and city, every other seller with its price (22 of 62 products had more than one seller), promotions with end dates, the campaign, coupon price, VAT rate, installments, refundable, size chart (fashion), category rankings, the "lowest price in N days" window with its daily prices (5 of 62), social proof (favourites, views), the review summary (stars breakdown, topics with positive share, Trendyol's AI summary) and the delivery estimate. Trendyol serves no stock quantity, only a stock flag per variant. `detailsStatus` says how the details went: `read`, `read_in_part` (the parts Trendyol did not answer are named in `details.partsNotRead`), or a reason they are missing, in which case Product details is not charged.

**Reviews** (`type: "review"`): stars, text, date written and updated, the reviewer as Trendyol shows the name (masked as `A** Y**`), elite and influencer flags, the seller, size and variant bought, photos, likes and language.

**Answered questions** (`type: "question"`): the question, the seller's answer, the seller, the date asked and how fast it was answered, for every seller of the product.

**Sellers** (`type: "seller"`): seller id, shop name, official company name (as every shopper sees it on the shop page; for a sole trader it is the owner's name), seller score, product count, followers, location, time on Trendyol, average shipping and answer times, average product rating and the shop link (`partsNotRead` names a follower count Trendyol did not answer). With Product details on, every seller of a product gets a row, not only the winner.

Every run also writes free rows: one `coverage` row per search, link or shop (Trendyol's total, pages read, rows delivered, what was skipped and why the walk stopped), `status` rows for anything not delivered (an id Trendyol does not have, a filter it does not offer, a search it answered with other words), and a `summary` row with every counter and what was charged. The dataset is never empty.

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

You pay per row delivered, plus a small fee per run. Prices per 1,000 rows:

| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
| Product (each product row) | $0.67 | $0.61 | $0.55 | $0.475 |
| Product details (each product row with its details) | $0.65 | $0.55 | $0.45 | $0.40 |
| Review | $0.44 | $0.40 | $0.37 | $0.35 |
| Answered question | $0.44 | $0.40 | $0.37 | $0.35 |
| Seller | $1.50 | $1.35 | $1.20 | $1.00 |

Platinum and Diamond plans pay the Gold price. Each run also pays an **Actor start fee of $0.0045** (one per run at the default 256 MB memory; it has no plan discount). So 100 products on the Gold plan cost $0.0045 + $0.0475 = about $0.052, and 1,000 products with their details about $0.88. The Store pricing card shows these same prices per 1,000 events: "$0.475 / 1,000" on the Product row means one product costs 0.0475 cents.

Free of charge: status, coverage and summary rows, products already delivered in the run, sponsored repeats, products a filter leaves out, ids Trendyol does not have, products a monitor already knows (new products mode), and anything not read because the run stopped. You can set a maximum cost per run in the run options; the Actor stops cleanly there and trims add-ons first.

### Input

- **Search words**, **Trendyol links**, **Product ids**, **Seller ids**: any mix. A link carries its own filters and order (`/sr?q=laptop&wb=102323&prc=10000-30000&sst=PRICE_BY_DESC`). The flash sales page (`trendyol.com/flas-indirimler`) is read as the day's flash sales. An input with none of the four reads a sample: the first 10 products of the search "laptop" (or Max products if set), billed as products.
- **Storefronts**: one or several in one run, each in its own currency and language. Search words, product ids and seller ids are read in every storefront listed; a link is read in the storefront it belongs to; Max products counts them all together, and a price you set is in each storefront's own currency. Turkey (default), Azerbaijan, Germany, the United Arab Emirates, Saudi Arabia, Qatar, Kuwait, Oman, Bahrain, and the European storefronts (Austria, Belgium, Bulgaria, Croatia, Czechia, Denmark, Estonia, Finland, France, Greece, Hungary, Italy, Latvia, Lithuania, Luxembourg, the Netherlands, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden, Serbia, Ukraine, Moldova).
- **Order**: relevance (with sponsored products), price low to high or high to low, newest, best selling, most favourited, most reviewed.
- **Filters**: lowest and highest price, lowest and highest rating, brands, categories, gender, sizes, any other filter Trendyol lists ("İşlemci Tipi: AMD Ryzen 5"), seller types, campaign badges, lowest price in 10, 14 or 30 days, and 18 switches (free shipping, fast delivery, shipped today, coupon, flash sale, new products, influencer picks, campaign products, take more pay less, bulk sales, corporate invoice, reviews with photos, video, sellers rated above 9, Trendyol Plus, gift box, buy together, deals); discounted only, in stock only, sponsored products on or off. Each filter value is matched against the list Trendyol itself offers for that search, and a filter Trendyol does not apply delivers nothing (a free status row), never a wider search.
- **Limits**: Max products (default 100), Max products per search, Max pages per search, and **Split large searches**: Trendyol serves at most 4,968 products of one search, filter set and order; with this on, a larger list is read in price bands, every product once.
- **Reviews**: Max reviews per product (default 100; past Trendyol's 5,050 per order the run also reads the other date order and each star), order (most relevant, newest, oldest, lowest or highest rated), stars, photos only, and a date window (from, until, or the last N days; UTC days; with no order picked, a window read newest first, or oldest first when it has only an end).
- **Monitor**: a Monitor name keeps a memory of this Actor in your account. New products only: a product delivered before is skipped, free. With changes: every product comes with `changeType` (new, changed, unchanged), the fields that changed, the previous price and the change; turn Include unchanged products off to get only new and changed ones (unchanged ones are then free, so checking them is unpaid and a run in which little changed stops after a bounded amount of it: about 120 product ids, about 5 products with Product details, more on searches; a free row names what was not checked; left out products count toward Max products); Fields that count as a change picks among price, crossed out price, sold out and the winning seller (all four if left out); a product listed by the last complete walk and missing now gets a free `product_removed` row. A monitor name is per Actor; a monitor reads at most its Max pages per search, and a run that finds nothing new stops after a bounded amount of unpaid reading.
- **Skip rows of a dataset**: the id of an earlier run's dataset; every product, review, question and seller already in it is skipped, free, and the reviews, questions or seller of its products that it does not hold yet are read on (to continue a run that stopped).

Each input ends with a free `coverage` row: `complete` is true when the input was read as far as you asked (to the end of Trendyol's list, or to your Max products per search or Max pages per search) and false when something cut it (a stop, Trendyol's cap, a failed page); `stoppedBy` and `message` say which.

- **Include personal data** (off by default): adds the seller's legal registration Trendyol shows (tax number, tax office, KEP e-mail address, street address, registration number) and reviewers' and askers' full names where Trendyol shows them unmasked. You are responsible for a lawful use of this data, GDPR and the Turkish KVKK included.
- **Proxy**: left out, the Actor reads Trendyol through Apify datacenter sessions, which Trendyol answers; you can give your own proxy links or turn the proxy off.

Example input:

```json
{
  "searchQueries": ["laptop"],
  "brands": ["Lenovo"],
  "minPrice": 10000,
  "maxPrice": 30000,
  "sort": "price_high_to_low",
  "maxItems": 50,
  "includeDetails": true,
  "includeReviews": true,
  "maxReviewsPerProduct": 20,
  "reviewSort": "lowest_rated"
}
```

### FAQ

#### Does Trendyol have an API for product data?

Trendyol's own API is for sellers in its partner program and shows a seller only its own products and orders, with the seller's credentials. This Actor reads the public catalogue any shopper sees, every seller's products included, and gives it to you as rows through the Apify API, a schedule or a download.

#### How do I track Trendyol prices?

Put the searches, categories, shops or product ids to watch in the input, set a Monitor name with the mode "Every product, with price and stock changes", and schedule the run daily. Each product then comes with `changeType`, its previous price and the change; a product that left the list gets a free `product_removed` row.

#### How do I scrape Trendyol reviews?

Turn on Reviews, set Max reviews per product, and pick an order, stars, photos only or a date window. To get only reviews, turn Product rows off: each review is then a row with its stars, text, date, seller and size bought, and you pay per review only.

#### How do I see my competitors' prices on Trendyol?

Search your category or paste a competing seller's shop link, and turn on Product details: each product row then lists every seller of that product with its price and score, and which seller wins the offer. Turn on Seller rows for each seller's score, followers, shipping and answer times.

#### Why does this Actor run with limited permissions?

It needs no access beyond its own storage: it reads Trendyol, writes your dataset, and keeps a monitor's memory in a key-value store it creates itself in your account. Limited permissions keep it that way.

### What this Actor does not do

- It does not log in, and reads no data behind a login (orders, a seller's own panel, unanswered questions).
- It delivers no stock quantity: Trendyol shows a stock flag per variant, not a quantity.
- It does not find e-mail addresses on sellers' own websites; Trendyol's own seller registration (the KEP address) comes with Include personal data.
- After a platform restart of a run, the other sellers of a product delivered with its details before the restart get no seller row (the winning seller does).
- It does not use Apify residential proxies: Trendyol answers datacenter sessions, and residential traffic would cost more than a details row earns.
- It does not decide what you may do with the data. Trendyol's terms of use restrict automated collection and the reuse of its content; you are responsible for using the data lawfully.

### Use it through the API

```bash
curl -X POST "https://api.apify.com/v2/acts/automation_craft~trendyol-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"searchQueries": ["kahve makinesi"], "maxItems": 50}'
```

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('automation_craft/trendyol-scraper').call({ startUrls: ['https://www.trendyol.com/laptop-x-c103108'], maxItems: 100 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.filter((x) => x.type === 'product').length);
```

```python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("automation_craft/trendyol-scraper").call(run_input={"productIds": ["1136094055"], "includeDetails": True})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["type"], item.get("name"), item.get("price"))
```

### Changelog

- 0.1: first release. Products from search words, category, brand, attribute and shop links, product and seller ids and the flash sales page, in 35 storefronts; Product details, reviews, answered questions and seller rows as add-ons; a monitor for new products or price and stock changes; skipping the rows of an earlier run.

### More data tools by Automation Craft

- [Amazon Product Scraper - Search, Best Sellers](https://apify.com/automation_craft/amazon-data-scraper)
- [Amazon Sponsored Products Scraper - Ads by Keyword](https://apify.com/automation_craft/amazon-sponsored-products-scraper)
- [Mercari US Scraper: Listings, Sold Prices](https://apify.com/automation_craft/mercari-us-scraper)
- [Facebook Marketplace Scraper with Sold Tracker](https://apify.com/automation_craft/facebook-marketplace-scraper)
- [ShopBack Scraper: Cashback, Gift Cards, Affiliates](https://apify.com/automation_craft/affiliate-network-detector)
- [Trustpilot Reviews Scraper: Coverage Per Company](https://apify.com/automation_craft/trustpilot-reviews-scraper)
- [G2 Reviews Scraper: Ratings, Pros and Cons](https://apify.com/automation_craft/g2-reviews-scraper)
- [Google Trends Scraper - Compare and Trending Now](https://apify.com/automation_craft/google-trends-scraper)
- [Meta Ads Library Scraper - Ad Library, All Filters](https://apify.com/automation_craft/meta-ads-library-scraper)

# Changelog

This Actor's version history is a separate document: https://apify.com/automation_craft/trendyol-scraper/changelog.md

# Actor input Schema

## `searchQueries` (type: `array`):

Words to search on Trendyol, one search per entry (laptop, spor ayakkabı, kahve makinesi). Each search delivers products in the storefront set below, up to Max products. A word Trendyol does not know and answers with another search delivers nothing (see Take rewritten searches). With no search, link, product id or seller id at all, the run reads a sample: the first 10 products of "laptop" (billed as products).

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

Links copied from Trendyol: a search page (https://www.trendyol.com/sr?q=laptop\&wb=102323), a category, brand or attribute page (https://www.trendyol.com/laptop-x-c103108), a seller shop (https://www.trendyol.com/magaza/ebebek-m-392) or a product page (https://www.trendyol.com/msi/cyborg-15-p-1136094055, with merchantId for one seller's offer). The filters and order Trendyol put in the link are read too. A link of another storefront needs that storefront set below. Through the API, give each link as a text (an object {"url": "..."} is read too).

## `productIds` (type: `array`):

Trendyol product ids: the number after -p- in a product link (1136094055). Each is read through the product's details; an id Trendyol does not have gets a free status row.

## `sellerIds` (type: `array`):

Seller (shop) ids: the number after -m- in a shop link (392 for https://www.trendyol.com/magaza/ebebek-m-392). Each delivers the products of that seller's shop, and with Seller rows on the seller itself.

## `storefronts` (type: `array`):

The Trendyol storefronts to read, each in its own currency and language (default Turkey). Search words, product ids and seller ids are read in every storefront listed; a link is read in the storefront it belongs to. Max products counts them all together; prices you set are in each storefront's own currency.

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

The most products this run delivers over every input together (left out: 100). Reviews, questions and sellers are capped by their own settings.

## `maxItemsPerSearch` (type: `integer`):

The most products one search, listing or shop delivers (left out: no cap per search, only Max products). Trendyol serves at most 4,968 products of one search, filter set and order; turn on Split large searches to go past that.

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

The most result pages (36 products each) read per search, listing or shop. Useful for a monitor that only watches the first pages.

## `splitLargeSearches` (type: `boolean`):

When a search, listing or shop lists more than 4,968 products (Trendyol's cap per search, filter set and order), read it in price bands, each under the cap, from the cheapest up; every product is delivered once.

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

The order of the results. Only Relevance shows sponsored products; each distinct product is delivered once, with its sponsored flag and position.

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

Only products at or above this price, in the storefront's currency (whole number), checked on the price the buyer pays.

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

Only products at or below this price, in the storefront's currency (whole number), checked on the price the buyer pays.

## `minRating` (type: `string`):

Only products rated at least this many stars (unrated products are left out).

## `maxRating` (type: `number`):

Only products whose shown average rating is at or below this (1 to 5), checked on every row; products without a rating are left out. Trendyol has no such filter, so pages of higher rated products are read and skipped free.

## `brands` (type: `array`):

Brand names or brand ids as Trendyol lists them for the search (Lenovo, Asus, 102323). A name Trendyol does not list there is left out with a note.

## `categories` (type: `array`):

Category names or ids as Trendyol lists them for the search (Laptop, 103108).

## `genders` (type: `array`):

Gender names or ids as Trendyol lists them (Kadın or 1 for women, Erkek or 2 for men, Çocuk or 3 for children, in Turkey).

## `sizes` (type: `array`):

Size names as Trendyol lists them for the search (S, M, 38, 42).

## `attributeFilters` (type: `array`):

Any other filter Trendyol lists for the search, written "filter name: value" with the names Trendyol shows ("İşlemci Tipi: AMD Ryzen 5", "Renk: Siyah"). The same filter name twice means either value.

## `sellerBadges` (type: `array`):

Seller types as Trendyol lists them (Onaylanmış Satıcı, Başarılı Satıcı, or their ids kurumsal_satici, basarili_satici).

## `campaignBadges` (type: `array`):

Campaign badges as Trendyol lists them (Süper Avantajlı Ürün, Çok Avantajlı Ürün, or their ids kirmizi_kampanya_urunu, turuncu_kampanya_urunu).

## `lowestPriceInDays` (type: `string`):

Only products Trendyol marks as at their lowest price of the last 10, 14 or 30 days.

## `onlyWith` (type: `array`):

Trendyol's own switches: free shipping, fast delivery, shipped today, coupon, flash sale, new products, influencer picks, campaign products, take more pay less, bulk sales, corporate invoice, reviews with photos, video, sellers rated above 9, Trendyol Plus, gift box, buy together, deals. Each must be one Trendyol offers for the search.

## `discountedOnly` (type: `boolean`):

Only products whose price is below the crossed out price Trendyol shows.

## `inStockOnly` (type: `boolean`):

Leave out products Trendyol marks as sold out.

## `includeSponsored` (type: `boolean`):

Deliver sponsored (paid) placements with their sponsored flag, on plain searches and seller shops. On category, brand and filtered lists Trendyol also places sponsored products of other categories, so there they are always skipped, free. Off: skipped everywhere, free. Each distinct product is delivered once either way.

## `allowRewrittenSearches` (type: `boolean`):

Trendyol answers a word it does not know with another search of its own. Off (default): such a search delivers nothing and gets a free status row. On: Trendyol's replacement is delivered.

## `productRows` (type: `boolean`):

Deliver a row (and a Product charge) for each product found. Turn off to get only the reviews, answered questions or sellers of the products found.

## `includeDetails` (type: `boolean`):

Read each delivered product's details and nest them in its row (charged as Product details): barcode, variants with stock, attributes, description, every seller's offer, the winning seller, promotions, the lowest price window, the review summary with Trendyol's AI summary and the delivery estimate.

## `includeReviews` (type: `boolean`):

Deliver the reviews of each product found, one row each (charged as Review).

## `maxReviewsPerProduct` (type: `integer`):

Left out: 100. Trendyol serves 5,050 reviews per order and star filter; above that, the run also reads the other date order and each star, every review once.

## `reviewSort` (type: `string`):

The order reviews are read in. Left out: most relevant; newest first when a start of the window is set (Reviews from, or the last N days); oldest first when only Reviews until is set.

## `reviewStars` (type: `array`):

Only reviews with these stars (Trendyol's own filter).

## `reviewsWithPhotosOnly` (type: `boolean`):

Only reviews that carry photos.

## `reviewsFromDate` (type: `string`):

Only reviews written on or after this day (YYYY-MM-DD, a UTC day). With the order left out, reviews are read newest first, which stops at the first older review.

## `reviewsToDate` (type: `string`):

Only reviews written on or before this day (YYYY-MM-DD, a UTC day). With only this date and the order left out, reviews are read oldest first, which stops at the first newer review.

## `reviewsMaxAgeDays` (type: `integer`):

Only reviews of the last N days before the run started (for a scheduled run; not together with Reviews from). With the order left out, reviews are read newest first.

## `includeQuestions` (type: `boolean`):

Deliver the answered questions of each product found, every seller's, one row each (charged as Answered question).

## `maxQuestionsPerProduct` (type: `integer`):

Left out: 100.

## `questionSort` (type: `string`):

The order answered questions are read in.

## `includeSellers` (type: `boolean`):

Deliver a row for each distinct seller of the products found (charged as Seller, once per seller per run): shop name, official company name, score, product count, followers, location, time on Trendyol, shipping and answer times.

## `includePersonalData` (type: `boolean`):

Off by default. On: adds the seller's legal registration that Trendyol shows on product pages (tax number, tax office, KEP e-mail address, street address, registration number) to product details and seller rows, and the reviewer's and asker's full name where Trendyol shows it unmasked. You are responsible for a lawful use of this data, GDPR and the Turkish KVKK included.

## `monitorName` (type: `string`):

A name for a scheduled watch ("laptops under 20000"). With it, the run remembers the products it delivered under this name (a memory of this Actor in your account).

## `monitorMode` (type: `string`):

New products only: a product delivered before under the monitor name is skipped, free. Every product, with changes: each product is delivered with changeType new, changed or unchanged and its previous price (unchanged ones can be left out, see Include unchanged products); a product listed by the last complete walk and missing now gets a free product_removed row.

## `includeUnchanged` (type: `boolean`):

With the changes monitor, deliver (and bill) every product read, unchanged ones included (default). Off: only new and changed products are delivered and unchanged ones are left out, free; since a left out product earns nothing, the checking it needs is unpaid work, so a run in which little changed stops after a bounded amount of it (about 120 product ids, about 5 products with Product details, more on searches) with a free row naming what was not checked. Left out products count toward Max products.

## `changeFields` (type: `array`):

With the changes monitor, the fields that make a product "changed": price (the price paid), originalPrice (the crossed out price), soldOut, seller (the winning seller). Left out: all four.

## `resetMonitor` (type: `boolean`):

Forget what the monitor name remembers before this run.

## `resumeFromDatasetId` (type: `string`):

The id of a dataset of your account (an earlier run of this Actor that stopped): every product, review, question and seller already in it is skipped, free.

## `maxConcurrency` (type: `integer`):

How many requests run at once (left out: 3).

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

Left out: the Actor reads Trendyol through Apify datacenter sessions, which Trendyol answers (this needs no setting). You can give your own proxy links (http://user:password@host:port), or turn the proxy off to use the run's own address. Apify proxy groups named here are not used: residential traffic would cost more than a details row earns.

## Actor input object example

```json
{
  "searchQueries": [
    "laptop"
  ],
  "storefronts": [
    "TR"
  ],
  "maxItems": 20,
  "includeSponsored": true,
  "productRows": true,
  "includePersonalData": false,
  "includeUnchanged": true
}
```

# Actor output Schema

## `items` (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 = {
    "searchQueries": [
        "laptop"
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation_craft/trendyol-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 = {
    "searchQueries": ["laptop"],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("automation_craft/trendyol-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 '{
  "searchQueries": [
    "laptop"
  ],
  "maxItems": 20
}' |
apify call automation_craft/trendyol-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automation_craft/trendyol-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/PBRa4PIgplAuX1PRw/builds/T7Mz9hWmJTgWvKCqC/openapi.json
