Trendyol $0.8π° URL | Keyword | Review Scraper
Pricing
from $0.80 / 1,000 results
Trendyol $0.8π° URL | Keyword | Review Scraper
From $0.8/1K. Pull structured product data, ratings, badges, seller info, full reviews, and Q&A from trendyol.com. Search by keyword with filters, use any URL (search, category, store, product), or run reviews-only mode on a product list.
Pricing
from $0.80 / 1,000 results
Rating
5.0
(1)
Developer
AbotAPI
Maintained by CommunityActor stats
0
Bookmarked
20
Total users
8
Monthly active users
an hour ago
Last modified
Categories
Share
Trendyol Product Scraper, Reviews & Q&A
Pull structured product data, ratings, badges, seller details, full review streams and Q&A pairs from Trendyol, Turkey's largest online marketplace. Search by keyword with rich filters, paste any Trendyol URL (search, category, store or product page), or run reviews-only mode against a list of products. ~50 normalized fields per product, low compute footprint (runs comfortably under 256 MB), and granular per-event pricing so reviews-only runs stay cheap.
Why this scraper
- Three modes in one actor: keyword search, paste-any-URL, or reviews-only (one row per review).
- ~30 lean fields by default; opt into
fetchDetails=truefor ~60 fields per product including the full attribute spec list, merchant info (name, official name, city, seller score, logo), category tree, web brand, favorite count, max installment, tax %, refundable flag, department / merchandising unit, English category translations, full promotion list, winner variant with barcode + stock + tag details. URL-mode product pages always emit the rich shape. - Filters that round-trip to the site: price range, minimum rating, sort (best match / best seller / newest / price asc / desc / most rated / most favourited), free shipping, fast delivery, official seller, coupons, in stock.
- Auto-detects all four Trendyol page shapes when you paste URLs: search results, category, seller store, single product.
- Reviews mode paginates the public review feed up to your configured cap, with rate, comment, reviewer name, language, mediaFiles, likes count and timestamps.
- Lower price than the leading alternative actor in the Apify Store: full product records are billed per result; reviews are billed per row at a fraction of the per-product rate.
Modes at a glance
| Mode | What it takes | What you get |
|---|---|---|
search | One or more keywords plus optional filters | Product records (one row each) |
url | Any Trendyol URL (search, category, store, or single product) | Product records (one row each) |
reviews | A list of product URLs or numeric content IDs | Review records (one row per review) |
Data you get (product record)
Sample shape, values are illustrative placeholders, not from a live listing.
| Field | Example | Notes |
|---|---|---|
kind | "product" | Always "product" for product rows |
contentId | 100000001 | Stable Trendyol product ID |
id | 100000001 | Listing variant ID (often equal to contentId) |
groupId | 100000000 | Product group ID; same group means same product, different colours |
url | "https://www.trendyol.com/sample-brand/sample-product-p-100000001" | Direct URL to the product page |
name | "Sample Product Title" | Listing title |
brand | "Sample Brand" | Display brand name |
brandId | 1000 | Numeric brand ID |
category.id | 1000 | Category ID |
category.name | "Sample Category" | Category display name |
price.current | 0.00 | Discounted / current price |
price.original | 0.00 | Strikethrough price (recommended retail) |
price.discountPercent | 0.0 | Computed discount percentage |
price.currency | "TL" | Storefront currency |
rating.score | 0.0 | Average rating (0 to 5) |
rating.totalRatings | 0 | Total rating count (only when fetchReviews=true) |
rating.totalComments | 0 | Total written reviews (only when fetchReviews=true) |
rating.breakdown | {"5": 0, "4": 0, "3": 0, "2": 0, "1": 0} | Rating bucket counts (only when fetchReviews=true) |
seller.id | 100000 | Merchant ID |
seller.name | "Sample Seller" | Merchant / store display name |
image | "https://cdn.dsmcdn.com/.../000000000-800x600.jpeg" | Primary thumbnail |
images | ["https://cdn.dsmcdn.com/.../000000000-800x600.jpeg"] | Image gallery |
stock | 0 | Reported stock count |
inStock | true | Convenience boolean derived from stock |
freeCargo | false | Free shipping flag |
fastDelivery | false | Fast-delivery badge |
officialSeller | false | Verified official seller badge |
sameDayShipping | false | Same-day shipping flag |
rushDelivery | false | Rush-delivery flag |
hasCoupon | false | Collectable coupon at checkout |
hasCodePromo | false | Promo-code applies |
hasFlashSale | false | Flash-sale badge |
isInfluencerPreferred | false | Influencer-preferred label |
dealBadge | null | Deal label string (when present) |
stripBadge | null | Strip badge label (when present) |
promotions | [] | Raw promotion objects |
stamps | [] | Raw stamp objects |
badges | [] | Raw simplified-badge objects |
socialProof | {} | Raw socialProof block from the SERP |
variantId | 0 | Variant ID (size / colour) |
variantValue | "" | Variant display value |
boutiqueId | 0 | Boutique ID |
campaignId | 0 | Campaign ID |
listingId | "" | Internal listing handle |
itemNumber | 0 | Item number |
reviews | [] | Embedded review array (only when fetchReviews=true) |
qna | [] | Q&A entries (only when fetchQna=true) |
scrapedAt | "2026-01-01T00:00:00.000Z" | ISO timestamp |
Extra fields when fetchDetails=true or URL is a product page
Sample shape, values are illustrative placeholders.
| Field | Example | Notes |
|---|---|---|
productCode | "AB-0000-X" | Internal SKU code |
productGroupId | 100000000 | Product group ID (variants share this) |
isGlobalBrand | false | Global-brand flag |
webBrand | { "id": 1000, "name": "Sample Brand", "url": "/sample-brand-x-b1000" } | Web brand block |
gender | { "id": 1, "name": "" } | Gender ID |
webCategory | { "id": 100000, "name": "Sample Category" } | Detail-level category |
webCategoryTree | [{ "id": 1, "name": "...", "level": 1 }] | 4-level category tree (for breadcrumbs) |
categoryTree | [{ "id": 1, "name": "...", "parent": 0 }] | Internal category graph |
categoryHierarchy | "Top/Sub/Leaf" | Path string |
categoryTopRankings | [{ "name": "bestSeller", "order": 1 }] | Category-level rankings |
businessUnit | { "id": 100000, "name": "Sample Unit", "isDigitalGoods": false } | Trendyol's internal merchandising group |
attributes | [{ "key": { "id": 0, "name": "Color" }, "value": { "id": 0, "name": "Red" }, "searchable": true, "isStarred": true }] | Full spec list (varies by category) |
favoriteCount | 0 | Site-wide favorite count |
tax | 0 | Tax rate (%) |
maxInstallment | 0 | Max installments allowed at checkout |
isRefundable | true | Refund eligibility |
uxLayout | "Sample Layout" | UI variant flag |
filterableLabelIds | ["00000000-0000-0000-0000-000000000000"] | Internal label UUIDs |
englishTranslation | { "productName": "...", "brandName": "...", "webBrandCategoryGenders": {} } | English category + brand mapping |
merchantDetails.id | 100000 | Merchant ID |
merchantDetails.name | "Sample Seller" | Display name |
merchantDetails.officialName | "Sample Seller LTD" | Registered legal name |
merchantDetails.taxNumber | "0000000000" | Tax / VKN identifier |
merchantDetails.registeredEmailAddress | "sample@hs01.kep.tr" | KEP (registered electronic mail) address |
merchantDetails.cityName | "Δ°stanbul" | Merchant city |
merchantDetails.countryName | "TΓRKΔ°YE" | Merchant country |
merchantDetails.sellerScore | { "value": 0.0, "color": "#000000" } | Trust score |
merchantDetails.corporateInvoiceApplicable | false | Corporate invoicing supported |
merchantDetails.logoUrl | "https://cdn.dsmcdn.com/seller-store/uploads/100000/sample.jpeg" | Merchant logo |
merchantDetails.codEligible | false | Cash-on-delivery enabled |
merchantDetails.stickerIds | [0, 0] | Sticker IDs |
merchantDetails.* | β | Plus any additional keys Trendyol exposes on the merchant object (forwarded verbatim) |
campaign | { "id": 0, "name": "Sample Campaign", "startDate": "2026-01-01T00:00:00", "endDate": "2026-12-31T00:00:00", "stockTypeId": 0 } | Campaign metadata |
detailPromotions | [{ "id": 0, "name": "Sample Promo", "discountType": 0, "promotionDiscountType": "Cargo", "isApplied": true, "promotionEndDate": "2026-12-31T00:00:00" }] | Per-promotion detail |
winnerVariant.itemNumber | 0 | Winning variant's item number |
winnerVariant.listingId | "00000000000000000000000000000000" | Internal listing handle |
winnerVariant.barcode | "0000000000000" | Product barcode |
winnerVariant.quantity | 0 | Stock quantity |
winnerVariant.maxSaleLimit | 0 | Max units per order |
winnerVariant.rushDeliveryDuration | 0 | Rush delivery hours |
winnerVariant.tagDetails | [{ "tag_id": 0, "tag": "...", "display_name": "...", "searchable": true }] | Promotional tags |
Data you get (review record, reviews mode)
Sample shape, values are illustrative placeholders, not from a live listing.
| Field | Example | Notes |
|---|---|---|
kind | "review" | Always "review" for review rows |
id | 400000000 | Review ID |
productContentId | 100000001 | Parent product content ID |
productUrl | "https://www.trendyol.com/.../sample-product-p-100000001" | Parent product URL |
rate | 0 | 1 to 5 |
comment | "Sample review text appears here." | Review body |
userFullName | "**** ****" | Reviewer (Trendyol redacts most names) |
isElite | false | Trendyol Elite badge |
isInfluencer | false | Influencer flag |
likesCount | 0 | Helpfulness votes |
language | "tr" | Review language |
createdAt | 1700000000 | Unix epoch (ms) |
mediaFiles | [] | Photos / videos attached |
scrapedAt | "2026-01-01T00:00:00.000Z" | ISO timestamp |
How to use
Search by keyword
{"mode": "search","queries": ["iphone 15", "macbook"],"minPrice": 5000,"maxPrice": 50000,"minRating": "4","sortBy": "PRICE_BY_ASC","freeCargoOnly": true,"maxListings": 50,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "TR"}}
Paste any Trendyol URL
{"mode": "url","urls": ["https://www.trendyol.com/sr?q=iphone+15&pi=1","https://www.trendyol.com/cep-telefonu-x-c103498","https://www.trendyol.com/magaza/sample-store-m-100000","https://www.trendyol.com/apple/sample-product-p-100000001"],"maxPages": 3,"maxListings": 100,"fetchReviews": true,"fetchQna": true}
Reviews-only
{"mode": "reviews","productInputs": ["356251114","https://www.trendyol.com/apple/sample-product-p-100000001"],"maxReviewsPerProduct": 200,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "TR"}}
Input parameters
| Parameter | Type | Default | Notes |
|---|---|---|---|
mode | string | "search" | One of search, url, reviews |
queries | string[] | [] | search mode only |
urls | string[] | [] | url mode only |
productInputs | string[] | [] | reviews mode only; URL or numeric content ID |
maxReviewsPerProduct | integer | 200 | Cap per product in reviews mode |
minPrice | integer | (none) | Search filter |
maxPrice | integer | (none) | Search filter |
minRating | string | "0" | One of 0, 1, 2, 3, 4, 4.5 |
sortBy | string | "BEST_SCORE" | BEST_SELLER, NEWEST, PRICE_BY_ASC, PRICE_BY_DESC, MOST_RATED, MOST_FAVOURITE |
freeCargoOnly | bool | false | Drop products without free shipping |
fastDeliveryOnly | bool | false | Keep only products with fast-delivery badge |
officialSellerOnly | bool | false | Keep only verified official sellers |
couponsOnly | bool | false | Keep only items with collectable coupons |
inStockOnly | bool | true | Drop out-of-stock items |
maxPages | integer | 5 | Pages per query / URL (0 = unlimited within maxListings) |
maxListings | integer | 50 | Total cap across queries / URLs (0 = unlimited) |
fetchDetails | bool | false | Pull rich detail-page fields per product (~25 extra fields per record) |
fetchReviews | bool | false | Attach review summary + first batch to each product |
fetchQna | bool | false | Attach answered Q&A to each product |
maxQnaPerProduct | integer | 20 | Q&A cap per product when fetchQna=true |
proxyConfiguration | object | residential TR | Datacenter works; residential pinned to TR is the most reliable |
Send results into your apps (MCP connectors)
Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape β the Apify dataset is never changed.
What gets written to the connector: a condensed, human-readable summary of each record β not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.
- Authorize a connector once under Apify β Settings β Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
- For Notion, also set
notionParentPageUrlto the page where items should be created.
The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.
Output example (search / url mode)
Sample shape, values are illustrative placeholders, not from a live listing.
{"kind": "product","contentId": 100000001,"id": 100000001,"groupId": 100000000,"url": "https://www.trendyol.com/sample-brand/sample-product-p-100000001","name": "Sample Product Title","brand": "Sample Brand","brandId": 1000,"category": { "id": 1000, "name": "Sample Category" },"price": {"current": 0,"original": 0,"recommendedRetail": 0,"discountPercent": 0,"currency": "TL"},"rating": { "score": 0, "totalRatings": 0, "totalComments": 0, "breakdown": {} },"seller": { "id": 100000, "name": "Sample Seller" },"image": "https://cdn.dsmcdn.com/mnresize/400/-/sample/000000000-800x600.jpeg","images": ["https://cdn.dsmcdn.com/mnresize/400/-/sample/000000000-800x600.jpeg"],"stock": 0,"inStock": true,"freeCargo": false,"fastDelivery": false,"officialSeller": false,"sameDayShipping": false,"rushDelivery": false,"hasCoupon": false,"hasCodePromo": false,"hasFlashSale": false,"isInfluencerPreferred": false,"promotions": [],"stamps": [],"badges": [],"scrapedAt": "2026-01-01T00:00:00.000Z"}
Output example (reviews mode)
Sample shape, values are illustrative placeholders, not from a live listing.
{"kind": "review","id": 400000000,"productContentId": 100000001,"productUrl": "https://www.trendyol.com/sample-brand/sample-product-p-100000001","rate": 0,"comment": "Sample review text appears here.","userFullName": "**** ****","isElite": false,"isInfluencer": false,"likesCount": 0,"language": "tr","createdAt": 1700000000,"mediaFiles": [],"scrapedAt": "2026-01-01T00:00:00.000Z"}
Plan and proxy
- Apify Datacenter (free-tier and every paid tier, prefilled default). Just tick Use Apify Proxy and leave Apify Proxy Groups empty. Works for casual runs; the actor warns at startup that this configuration is non-deterministic on this site.
- Apify Residential, country = TR (Starter plan and above, recommended for reliability). Set Apify Proxy Groups to Residential and country to TR. Returns full Turkish inventory consistently.
- Bring-your-own proxies. Paste a list of
http://user:pass@host:portURLs into the Custom proxies field and untick Use Apify Proxy.
If a run returns 0 items, the actor pushes an error record to the dataset with a clear message + the upgrade link.