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
Actor stats
0
Bookmarked
4
Total users
1
Monthly active users
15 hours 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 |
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.