Trendyol Product Scraper avatar

Trendyol Product Scraper

Pricing

from $3.00 / 1,000 product scrapeds

Go to Apify Store
Trendyol Product Scraper

Trendyol Product Scraper

Scrape public Trendyol products by keyword, category URL, or product URL. Returns prices, ratings, sellers, stock, and images. Cookieless HTTP, MCP-ready.

Pricing

from $3.00 / 1,000 product scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

Turn a Trendyol keyword, search URL, category URL, or product URL into one dataset row per public product with title, brand, current and original price, discount, rating, review count, seller, stock flags, image URLs, category, and collection time. This workflow is built for marketplace analysts, price-monitoring teams, sourcing researchers, and AI agents that need a bounded Turkey-storefront catalog snapshot they can schedule and compare.

Reviews, Q&A, and seller emails stay outside this listing-and-detail workflow. Direct product URLs already return the public product page. When enrichDetails is true, the Actor opens the product page for description, attributes, gallery, favoriteCount, and seller name.

Best fit for this Actor

  • Start with a Turkish or English product keyword such as playstation when you need ranked Trendyol search cards with TRY prices and ratings.
  • Use maxResults as the spend cap: each saved product is one product-scraped event, plus Apify platform usage. The Console sample uses 1 product so a first run stays bounded.
  • Continue with a neighboring marketplace Actor when the same brief needs another storefront after this Trendyol pass.

Practical scenario

A sourcing analyst pastes playstation, keeps maxResults at 1, and optionally sets a rating floor. The dataset returns a public card with current and original TRY prices, discount, brand, rating, review count, stock and shipping flags, and the canonical product URL. The team can compare sellers on the same keyword, then schedule the same input to watch price movement. OUTPUT and RUN_SUMMARY say whether collection finished, stopped at a charge cap, found no matches, or needs a later retry.

Quick start input

{
"searchQueries": ["playstation"],
"maxResults": 1,
"maxPagesPerQuery": 1,
"sort": "relevance",
"enrichDetails": false
}

searchQueries accepts free-text keywords. Put search, category, or product pages in startUrls. maxResults defaults to 50 and permits at most 5,000 records across the whole run.

Input reference

FieldTypeWhat it controls
searchQueriesstring[]Product keywords such as playstation. Deduplicated. Put URLs in startUrls.
startUrlsstring[]Public trendyol.com search (/sr?q=), category (-c{id}), or product (-p-{id}) pages. Seller /magaza/ pages stay outside this Actor.
maxResultsintegerSaved-product cap, 1–5,000. Default 50. Prefill 1. This is the billed-row ceiling.
maxPagesPerQueryintegerListing pages per keyword or category URL, 1–50. Default 10. Prefill 1.
sortenumListing order: relevance, newest, price_asc, price_desc, best_seller, most_favorited, most_rated.
minPrice / maxPricenumberOptional current-price band in listing currency (TRY on the Turkey storefront).
minRatingnumberOptional 0–5 public rating floor.
inStockOnly / freeShippingOnly / fastDeliveryOnly / discountedOnlybooleanOptional client-side filters on public listing flags.
enrichDetailsbooleanWhen true, fetch each product page for description, attributes, gallery, favoriteCount, and seller name. Adds one product-enriched event per enriched row.
proxyConfigurationobjectDefaults to Apify Residential Turkey. Keep a residential route so public listing HTML is reachable.

What data you receive

Each dataset item is one public Trendyol product.

{
"productId": "800623487",
"listingId": "example-listing",
"productUrl": "https://www.trendyol.com/sony/example-p-800623487",
"title": "Example Wireless Headphones",
"brand": "ExampleBrand",
"price": 1299.9,
"originalPrice": 1599.9,
"discountPercent": 19,
"currency": "TRY",
"rating": 4.7,
"reviewCount": 1200,
"sellerName": "Example Seller",
"inStock": true,
"freeShipping": true,
"imageUrl": "https://cdn.dsmcdn.com/example.jpg",
"sourceType": "search",
"enriched": false,
"scrapedAt": "2026-09-15T07:54:00.000Z"
}

The default key-value store also contains:

  • OUTPUToutcome, message, saved count, warnings, and charged event counts.
  • RUN_SUMMARY — pages fetched, sessions, filters, duplicates, and terminal diagnostics.

COMPLETE, PARTIAL, VALID_EMPTY, and INVALID_INPUT finish successfully. UPSTREAM_FAILED is the honest terminal state when valid work received no usable marketplace HTML after residential session rotation.

Use through the API

curl "https://api.apify.com/v2/acts/khadinakbar~trendyol-product-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchQueries":["playstation"],"maxResults":1}'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('khadinakbar/trendyol-product-scraper').call({
searchQueries: ['playstation'],
maxResults: 1,
minRating: 4.5,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Use with AI agents through Apify MCP

Search public Trendyol listings for playstation, save at most 1 product, and return title, product URL, current and original TRY price, discount, brand, rating, review count, seller, and collection time. Inspect OUTPUT.outcome before treating an empty dataset as a real no-match.

Tell the agent to keep maxResults small on the first call, preserve productUrl as provenance, and read RUN_SUMMARY when the outcome is PARTIAL or needs a later retry. Current MCP client setup: https://mcp.apify.com

Connect the workflow

After a Trendyol price snapshot, then use Jumia Product Scraper when the same brief needs African marketplace prices instead of Turkey catalog cards.

Continue with AliExpress Product Search Scraper when the job is AliExpress listing cards rather than Trendyol search results.

Pricing

This Actor uses Pay per event plus Apify platform usage. Open the live Pricing tab for current event names and amounts. maxResults is the predictable cap on product-scraped events before platform compute and proxy usage. A product is validated before it is persisted and charged, so only accepted rows receive the product event. Detail enrich adds product-enriched when enrichDetails is true.

Best results

  • Provide Turkish marketplace language when that matches shopper intent (spor ayakkabi, kulaklik).
  • Start with a focused sample (maxResults 1–10) and inspect OUTPUT before raising the cap.
  • Keep Apify Residential Turkey as the default proxy so public listing HTML is reachable.
  • Use a category URL ending in -c plus a numeric id, or a product URL containing -p- plus a numeric id, when you already have a specific catalog path.

Builder's note

I found that Trendyol listing cards live in window["__single-search-result__PROPS"].data.products, while category pretty-URLs leave that array empty until rewritten to /sr?wc={id}. I also found that a garbage keyword still returns unrelated cards through MULTILINGUAL_SEARCH, so I built the no-match check around resolved-query drift plus token overlap instead of treating any non-empty page as a hit. Seller names usually arrive from the product page, which is why listing rows keep sellerId and enrich fills sellerName.

Responsible use

Use this Actor for lawful collection and analysis of public marketplace information. Follow applicable laws and site terms, and keep the workflow on public listing data you are authorized to collect. Trendyol is a trademark of its owner. This independent Actor is not affiliated with, associated with, or endorsed by Trendyol.