Trendyol Product Scraper - Prices, Ratings & Sellers
Pricing
from $8.32 / 1,000 results
Trendyol Product Scraper - Prices, Ratings & Sellers
Scrape Trendyol product search and listings: title, brand, price, original price, discount, rating, review count, seller, stock, variants, category and images. Filter by keyword, price, brand and sort. Export to JSON, CSV or Excel.
Pricing
from $8.32 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Trendyol Product Scraper - Prices, Ratings & Sellers
Here is one real result. Trendyol's storefront is behind a managed challenge and was serving gated/empty responses at the time this README was captured, so the run below returned the actor's honest informational record rather than a populated product (no fabricated sample is shown). Every per-product field the actor returns is documented in the Output reference below.
{"error": "No products found for the given input on Trendyol. Try a different search term or check the URL. You were NOT charged for this run.","source": "Trendyol","observedAt": "2026-08-15T10:55:55.913Z"}
The most complete Trendyol product scraper available. When the storefront clears, it returns every listing field the search exposes for each product, plus full specifications, all images, variants and the seller's legal name, city, tax and registration numbers when you enable details, and gives you keyword, price, brand and sort controls to target exactly the products you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor searches Trendyol for each keyword (or reads the search/category/product URLs you pass), paginates through the matching products, and writes one normalized record per product to the run's dataset. Each listing record carries the product id, title, brand, current and original price, discount, currency, rating, review count, category, stock and images. With withDetails on (the default), each product's detail page is fetched to add full specifications, all images, variant count and sizes, and the seller's legal name, city, tax number and trade registration number.
Trendyol fronts its storefront with a managed challenge; the actor clears it through a hosted solver and stays HTTP-only. When the storefront returns no products for an input, the actor writes a single informational record and does not charge. Missing source values are returned as null; nothing is invented.
Quickstart
Open the actor, paste this into the input, and press Run. It searches best-selling phones and returns up to 10 with full details.
{"searchQueries": ["telefon"],"maxProducts": 10,"withDetails": true,"sortBy": "BEST_SELLER"}
Provide at least one searchQueries term or a Trendyol URL in startUrls. Turn withDetails off for faster listing-only rows.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchQueries | string[] | conditional | ["telefon"] | Search terms, for example telefon, elbise, laptop. Each runs its own paginated search. Required unless startUrls is given. |
startUrls | string[] | conditional | (empty) | Trendyol search/category listing URLs or individual product URLs to scrape directly. |
withDetails | boolean | no | true | Fetch each product's detail page for full specs, all images, variants/sizes and seller legal info. Off returns faster listing-only rows. |
sortBy | enum | no | RELEVANCE | RELEVANCE, BEST_SELLER, MOST_RATED, MOST_FAVOURITE, NEWEST, PRICE_LOW_TO_HIGH, PRICE_HIGH_TO_LOW. |
minPrice | integer | no | (none) | Keep only products at or above this price. |
maxPrice | integer | no | (none) | Keep only products at or below this price. |
brands | string[] | no | (any) | Brand names to keep, case-insensitive, for example ["Samsung","Apple"]. |
maxProducts | integer | no | 30 | Maximum products across all searches. Free plans are capped at 10. |
Output reference
One dataset item per product. Types: integer, number, string, boolean, string[], or null when the source value is absent. Fields marked (details) are only populated when withDetails succeeds.
| Field | Type | Description |
|---|---|---|
productId | integer | Trendyol product/content id. |
title | string | Product name. |
brand | string | Brand name. |
price | number | Current selling price in the storefront currency. |
originalPrice | number | Original (pre-discount) price. |
discountPercent | integer | Discount percentage off the original price. |
currency | string | Storefront currency symbol/code. |
rating | number | Average customer rating (0 to 5). |
reviewCount | integer | Number of ratings/reviews. |
inStock | boolean | Whether the product is in stock. |
categoryName | string | Product category name. |
image | string | Primary image URL. |
images | string[] | All image URLs. |
url | string | Product page URL. |
searchQuery | string | Search term that produced this record. |
sellerName | string | Seller/merchant display name (details). |
sellerOfficialName | string | Seller legal/registered company name (details). |
sellerCity | string | Seller city (details). |
sellerTaxNumber | string | Seller tax number (details). |
sellerRegistrationNumber | string | Seller trade registration number (details). |
specs | string | Product specifications as name: value pairs (details). |
variantCount | integer | Number of variants (details). |
sizes | string[] | Available sizes (details). |
source | string | Always Trendyol. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. On a no-product or failed run, a single item with a populated error field is written and not charged. |
Example output record
The full per-product record includes the fields above (productId, title, brand, price, originalPrice, discountPercent, currency, rating, reviewCount, inStock, categoryName, image, images, url, and the seller*, specs, variantCount, sizes detail fields). At capture time the storefront was gated, so the actor returned this honest record instead of a populated product:
{"error": "No products found for the given input on Trendyol. Try a different search term or check the URL. You were NOT charged for this run.","source": "Trendyol","observedAt": "2026-08-15T10:55:55.913Z"}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~trendyol-products-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["telefon"],"sortBy":"BEST_SELLER","maxProducts":25}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~trendyol-products-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["laptop"],"minPrice":10000,"brands":["Apple"],"maxProducts":100}'
Apify CLI:
apify call scrapers_lat/trendyol-products-scraper \--input '{"searchQueries":["elbise"],"maxProducts":10}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per product returned (
resultevent). See the pricing tab for the current per-result price. - Details add-on. When
withDetailsis on and a detail page is fetched successfully, an additivedetailscharge is applied on top of the base result. It is never charged if the detail fetch fails. - No charge on failure. If a run finds no products or errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 products per run. Upgrade for higher
maxProducts.
FAQ and troubleshooting
A run returned only an error record. Why?
Trendyol serves its storefront behind a managed challenge and can return empty result sets for some solver sessions or during regional gating. Retry, change the search term, or pass an explicit startUrls product URL. No-product runs are not charged.
Do I get the seller's legal details?
Yes, when withDetails is on and the detail page exposes them: legal company name, city, tax number and trade registration number.
Which currency are prices in?
The storefront currency (Turkish Lira for the .com.tr storefront), returned in currency alongside the numeric price.
Can I scrape a single product?
Yes. Put its product URL in startUrls; the actor builds the record and fills the detail fields.
Is this an official Trendyol tool? No. This actor is independent and has no affiliation with Trendyol. It reads only data that is publicly visible on the storefront. All trademarks belong to their owners.
Related scrapers
- Trustpilot Scraper: company reviews and ratings.
- 1688 Wholesale Scraper: 1688 wholesale product and supplier data.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with Trendyol. Accesses only publicly available product data. All trademarks belong to their owners.
