Trendyol API: how to get Trendyol product prices, sellers and reviews as JSON
Trendyol API: search for a way to read Trendyol today and you land in one of four places, and only two of them answer the question you actually asked. Trendyol's own Marketplace API needs an approved seller account and only ever shows you your own listings, so it cannot tell you what a rival charges. The open-source route is thin: 88 GitHub repositories match "trendyol scraper" and the most-starred has 10 stars and was last pushed on 2024-05-03. Turkey's own vendors — SatışAnaliz at 0 to 799 TL a month is the one with fully published pricing — sell sellers a dashboard, not developers an API. That leaves the Apify Store, which listed 26 Trendyol actors on 2026-09-24, and hosted engines like ours. Apify is the better choice when you want a scheduled job, a dataset export and a UI, and when you want to pay strictly per record. ReefAPI is the better choice when you want a synchronous sub-second call that returns every competing seller on a listing in one request, and when Trendyol is one of several sources behind the same key.
ReefAPI vs Apify Trendyol actors
| Dimension | ReefAPI | Apify Trendyol actors | Best fit |
|---|---|---|---|
| What you actually call | 16 actions under /trendyol/v1, read live from our own /catalog on 2026-09-24: search, search/filters, category/products, product/detail, product/offers, product/variants, product/description, product/questions, product/coupons, product/reviews, product/similar, seller/products, seller/info, seller/categories, seller/category-attributes and suggest. One POST, one synchronous JSON reply. | An actor you start, whose run you then poll, and whose rows you read out of a dataset afterwards. Each of the 26 Trendyol actors defines its own input schema and its own output columns, so switching publisher means remapping your fields. | ReefAPI |
| Every competing seller on one listing | product/offers returns them in a single call for 1 credit. On 2026-09-16 we ran it against content_id 458904548 and got 36 published offers in 2.356 seconds, priced from 9.999 TL to 21.529,01 TL — a 2.15x spread on the same listing. The buy-box winner is flagged with is_buybox and every row carries the seller id, store name and score. product/detail returns the same block as other_offers, alongside other_offers_count so you can tell a complete list from a capped one. | Several actors advertise seller details, and one is explicitly built for monitoring: getascraper's Trendyol Price Monitor bills $0.002 per price CHANGE rather than per product checked, which is a genuinely smarter unit for a watchlist. What no store listing commits to is how many competing offers one product returns. | ReefAPI |
| Pricing model | One shared prepaid credit pool. A Trendyol search costs 2 credits, product/detail 1, product/offers 1, product/reviews 2. Credits roll over and never expire, and the same balance pays for every other engine. | An Apify plan measured in dollars of platform usage, plus the actor's own per-record charge drawn from that same balance. On the most-used actor that is $0.00099 per product listing record on the Free usage tier, falling to $0.0007 at Gold and above; enrichment and review records are charged separately. | Depends |
| Free tier | 1,000 credits once, on signup, with no card. That is 1,000 product/detail calls, or 500 searches. | $5 of prepaid platform usage EVERY month, recurring, with no card. At the leading actor's Free-tier rate that is roughly 5,050 product listing records a month at zero cost. Exceed it on the free plan and, in Apify's own words, "your access to Apify's services will be blocked until the beginning of the next monthly cycle". | Alternative |
| Failed, blocked and empty work | Not charged. An invalid content_id was refused in 29.1 milliseconds with zero upstream calls and zero bytes, measured 2026-09-16, and cost nothing. A blocked call costs nothing. | Not stated as a platform policy — Apify's docs only recommend to developers that they "don't bill users for what they can't access". In practice it varies by publisher, and the leading actor is the good case: it charges no Actor Start fee at all, so a run that saves nothing costs nothing. Others do charge to start — $0.005 on two of them and $0.08 on one — and that fee is due whether or not the run returns a row. | Depends |
| Latency and shape | Synchronous. All 14 actions in our 2026-09-16 acceptance run answered between 0.642 and 3.293 seconds, every one a cache miss. | A run, not a request: you start a job and poll it, so there is no sub-second single-product lookup. The one synchronous commercial Trendyol API we found elsewhere is Otapi on RapidAPI, and its own listing reports an average latency of 29,358 milliseconds — which removes the only structural advantage a request-shaped API had. | ReefAPI |
| The Turkish number format | Every price ships twice. Our committed 2026-09-16 detail evidence reads price.current "660 TL" with current_value 660, and price.list "1.100 TL" with list_value 1100. The text is Trendyol's own, dot-for-thousands; the numeric twin beside it is what you compute on, so nothing has to be parsed. | Depends entirely on the actor. Some publish a numeric price, some the page string; one states that it normalises to TRY. Nothing in the marketplace guarantees a second, already-parsed field, and no store listing states which of the two you get. | ReefAPI |
| Campaigns and coupons | product/detail returns campaign as the headline string and campaigns[] as rows carrying text, type, end_date and — the field that matters — applied. Our 2026-09-16 evidence shows "Sepette %40 İndirim" with applied true and "2 Adet ve Üzeri %10 İndirim" with applied false on the same product. product/coupons returns anonymously visible coupons with threshold and expiry for 2 credits, and never subtracts them from the price. | The leading actor names "promotion signals" in its own description. Whether an advertised discount is actually applied, rather than merely displayed, is not something a store listing commits to. | ReefAPI |
| Scheduling, exports and UI | None. ReefAPI is an endpoint. No scheduler, no dataset store, no CSV or Excel export, no run history — you call it from your own code and keep the rows yourself. | The platform provides all of it: scheduled runs, webhooks, run history, dataset storage, exports to JSON, CSV, Excel, Google Sheets and Airtable, Make and Zapier integrations, and an MCP server. A non-developer can get a first file without writing code. | Alternative |
| What the big web-data vendors actually give you here | A parsed, Trendyol-specific contract: named fields, documented paging, and errors that distinguish a missing product from a missing route. | Less than their landing pages suggest. Bright Data publishes a Trendyol dataset page whose own FAQ says "No, we do not have this data immediately available" — each request is a custom collection, so it is a contact-sales flow, not a download. Oxylabs has a Trendyol page, but serves it through its generic Universal Source, which returns raw HTML rather than a dedicated Trendyol parser. Decodo's e-commerce target list does not name Trendyol at all. | ReefAPI |
| Breadth beyond Trendyol | The same key reaches 280 engines and 2,074 actions, read live from /catalog on 2026-09-24, including Hepsiburada and n11 on the same Turkish shelf, in the same envelope. | Far broader on the long tail. The store carries thousands of actors across sites we have no engine for, and one Trendyol actor there covers Trendyol, Hepsiburada, n11 and Amazon TR together in a single run. | Alternative |
| Seller-side data | seller/info returns a store's legal entity name, product count, score and badges; seller/products pages its whole catalogue. seller/categories and seller/category-attributes return Trendyol's upload tree — measured 2026-09-22 at 3,361 categories, with category 411 (Casual Ayakkabı) carrying 38 attributes of which 9 are required. | Several actors return seller details on a product. One charges $0.02 per seller email found, which is B2B contact discovery rather than catalogue data, and is not something we do at any price. | ReefAPI |
| Response freshness | There is no cross-customer response cache anywhere on the gateway — it was switched off on 2026-06-16 because a cache hit on a live-price product hands you a stale number. All 14 actions in the 2026-09-16 acceptance run reported cache_hit false. | A dataset is written when the run finishes, so what you read is as old as the run. That is a feature for a nightly snapshot and a problem for a price you are about to act on. | Depends |
| Who is behind it | A maintained engine with a public repair history. When our product/similar route broke on 2026-09-07 it was broken for every customer until we shipped the fix, and we publish that with a date. | Mostly individuals. The leading Trendyol actor is one community developer's work, with 37,330 runs behind it and a price that has fallen roughly eightfold in thirteen months — good for buyers today, and a reminder that what you build against can be repriced or abandoned. Against that, 26 actors means 26 fallbacks; we are one implementation. | Depends |
What each side actually charges
Both columns are published prices, not quotes. Ours are generated from the same plan file the checkout charges against, so they cannot drift from what you would pay. Apify Trendyol actors’s were read off Apify Trendyol actors’s own pricing page on and are reproduced with their plan names and their units. Prices change; check the linked page before you commit.
🔴 These two tables do not share a unit, and the gap is wider than it looks. Apify bills DOLLARS OF PLATFORM USAGE, and the actor then bills PER RECORD WRITTEN TO A DATASET out of that same balance — one product listing, one enriched product and one review are three separately priced events, so a single fully described product can cost two or three charges rather than one. ReefAPI bills ONE CREDIT PER CALL, and a call returns a page: our own 2026-09-16 acceptance run got 36 de-duplicated search rows back for 2 credits, and 36 seller offers back for 1 credit. A credit is not a request either — measured across 1,124 catalog actions on 2026-08-25, 67% of actions cost one credit, 18% cost two and 5% cost three. And their Free, Bronze, Silver, Gold, Platinum and Diamond are Apify ACCOUNT tiers that change the per-record rate; they are not the plan names in the rows above, and reaching Gold means being on the $199 Scale plan or higher. Anyone who hands you a single apples-to-apples multiplier between these two tables has made it up.
| Plan | Price | Included | Per 1,000 credits |
|---|---|---|---|
| Free | $0 | 1,000 credits at signup, no card | — |
| Pro | $15 / mo | 10,000 credits / mo | $1.50 |
| Ultra | $50 / mo | 50,000 credits / mo | $1.00 |
| Mega | $100 / mo | 125,000 credits / mo | $0.80 |
| Enterprise | $200 / mo | 300,000 credits / mo | $0.67 |
| Plan | Price | Included |
|---|---|---|
| Free | $0 | $0 Apify plan carrying $5 of prepaid platform usage every month, recurring, with no credit card. The page's own wording is that if you exceed it on the free plan, "your access to Apify's services will be blocked until the beginning of the next monthly cycle". The actor's per-record charges are drawn from that same $5 — so the free tier is not $5 plus scraping, it is $5 including it, which at the leading actor's Free-tier rate is about 5,050 product listing records a month. |
| Starter | $19 / mo | $19 of prepaid platform usage — $17 / mo billed annually; the page advertises 10% off paid plans on annual billing |
| Scale | $199 / mo | $199 of prepaid platform usage — $179 / mo billed annually. This is the plan tier that unlocks the lowest per-record rates below |
| Business | $999 / mo | $999 of prepaid platform usage — $899 / mo billed annually |
| Enterprise | Not published | Contact sales |
| Trendyol Scraper | All-In-One — product listing | $0.00099 per record | $0.99 per 1,000 product listing records — that is the Free usage tier; the actor publishes $0.0009 Bronze, $0.0008 Silver and $0.0007 at Gold, Platinum and Diamond. Those are Apify account tiers, not the plan names above. No Actor Start fee on this actor |
| Same actor — product enrichment | $0.0007 per record | $0.70 per 1,000 enriched records — $0.0005 from Silver up; billed on top of the listing record, and described as full descriptions, all photos, detailed features, variants and seller details |
| Same actor — review or Q&A record | $0.0007 per record | $0.70 per 1,000 review or Q&A records — $0.0005 from Silver up |
| The rest of the Trendyol shelf | $0.0005 to $0.10 per record | 26 actors, 59,194 cumulative runs, read 2026-09-24 — the second most-used charges $0.00085 per product on the Free tier and $0.001 to start; the third $0.001 per result plus $0.005 per run; one charges $0.08 just to start a run; a reviews-only actor charges $2.49 per 1,000 results. One actor is rented flat at $20.00 / mo with a 120-minute free trial, but was last modified 2025-11-07 |
$0.67–$1.50 / 1,000 credits on monthly billing, or $0.33–$0.75 / 1,000 credits paid yearly (−50%). Credits roll over and never expire, and every engine draws from the same balance. Failed calls are free except verified SHEIN NOT_FOUND on product/detail and price (4 credits). Credits are not requests: measured across 1,124 catalog actions on 2026-08-25, 67% cost one credit, 18% cost two and 5% cost three.
Not stated as a platform policy. Apify's monetisation docs only recommend to developers that they "don't bill users for what they can't access, for example if a run gets aborted" — whether a given publisher honours that is up to the publisher. Two concrete things we can state. First, the leading actor charges no Actor Start fee, so a run that saves no records costs nothing; several of its rivals charge $0.005, and one charges $0.08, to start a run whether or not it returns anything. Second, Apify's own API publishes this actor's last-30-day outcomes: of 10,197 runs, 9,198 succeeded, 981 timed out, 18 were aborted and 0 failed. Its store page headlines a 100% success rate, and on its own terms that is correct, because nothing outright failed — but roughly one run in ten ended on the clock, and both numbers are worth knowing before you plan a large backfill. On our side a failed or blocked call is not charged, except verified SHEIN NOT_FOUND on product/detail and price (4 credits), and an invalid content_id was refused in 29.1 milliseconds with zero upstream calls on 2026-09-16.
Four places where they genuinely win, and one of them is on price. First, the per-record rate at Gold and above is $0.0007 for a listing plus $0.0005 for enrichment, which is $0.0012 for one fully enriched product. Our product/detail is 1 credit, and at Pro's $1.50 per 1,000 credits that is $0.0015 — so for single enriched products a customer already at Apify Gold pays less than our entry plan, and we only pull ahead at Ultra ($0.0010) and Enterprise ($0.00067). Second, their free tier is $5 EVERY month against our 1,000 credits ONCE, and below a few thousand records a month there is no reason to pay us anything. Third, the platform is a product and we are an endpoint: scheduling, run history, webhooks, dataset storage and CSV or Excel export all come with the plan, and one actor there prices a watchlist per detected change rather than per product checked, which is a better unit than ours for price monitoring. Fourth, there were 26 Trendyol actors on 2026-09-24 carrying 59,194 runs between them, so if a publisher's scraper breaks you can move to another the same day; we are one implementation, and when our product/similar route broke on 2026-09-07 it stayed broken for every customer until we shipped the fix. The store is also far wider than us — one actor covers Trendyol, Hepsiburada, n11 and Amazon TR together, and for any Turkish site where we have no engine, Apify probably has an actor and we have nothing at all.
Apify Trendyol actors prices read from apify.com/pricing, plus each actor's own published charge events on . ReefAPI prices from reefapi.com/pricing, generated at build time.
When ReefAPI is the better fit
- You want "who else sells this and for how much" answered in one call: product/offers returned 36 published sellers for one listing, from 9.999 TL to 21.529,01 TL, for a single credit.
- You want a synchronous request and a JSON reply in under three seconds, not a run to start, a run to poll and a dataset to read.
- You want prices as numbers. Every Trendyol price we return ships as the Turkish page string and as a plain numeric twin, so "1.100 TL" never reaches your code as 1.1.
- Trendyol is one of several sources. The same key and the same credit pool reach 280 engines, Hepsiburada and n11 among them, with an identical response envelope.
- You want failed, blocked and malformed calls to cost nothing, and no cache between you and the live page.
- You need the seller upload template as well as buy-side data — the category tree and the required attributes per category.
When the alternative is better
- You want a scheduled job and a file at the end of it. Apify gives you scheduling, run history, webhooks and CSV, Excel or Google Sheets export; we give you an endpoint and nothing else.
- Your volume is small. Their $5 free allowance renews every month and covers roughly 5,000 listing records, where ours is 1,000 credits once.
- Your targets go well beyond Trendyol into the long tail — thousands of actors, including one that covers Trendyol, Hepsiburada, n11 and Amazon TR together.
- You want to fork the scraper and change what it extracts. Actors are programs you can copy and edit; our engines are not.
- You want a watchlist priced on changes rather than checks — one actor there bills $0.002 per detected price change instead of per product examined, which is a better unit than ours for that specific job.
- You want a choice of publishers. There were 26 Trendyol actors on 2026-09-24, so if one breaks you can switch the same afternoon.
Real ReefAPI snapshot
ReefAPI captured this live trendyol example on . It is committed in the SEO snapshot store and used as page evidence, not generated copy.
{
"method": "POST",
"url": "https://api.reefapi.com/trendyol/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "iphone"
}
}{
"ok": true,
"meta": {
"api": "trendyol",
"endpoint": "search",
"mode": "live",
"latency_ms": 1121.7,
"record_count": 36,
"bytes": 188571,
"cache_hit": false,
"version": "0.1",
"total_count": 100000,
"page": 1,
"pagination": {
"page": 1,
"has_more": true
},
"charged_credits": 2
},
"data": {
"results": [
{
"content_id": 985256821,
"product_group_id": 750312515,
"title": "iPhone 17 Pro Max 256GB Gümüş",
"brand": "Apple",
"url": "https://www.trendyol.com/apple/iphone-17-pro-max-256gb-gumus-p-985256821?boutiqueId=689770&merchantId=968",
"category": "IOS Cep Telefonları",
"merchant_id": 968,
"image": "https://cdn.dsmcdn.com/mnresize/400/-/ty1788/prod/QC_PREP/20251118/16/630c73c3-2c09-3158-9ad1-80cff418884c/1_org_zoom.jpg",
"price": "123.499 TL",
"price_value": 123499,
"list_price": null,
"list_price_value": null
},
{
"content_id": 985256825,
"product_group_id": 750312515,
"title": "iPhone 17 Pro Max 256GB Kozmik Turuncu",
"brand": "Apple",
"url": "https://www.trendyol.com/apple/iphone-17-pro-max-256gb-kozmik-turuncu-p-985256825?boutiqueId=689770&merchantId=968",
"category": "IOS Cep Telefonları",
"merchant_id": 968,
"image": "https://cdn.dsmcdn.com/mnresize/400/-/ty1761/prod/QC_PREP/20250922/16/5d65ec4d-08cd-32aa-979f-f33fb44a989d/1_org_zoom.jpg",
"price": "119.999 TL",
"price_value": 119999,
"list_price": null,
"list_price_value": null
}
],
"query": "iphone"
}
}What we found when we called our own endpoints
Every comparison page on the internet will tell you its own product is good. These are numbers we got by calling ReefAPI and writing down what came back, including where the answer went against us. Each one is dated and each one is repeatable against the same endpoint.
The reason a plain script returns nothing: Trendyol's public search page answered 0 of 8 datacenter requests
Measured on 2026-06-21 from two exit countries. A straightforward server-side GET of Trendyol's own search results page was refused on 8 of 8 attempts — this is the wall that sends people looking for an API in the first place, and you can reproduce it from any cloud host in about a minute. It is also why requests plus BeautifulSoup, which works fine on a laptop, returns an empty list the moment it is deployed. We absorb that server-side and do not publish how. In the same session all 15 actions then in the engine answered correctly in 0.8 to 2.5 seconds, and 46 varied requests fired in parallel — 20 searches, 8 filter lookups, 5 category pages, 5 seller catalogues, 3 seller profiles, 3 product details and 2 review pages — came back 46 of 46 in 4.3 seconds.
Against us: six of every twenty-four search rows repeat on every page you ask for
Pages 1, 2, 10 and 30 of a single query each returned 24 rows, and the same six product ids appeared on all four. Nothing on those rows marks them as promoted. Walking ten pages with max_pages returned 183 distinct products rather than 240, which is exactly this effect after de-duplication. Two more things on the same page shape go against us: list_price and list_price_value were filled on only 3 of 24 rows, so you cannot compute a discount rate from search alone, and meta.total_count reported 81,187 matches — Trendyol's own figure for the result set, not the number of rows paging will hand you. De-duplicate on content_id, read discounts from product/detail, and treat the reported total as a headline rather than a plan.
Against us: product detail published no list price while search published one for the same product
On content_id 1127950824, search returned a 74.999 TL crossed-out list price and product/detail returned null for the same product on the same day. The cause was that the buy-box field being read as the list price is in practice the selected seller's own price, and it usually equals the price paid, so the strike test never fired while the real crossed-out figure sat in a different field. Fixed on 2026-09-06, and the anti-fabrication guard was deliberately left alone: a list price is published only when it is genuinely higher than the price actually paid, so an undiscounted product still returns null rather than an invented discount. Related and still true — discount_pct is a rounded integer. A product at 15,099 lira against a 15,149 lira list price reports 0. The two price numbers are exact; compute the rate yourself when a fraction of a percent matters.
Against us: a dead route was reported to customers as a dead product, on every single product
product/similar answered NOT_FOUND "endpoint/content not found" for every product, including our own declared golden case. The upstream recommendation route had moved, and because a 404 was being mapped straight to NOT_FOUND, a retired route surfaced as a missing product — the worst kind of error, because it looks like an answer. A 15-path sweep over the same service returned the identical application-level 404 on all 15, so the fix came from capturing what the page itself calls rather than from more guessing. After the repair, two independent sets of 23 products across 23 categories with disjoint ids: 23 of 23 and 23 of 23 returned ok with rows, 920 rows in total, with content_id, title, brand, url, price, rating, comment_count, image and category filled on 100% of rows and list_price on 37.6% and 40.7% — correctly sparse, because undiscounted products return null. Six of six round-trips from similar to product/detail agreed on the price string exactly.
All 14 actions answered on one key, cache-free, between 0.642 and 3.293 seconds
Public acceptance on an owner key, every call a cache miss: product/questions 0.642 s, product/reviews 0.687 s, category/products 0.887 s, search 0.925 s (36 de-duplicated rows), suggest 0.926 s, search/filters 1.224 s, seller/products 1.595 s, product/coupons 1.850 s, product/variants 2.066 s, product/detail 2.189 s at 441,883 bytes, product/offers 2.356 s, seller/info 2.472 s, product/description 3.293 s. product/offers returned 36 published seller offers for content_id 458904548 priced from 9.999 TL to 21.529,01 TL — a 2.15x spread on one listing — with the buy-box winner flagged, and a competing seller scoring 9.3 asking 10.960 TL against the winner's 9.999 TL. An invalid content_id was refused in 29.1 milliseconds with zero upstream calls and zero bytes. Behind it: 26 unit and regression tests and 19 of 19 valid staged calls. This is a bounded functional sample, not a throughput or SLA claim.
Honest limit on the offers block: only the buy-box seller publishes stock and item number
In the same 36-offer response, seller_id, seller_name, seller_score, price, price_value, currency, campaign and free_cargo were present on every row, but in_stock and item_number came back null on every competitor and non-null only on the buy-box winner. That is what Trendyol publishes, so we return null rather than inferring availability we cannot see. Two related separations worth knowing: a product with a single seller returns other_offers as an empty array with other_offers_count 0 — Trendyol publishes no competing-merchant block at all in that case, and the empty array is the true answer rather than a failure; and coupons come back as anonymous visibility with eligibility_checked false, never subtracted from the price, because what a logged-out visitor can see is not what a given account is actually entitled to.
The seller upload tree is 3,361 categories, and one of them wants 38 attributes
Measured on 2026-09-22 against Trendyol's public integration endpoints, which need no login: 11 of 11 category calls returned 200 from an ordinary datacenter host in 0.3 to 1 second. The tree holds 3,361 categories; the query "ayakkabı" matched 51 leaf categories; and category 411, Casual Ayakkabı, carries 38 attributes of which 9 are required before a listing can be created. A category id that does not exist answers a clean NOT_FOUND. Worth knowing that this is the one part of the engine that overlaps with Trendyol's own seller API — it tells you the shape of the upload template, but it does not upload anything, because writing to a store is what the Partner API is for.
Questions developers ask before switching
How do I get Trendyol product prices programmatically?
Two calls. POST /trendyol/v1/search with a query gives you rows carrying content_id, title, brand, price as both a Turkish string and a number, rating, comment count and the free-shipping flag, for 2 credits. Take content_id to POST /trendyol/v1/product/detail, 1 credit, and you get the current price, the crossed-out list price, the discount percentage, the coupon price and the loyalty price side by side, plus the campaigns, the seller with its score and every competing seller. That is 3 credits for a full competitive picture of one product — under half a cent on our entry plan. You do not need a Trendyol account for any of it.
Can't I just use Trendyol's own API?
Only if you are asking a different question. developers.trendyol.com is the Partner Program integration for approved sellers: its own description of the job is product transfer, stock and price updates, order processing and invoice submission. Getting in requires a Supplier ID plus an API key and secret taken from the seller panel's Integration Information page, which needs master-user (admin) access — and requests without a User-Agent of the form "Supplier ID - {Integration Company Name}" are rejected with a 403. The product listing endpoint is /integration/product/sellers/{sellerId}/products, with your own seller id in the path; its Turkish description translates as "list your products in your Trendyol store". It is the correct and sanctioned way to manage a store you own, and if that is what you need you should use it and not us. What it will not do is tell you what a rival seller charges, because that is not your data. Two practical notes: Trendyol publishes per-service rate limits (effective 2026-09-14) that are generous — on the order of 1,000 to 2,000 requests a minute for product reads — and it flags the v1 filterProducts endpoint for deprecation on 2026-10-15 in favour of Product V2. No price is published for the Partner API anywhere we could find, so we are not going to call it free.
Is scraping Trendyol legal?
We are not lawyers and this is not legal advice, so here is what is factually true instead. Every Trendyol surface this engine reads is a public, logged-out page or a public endpoint the site itself calls to render one — no account, no login, no paywall. What comes back is commercial product and seller data: prices, stock, categories, campaigns, specifications and store profiles. It is not personal data, and Trendyol already masks reviewer identity itself before publishing it, which is why our review rows carry the rating, text, date, seller and photos but no usable author. What actually decides this for you is your own jurisdiction, Trendyol's terms of use, what you do with the data afterwards and whether you compete with them; that is a conversation for your counsel, not a checkbox on a comparison page. If your use case is managing your own store, the Partner API above is the route with no ambiguity at all.
Does it include other sellers' prices and campaign prices?
Yes to both, and they are kept apart on purpose. product/offers returns every published competing seller for a listing in one call for 1 credit — on 2026-09-16 that was 36 offers on one product, from 9.999 TL to 21.529,01 TL, each with the seller id, store name, score and its own campaign, and the buy-box winner flagged with is_buybox. product/detail returns the same as other_offers plus other_offers_count, which is the true upstream number so you can tell a complete list from a capped one. Campaigns come back as campaigns[] with text, type, end_date and applied — that last field matters, because our own evidence shows one campaign applied true and another applied false on the same product. Coupons are a separate action and are deliberately never subtracted from the price: they are returned as anonymous visibility with eligibility_checked false, since what a logged-out visitor can see is not what a specific account will actually get.
What about the Turkish number format? Will "1.100 TL" break my code?
Not here, because you never have to parse it. Turkish uses a dot for thousands and a comma for decimals, so a naive float parse of the page string gives you a number a thousand times too small — "1.100 TL" becomes 1.1, and "49.499 TRY" becomes 49.5 instead of forty-nine and a half thousand lira. Every price we return ships twice. From our committed 2026-09-16 evidence: price.current "660 TL" with current_value 660, price.list "1.100 TL" with list_value 1100. From a search snapshot captured 2026-07-18: "price": "1.345 TL" with "price_value": 1345. Use price_value, current_value and list_value for arithmetic and keep the strings for display. Worth saying out loud because it is a real hazard across this whole shelf: on our neighbouring n11 engine the basket-campaign price ships only as a formatted string, "10.894,11 TL", with no numeric twin, and types are not stable across actions there either — rating_count came back as the string "378" on detail and the integer 361 on a search row, and discount_rate was 0.0 on one row and null on the next. Coerce before you compare, whichever Turkish marketplace you are reading.
What breaks, and how would I know?
Three things break on this engine and all three have happened. Routes move: on 2026-09-07 product/similar returned NOT_FOUND on every product because an upstream recommendation route had been retired, and a dead route was being reported as a dead product — worse than an error, because it looks like an answer. Fields move: on 2026-09-06 product/detail published no list price while search published one for the same id. And the page shape lies about depth: six of every twenty-four search rows repeat on every page, so ten pages give you 183 distinct products rather than 240. Defensively, that means de-duplicate on content_id, never treat NOT_FOUND from one action as proof a product is gone when another action still returns it, and check /status before you build a pipeline on a single action. We publish the repairs with dates rather than quietly patching them, which is the only honest way to answer this question.
How much does 10,000 Trendyol products cost on each side?
Do the arithmetic in the unit each side actually charges, because they are not the same unit. On the leading Apify actor at the Free usage tier, 10,000 product listing records is 10,000 × $0.00099 = $9.90, and adding enrichment is another 10,000 × $0.0007 = $7.00, so $16.90 — drawn from your plan's platform allowance, which means the $5 free tier covers roughly 5,000 plain listing records and then stops until next month. At Gold the same job is $7.00 plus $5.00 = $12.00, but reaching Gold means being on the $199 Scale plan. On our side, 10,000 product/detail calls is 10,000 credits, which is exactly the Pro plan at $15 a month, or $7.50 a month equivalent paid yearly. So their Gold per-record rate beats our monthly Pro on that specific job, we win paid yearly or from Ultra up, and their Free-tier rate is dearer than our Pro. Neither figure includes finding the 10,000 ids in the first place, which on our side is 2 credits per page of rows. All figures read on 2026-09-24.
What about RapidAPI — isn't there a Trendyol API there?
There is one real one and a handful of abandoned listings, so it is worth knowing which is which. RapidAPI's own search for "trendyol" returns seven results. The only commercially serious one is Otapi Trendyol from Open Trade Commerce, which publishes Basic at $0 for 20 requests a DAY, Pro at $25 a month for 900 a day, Ultra at $150 for 5,500 a day and Mega at $350 for 15,000 a day — daily caps, not monthly, so a burst backfill hits the wall no matter what you paid — plus a second meter of $0.001 per MB of bandwidth after 10,240 MB a month. It offers search by image, which nothing else here does. The catch is on its own listing: an average latency of 29,358 milliseconds. A 29-second synchronous API is not really synchronous, which is the one thing it had over a batch actor. The remaining listings are hobby projects with no popularity score, including one last updated three years ago that offers 500,000 requests a month for free — free because nobody is using it.
Is there enough demand for this to be maintained?
By our own usage, yes, and here is the actual number rather than a claim. In the 30 days to 2026-09-23, counting successful calls only and excluding internal accounts, Trendyol was our third most-used engine by distinct customers: 25, behind Vinted at 28 and Amazon at 26. That is a demand signal about the category — not a revenue figure, not a market-share claim — and we are stating it as what it is. The independent signal points the same way: 26 Trendyol actors on the Apify Store on 2026-09-24 with 59,194 cumulative runs between them, the busiest carrying 37,330 of those and 44 distinct users in the last 30 days. Set against that, the open-source route is thin — 88 GitHub repositories match "trendyol scraper" and the most-starred has 10 stars and was last pushed on 2024-05-03.
Do you cache responses?
No, nowhere on the gateway. The cross-customer response cache was switched off globally on 2026-06-16 for exactly this reason: on a live-price product a cache hit hands the customer a stale number, which is the one thing they are paying to avoid. Every one of the 14 actions in our 2026-09-16 acceptance run reported cache_hit false. The practical consequence cuts both ways — you always get the live page, and you always pay for it, because there is no cheap repeat call. If you want yesterday's prices you have to have stored them yesterday.
Which Trendyol actions cost more than one credit?
Five. search, category/products, product/reviews, product/description and product/coupons cost 2 credits — the listing endpoints because a results page is large, the others because they cost us more upstream work. The remaining eleven are 1 credit each: product/detail, product/offers, product/variants, product/questions, product/similar, search/filters, seller/products, seller/info, seller/categories, seller/category-attributes and suggest. The rate limit is 30 requests per 3 seconds, applied per key and per IP. Credits roll over and never expire, and the same balance reaches the other 279 engines in the catalogue.
Are there Turkish vendors who sell this?
Plenty, but almost none of them sell an API. The Turkish market around Trendyol is full of seller-facing dashboards: price tracking, rival store monitoring, sales estimates and margin calculators, delivered as a web app you log into. SatışAnaliz is the one we found with fully published pricing — 0 TL free with 3 tracked products, 349 TL a month Starter with 15, 490 TL Pro with unlimited tracking and 799 TL Business, covering Trendyol, n11, PttAVM and Amazon TR — and it has no API. Trendyanaliz publishes a free tier of 5 tracked products but no paid prices. Several others publish a product page and no prices at all. If you are a seller who wants a screen to look at, one of these is probably a better fit than any API on this page. If you are a developer who needs the rows inside your own system, they are not an option, because there is nothing to call.
Source notes and hedges
Competitor pricing, quotas, free tiers and feature limits change. This page uses official public pages for product-positioning claims and keeps unstable commercial details general.
- Apify Store — Trendyol actors: Actor names, developer usernames, user and run counts, per-record charge events and 30-day run outcomes were read on 2026-09-24 from Apify's own public store API, api.apify.com/v2/store?search=trendyol, which is what backs every Apify number on this page. 26 actors had "trendyol" in the name or title, with 59,194 cumulative runs and 1,043 cumulative users.
- Trendyol Scraper | All-In-One, by fatihtahta: The most-used Trendyol actor: 417 total users, 37,330 total runs, 44 users in the last 30 days, created 2025-08-20, last modified 2026-09-15. Its published charge events are the per-record prices in the table above, and its 30-day outcomes (9,198 succeeded, 981 timed out, 18 aborted, 0 failed of 10,197) come from api.apify.com/v2/acts/fatihtahta~trendyol-scraper. Note a discrepancy we did not resolve: the store page shows a 5-star rating while the API reports zero reviews, so this page cites no rating.
- Apify pricing: Plan names, monthly prices, the 10% annual discount, the $5 recurring free allowance and the block-until-next-cycle wording were read here on 2026-09-24. These move: our own Apify comparison page recorded Starter at $29 on 2026-08-29 and it reads $19 today, and the leading actor's own per-record price has fallen roughly eightfold since August 2025.
- Apify pay-per-event documentation: Used only for the failed-run question. It contains a recommendation to developers — "don't bill users for what they can't access, for example if a run gets aborted" — and not a platform guarantee, which is why this page says the policy is not stated rather than asserting one.
- Trendyol Developer Portal (Partner Program): Used for what the official API is for, the Supplier ID plus API key and secret requirement, the mandatory User-Agent and its 403, the seller-scoped /integration/product/sellers/{sellerId}/products endpoint, the published per-service rate limits effective 2026-09-14 and the 2026-10-15 v1 deprecation. It publishes no price, so this page does not claim it is free. It is not the competitor here because it does not answer the same question.
- Otapi Trendyol on RapidAPI: Tier prices, the per-day quotas, the bandwidth surcharge and the 29,358 ms average latency were read from the listing's own pricing page on 2026-09-24. RapidAPI renders client-side, so this needed a real browser rather than a plain fetch — worth stating, since it means the numbers came from the rendered vendor page and not from a third-party summary.
- Bright Data — Trendyol dataset: Read 2026-09-24. Quoted for its own FAQ answer — "No, we do not have this data immediately available" — which is the honest reason a Trendyol dataset page is not a Trendyol dataset. Their scraper is priced per page load rather than per record, which is a third unit again.
- Oxylabs — Trendyol scraper page: ⚠️ Read indirectly on 2026-09-24: a direct TLS connection to oxylabs.io failed from our environment, so this page was fetched through a text proxy. The content is Oxylabs' own, but because the fetch was not direct we have deliberately kept their prices out of the pricing block and cite only the structural point — Trendyol is served through their generic Universal Source, returning raw HTML rather than a dedicated Trendyol parser. Verify it yourself before relying on it.
- SatışAnaliz: Read 2026-09-24 for the one Turkish Trendyol price-tracking vendor we found with fully published pricing: free with 3 tracked products, 349 TL/ay Starter with 15, 490 TL/ay Pro with unlimited, 799 TL/ay Business. Dashboard only — no API — which is why it is context on this page and not a competitor.
- GitHub code search: 88 repositories matched on 2026-09-24 via the GitHub search API. Top result by stars: yusufesatt/trendyol-category-scraper, 10 stars, last pushed 2024-05-03. No repository in the top ten exceeded 10 stars. We did not run any of them, so this page says nothing about whether they still work.
- ReefAPI live catalog: 280 engines, 2,074 actions, unit "credits", default price 1, the 30-requests-per-3-seconds rate limit and Trendyol's 16 actions were read from this endpoint on 2026-09-24. It is public and unauthenticated, so every count on this page can be re-checked against it.
- What we could not verify, and therefore left out: No figure appears on this page for: ScraperAPI's pricing (its page returned truncated content twice), Zyte's Trendyol support, CollectAPI's Trendyol endpoint, any official Trendyol affiliate or ads API (the affiliate programme exists, but we found no developer documentation), and whether the open-source repositories still function. Where a number could not be read off a vendor's own page it is absent rather than estimated.
Try the relevant ReefAPI endpoints with 1,000 free credits, or open the docs to inspect params, examples and live proof before wiring them into production.