Trendyol Scraper
Pricing
from $1.00 / 1,000 product scrapeds
Trendyol Scraper
[💰 $1.0 / 1K] Extract products and customer reviews from Trendyol — Turkey's largest marketplace. Search by keyword, paste category or seller pages, or supply direct product URLs. Reviews are opt-in and emitted as separate dataset rows.
Pricing
from $1.00 / 1,000 product scrapeds
Rating
0.0
(0)
Developer
SolidCode
Maintained by CommunityActor stats
0
Bookmarked
29
Total users
5
Monthly active users
5 days ago
Last modified
Categories
Share
Pull products and customer reviews from Trendyol — Turkey's largest e-commerce marketplace — at scale, with brand, seller, pricing, discount, rating, favorite count, breadcrumb category path, variants, badges, customer images, verified-purchase flags, and the name of the store behind every single listing. Built for Turkish e-commerce sellers, cross-border dropshippers, brand managers, and market researchers who need a clean Trendyol catalog and review feed without wrestling with Turkish SPA pagination one tab at a time.
Why This Scraper?
- Products and reviews in one run — opt into reviews per product (cap or unlimited) without spawning a second actor. One run, one dataset, two
recordTyperows:productandreview. - Three Trendyol storefronts in one input — Turkey (TL), Azerbaijan (AZN), and the International store (USD/EUR). Flip a single dropdown to switch — currency, language, and
/en/path prefixes are handled for you. - Seven sort orders that match Trendyol's own UI — Best match, Newest, Price low-to-high, Price high-to-low, Best sellers, Most favorited, Most rated.
- Six purpose-built filters — minimum star rating (3 / 4 / 4.5+), min and max price in the storefront's currency, free shipping, Trendyol's Hızlı Teslimat fast-delivery badge, and discounted-only.
- Mix any URL type in one list — search result pages (
/sr?q=...), category pages (/<slug>-x-c<id>), seller / merchant pages (/magaza/...-m-<id>), and direct product URLs in either form Trendyol hands out, the full/<brand>/<slug>-p-<id>link or the short/p/<id>one. The actor auto-detects the URL shape. - Full Turkish UTF-8 preserved —
ı,ş,ğ,ç,ö,üin product names, category breadcrumbs, and review text are never ASCII-folded. - Split per-result pricing — $1.00 per 1,000 products plus $0.80 per 1,000 reviews. Reviews are off by default; turn them on only when you need them. No compute or platform-bandwidth surprises.
- Per-source caps, not a single global limit —
maxProductsPerSourcedefaults to 100, so a 10-URL run is bounded at 1,000 rows, never 50,000. - Size-level variant roll-ups and full category breadcrumbs — every direct-product-URL row for a product sold in sizes carries a
variants[]array with the size name (Bedenon apparel,Boyut/Ebaton home textiles), the value, and that size's own price, stock flag and barcode, plus avariantCounttotal and acategoryPathresolved all the way up to the storefront root. Made-to-measure lines such as curtains publish hundreds of width x height permutations, so the array carries the first 100 andvariantCountstill reports every one. - Every row names its seller, not just a numeric id — search, category and
/magaza/rows all resolvesellerIdto the store's display name, so you can group a category by marketplace seller without a second lookup.
Use Cases
Price & Discount Monitoring
- Track competitor prices, strike-through
originalPrice, anddiscountPercentacross a category - Watch a seller's full catalog (
/magaza/...) for repricing events - Compare the same product across Turkey, Azerbaijan, and the International storefront
Market & Trend Research
- Map Turkish consumer demand by category — phones, beauty, fashion, home goods
- Rank top brands and top sellers in any category using
rating,reviewCount, andfavoriteCount - Detect emerging best-sellers via the Best sellers / Most favorited / Most rated sort orders
Cross-Border Sourcing & Dropshipping
- Build a product feed for resale on Etsy, eBay, Amazon, or Shopify
- Pull product images, full category breadcrumbs, and brand names ready for catalog import
- Filter for
freeShippingOnlyto find sellers already absorbing the shipping cost
Review Sentiment & Product Quality Tracking
- Pull up to about 5,000 reviews from a single flagship product with rating, text, verified-purchase flag, helpful count, customer images, and the variant the reviewer actually bought
- Spot quality issues by mining 1-star reviews across a brand's catalog
- Quantify trust signals —
Trendyol Elitereviewers and verified-purchase ratios
Brand & Seller Outreach
- Build named seller catalogs from
/magaza/pages — every row carries the store name and id - Identify high-volume Trendyol-only brands for direct partnership
- Trace 1-star reviews back to the exact store that fulfilled the order via
sellerNameon review rows
Getting Started
Simple keyword search
The cheapest path — products only, no reviews:
{"searchQueries": ["erkek spor ayakkabı"],"maxProductsPerSource": 100}
Products plus reviews with a cap
Enrich each product with up to 50 reviews:
{"searchQueries": ["kahve makinesi", "iPhone 15"],"maxProductsPerSource": 50,"includeReviews": true,"maxReviewsPerProduct": 50}
Direct product URLs with a tight rating filter
Paste any Trendyol product URL and add minimum rating and a price band:
{"startUrls": ["https://www.trendyol.com/apple/iphone-15-128-gb-p-755253562","https://www.trendyol.com/samsung/galaxy-s24-256-gb-p-829145673"],"minRating": "4.5","minPrice": 30000,"maxPrice": 80000,"includeReviews": true,"maxReviewsPerProduct": 100}
Category sweep on the International storefront
Sort by best sellers, switch to the International store, capture EUR prices:
{"startUrls": ["https://www.trendyol.com/en/sr?q=coffee+maker"],"sort": "best_seller","country": "international","discountedOnly": true,"maxProductsPerSource": 200}
Input Reference
Sources
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | string[] | ["erkek spor ayakkabı"] | Turkish or English search terms. Each keyword runs as its own search. Leave empty if you only use URLs below. |
startUrls | string[] | [] | Trendyol URLs to scrape. Mix search pages, category pages, seller pages, and direct product URLs (full /<brand>/<slug>-p-<id> or short /p/<id>) in one list — the URL shape is auto-detected. |
Limits
| Parameter | Type | Default | Description |
|---|---|---|---|
maxProductsPerSource | integer | 100 | Maximum product rows per search keyword, category URL, or seller URL. Direct product URLs always return exactly one product and ignore this cap. Set to 0 for unlimited. A source then runs to our own safety limit, which in live testing produced between about 2,400 and 4,700 products depending on sort order and how often Trendyol repeats products between result pages. Repeats are removed and never billed twice. |
includeReviews | boolean | false | When on, fetch customer reviews for every product returned and emit them as separate recordType: "review" rows. Off by default — reviews are billed at a separate per-row rate. |
maxReviewsPerProduct | integer | 50 | Maximum review rows per product. Ignored when includeReviews is off. Set to 0 to take everything Trendyol serves, which tops out around 5,000 reviews on any one product no matter how many the product page counts. |
Sort & filter
| Parameter | Type | Default | Description |
|---|---|---|---|
sort | select | Best match (default) | Best match (default), Newest first, Price: low to high, Price: high to low, Best sellers, Most favorited, or Most rated. Ignored on direct product URLs. |
minPrice | integer | (none) | Only include products priced at or above this value, in the storefront's currency. |
maxPrice | integer | (none) | Only include products priced at or below this value, in the storefront's currency. |
minRating | select | Any rating | Any rating, 3 stars and up, 4 stars and up, or 4.5 stars and up. |
freeShippingOnly | boolean | false | Only include products eligible for free shipping. |
fastDeliveryOnly | boolean | false | Only include products tagged with Trendyol's fast-delivery / same-day badge. Turkey storefront only; switched off automatically on the International and Azerbaijan storefronts, which do not carry the badge. |
discountedOnly | boolean | false | Only include products currently on sale (showing a strike-through original price). |
Localization
| Parameter | Type | Default | Description |
|---|---|---|---|
country | select | Turkey (trendyol.com — TL) | Storefront to target. Turkey (trendyol.com — TL), Azerbaijan (trendyol.az — AZN), or International (trendyol.com/en — USD/EUR). Determines currency, language, and which catalog is searched. |
Output
Every row carries a recordType field — product or review — so you can filter or split the dataset cleanly downstream.
Product (recordType: "product")
{"recordType": "product","productId": "755253562","productUrl": "https://www.trendyol.com/apple/iphone-15-128-gb-p-755253562","productName": "Apple iPhone 15 128 GB (Apple Türkiye Garantili)","brandName": "Apple","brandId": 110197,"sellerName": "Apple Authorized Reseller","sellerId": "968413","price": 49999.0,"originalPrice": 59999.0,"discountPercent": 17,"currency": "TRY","rating": 4.7,"reviewCount": 3113,"favoriteCount": 57000,"inStock": true,"imageUrl": "https://cdn.dsmcdn.com/ty1234/product/media/images/iphone-15.jpg","images": ["https://cdn.dsmcdn.com/ty1234/product/media/images/iphone-15.jpg"],"categoryPath": ["Elektronik", "Telefon", "Cep Telefonu"],"variants": [],"variantCount": 0,"productCode": "MTP63TU/A","badges": ["FastDelivery", "FreeShipping"],"sourceUrl": "https://www.trendyol.com/sr?q=iPhone+15","scrapedAt": "2026-05-16T10:30:00Z"}
Core fields
| Field | Type | Description |
|---|---|---|
recordType | string | Always "product" |
productId | string | Trendyol's internal product id (extracted from URL -p-<id>) |
productUrl | string | Canonical product detail URL |
productName | string | Full product title |
productCode | string | Merchant SKU or model code when shown (direct-product-URL rows only) |
inStock | boolean | At least one variant is buyable |
imageUrl | string | Primary product image (CDN URL) |
images | string[] | All product image URLs |
categoryPath | string[] | Breadcrumb e.g. ["Erkek", "Ayakkabı", "Spor Ayakkabı"] |
badges | string[] | Visible badges (e.g., ["FastDelivery", "FreeShipping", "Discounted"]) |
variants | object[] | The buyable variants of a direct-product-URL row, e.g. { "attributeName": "Beden", "attributeValue": "42", "price": 999.9, "inStock": true, "sku": "8682693688936" }. Trendyol varies apparel and footwear by Beden (size) and home textiles by Boyut/Ebat (dimensions), each with its own price, stock flag and barcode. Capped at the first 100 entries so one made-to-measure curtain cannot dominate your dataset; compare against variantCount to see whether a row was capped. One-size items such as phones, cosmetics and sofas have nothing to choose, so the array is empty — as in the example above. |
variantCount | integer | How many buyable variants the product has in total, before the 100-entry cap on variants[] — 932 on a made-to-measure curtain, 28 on a running shoe, 0 on a one-size item. null on search, category and seller rows, where Trendyol's listing feed carries no per-variant price, stock or barcode to roll up. |
sourceUrl | string | The search / category / seller URL this row was discovered from |
scrapedAt | string | ISO 8601 timestamp of extraction |
Brand & seller
| Field | Type | Description |
|---|---|---|
brandName | string | Brand name (e.g. "Nike", "Apple") |
brandId | integer | Trendyol brand id when available |
sellerName | string | Merchant / store name — resolved on search, category, /magaza/ and direct-product rows alike |
sellerId | string | Merchant id |
Price & popularity
| Field | Type | Description |
|---|---|---|
price | number | Current sale price |
originalPrice | number | Strike-through price when discounted |
discountPercent | integer | 0–100 percent off |
currency | string | TRY, AZN, USD, or EUR depending on storefront |
rating | number | Average customer rating 0.0–5.0. Along with reviewCount and favoriteCount this is empty on almost every Newest first row: a listing published today has not collected shopper activity yet. Sort by Best sellers or Most favorited when you need these three populated |
reviewCount | integer | Total reviews on the product |
favoriteCount | integer | How many shoppers have favorited the product (from Trendyol's social-proof bar; populated for listing-sourced rows). Empty on Newest first runs — see the note under rating |
Direct product URL extras
These fields are only present on rows extracted from a direct product URL (startUrls containing ...-p-<id> or /p/<id>):
| Field | Type | Description |
|---|---|---|
slugDrift | boolean | true when Trendyol returned a different product id than the one in the input URL (the original may have been delisted). Use this to filter unexpected rows. |
requestedProductId | string | The product id that was in your input URL — for joining against productId when slug drift occurs. |
Review (recordType: "review")
Emitted only when includeReviews: true. Capped at maxReviewsPerProduct per product.
{"recordType": "review","reviewId": "412598834","productId": "755253562","productUrl": "https://www.trendyol.com/apple/iphone-15-128-gb-p-755253562","productName": "Apple iPhone 15 128 GB (Apple Türkiye Garantili)","rating": 5,"reviewText": "Ürün hızlı geldi, kutusu sağlamdı. Renk fotoğraftaki gibi.","reviewDate": "2026-04-22","reviewerName": "M*** S.","reviewerLevel": null,"isVerifiedPurchase": true,"helpfulCount": 14,"sellerName": "Apple Authorized Reseller","sellerId": "968413","images": ["https://cdn.dsmcdn.com/ty1234/review/images/iphone-15-buyer-1.jpg"],"variantInfo": null,"scrapedAt": "2026-05-16T10:30:05Z"}
| Field | Type | Description |
|---|---|---|
recordType | string | Always "review" |
reviewId | string | Trendyol's review id |
productId | string | Parent product id (denormalized for joins) |
productUrl | string | Parent product URL |
productName | string | Parent product name (denormalized) |
rating | integer | 1–5 stars for this review |
reviewText | string | Customer comment (may be empty for star-only reviews) |
reviewDate | string | ISO date the review was posted |
reviewerName | string | Display name (often initials, e.g. "M*** S.") |
reviewerLevel | string | Set to Trendyol Elite or Influencer for the small minority of reviewers Trendyol badges that way; null for everyone else |
isVerifiedPurchase | boolean | True when Trendyol marks the reviewer as a verified buyer |
helpfulCount | integer | Helpful / like count on the review |
sellerName | string | Store that sold the reviewed item |
sellerId | string | Merchant id of that store |
images | string[] | Customer-uploaded image URLs (common on apparel and electronics) |
variantInfo | string | Which variant the reviewer bought, e.g. "Beden: 42, Renk: Siyah". Populated on products sold in sizes or colours such as apparel and footwear; null on one-size items like phones and accessories. |
scrapedAt | string | ISO 8601 timestamp of extraction |
Tips for Best Results
- Start small. Set
maxProductsPerSourceto 20–50 on your first run to confirm the data matches your needs, then scale up. - Use the most specific URL you have. Paste the exact Trendyol category URL from the site breadcrumb (
/<slug>-x-c<id>) instead of a broad keyword — you'll get a tighter, more consistent catalog sweep. - Reviews are the cost driver. Leave
includeReviewsoff when you're only price-tracking. Turn it on with a tightmaxReviewsPerProduct(e.g. 20) when you need sentiment data without paying for every comment on a 3,000-review flagship. - Storefront determines currency. The Turkey store returns TRY, Azerbaijan returns AZN, and the International store returns USD or EUR depending on geo — pick the storefront that matches your analytics. The
currencyfield is always populated so you never have to guess. - Sort matters for limited runs. With
maxProductsPerSource: 50,sort: "best_seller"gives you the 50 most-bought items, whilesort: "most_rated"gives you the 50 with the most review activity — very different lists. - "Newest first" trades social proof for freshness. A listing published today has no ratings, reviews or favorites yet, so those three columns come back empty on roughly 99 out of 100 new-arrival rows. That is exactly what makes the sort useful for spotting fresh inventory before anyone else — just don't reach for it when you need popularity signals.
- Tight filters need a higher cap. Filters like
minRating: "4.5"plusdiscountedOnly: trueare applied to each result page after fetch — Trendyol may need to scan several pages before your cap fills. RaisemaxProductsPerSourceby 2–3× when stacking strict filters. - Mix every source type in one run. Two search keywords, three category URLs, and ten direct product URLs can all live in the same input — one billed start, one combined dataset.
- Direct product URLs can drift. Trendyol occasionally reassigns an old product id to a different SKU. When that happens you'll see
slugDrift: trueandrequestedProductIdon the row plus a one-line note in the final status message — filter onslugDriftto quarantine those rows.
Pricing
$1.00 per 1,000 products plus $0.80 per 1,000 reviews. Reviews are opt-in via includeReviews and capped via maxReviewsPerProduct — you control review cost.
The review columns below use the review counts our own test runs actually produced at two different caps: with maxReviewsPerProduct: 20 the average came out at 13.5 reviews per product, and with maxReviewsPerProduct: 200 it came out at 138. Turkish marketplace products carry far more reviews than most catalogs, so budget from these figures rather than from a rule of thumb.
| Products | Reviews off | maxReviewsPerProduct: 20 (13.5/product) | maxReviewsPerProduct: 200 (138/product) |
|---|---|---|---|
| 100 | $0.10 | $1.18 | $11.14 |
| 1,000 | $1.00 | $11.80 | $111.40 |
| 10,000 | $10.00 | $118.00 | $1,114.00 |
| 100,000 | $100.00 | $1,180.00 | $11,140.00 |
A "product" is any row with recordType: "product"; a "review" is any row with recordType: "review". Leave includeReviews off and you only pay the product rate — 1,000 products is 1,000 × $0.001 = $1.00. On top of that each run carries a $0.00005 start charge per gigabyte of memory, which is rounding error on anything but a one-row run. Platform fees (compute, storage) are billed by Apify, not by this actor.
Integrations
Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:
- Zapier / Make / n8n — Workflow automation
- Google Sheets — Direct spreadsheet export
- Slack / Email — Notifications on new results
- Webhooks — Trigger custom APIs on run completion
- Apify API — Full programmatic access
Legal & Ethical Use
This actor is designed for legitimate market research, competitive intelligence, lead generation, and catalog enrichment. Users are responsible for complying with applicable laws and Trendyol's terms of service, including making reasonable-rate requests and respecting any content usage rules for product images, descriptions, and customer reviews. Do not use extracted data for spam, harassment, defamation, or any illegal purpose. Be especially mindful when handling customer review content — treat reviewer names and uploaded images as personal data.