Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The supported way to collect Trendyol catalog or order data is Trendyol’s Partner/Marketplace API, using credentials issued to an authorized seller or integration partner. It is not a workaround for public-site scraping: Trendyol’s terms restrict screen-scraping software, crawlers, robots and other automated extraction without prior written consent.

This guide shows how to authenticate, select Product V2 operations, paginate safely, handle the documented rate limit, and build a small exporter in cURL, Python and Node.js. It also explains when a managed provider may reduce maintenance and what it cannot change about your data rights.

1. Confirm that your use is authorized

Before writing code, identify whose Trendyol account and data you will use. The official integration route is intended for participating companies, sellers and their approved integrators. Product, inventory, price, order and invoice operations are exposed for those business workflows.

Do not treat an API client as permission to copy any public Trendyol page. Trendyol says users may not use screen-scraping software, automated programs, robots, web crawlers, spiders, data-mining or other extraction tools without prior written consent. Its terms also restrict copying, publishing or using platform content without authorization. If your project is not covered by a seller account or Partner Program relationship, obtain written permission before collecting data.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Decide what your application actually needs

  • Catalog management: product creation and updates, category attributes, archive state and batch-result checks.
  • Catalog reads: seller-scoped product filters, brands and categories.
  • Commercial synchronization: inventory, price, orders and invoices.
  • Enrichment: approved metadata such as descriptions or media needed by the seller workflow.

Limit storage and reuse to the fields your account and agreement authorize. A smaller data model is easier to secure, audit and keep within the API contract.

2. Get the three credentials and keep environments separate

Trendyol’s seller panel provides an integration-details page containing a supplier ID, API key and API secret. Stage and production environments have separate credentials; use the set that matches the endpoint and account you are testing.

Credential Purpose Safe handling
Supplier ID Identifies the seller account Can appear in configuration, but validate it per environment
API key Part of request authentication Store in an environment variable or secret manager
API secret Secret material used with the key Never commit to Git, logs or client-side code

Set a recognizable user agent that identifies your seller’s own integration or your integrator relationship. Do not share one seller’s credentials across unrelated customers.

3. Understand the required request headers

Every call must use HTTPS, authentication and a User-Agent header. Trendyol’s authorization documentation states: All requests to Trendyol Partner API must have Auth and User-Agent information in the Header. Missing User-Agent information can produce HTTP 403.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The examples below use HTTP Basic authentication with the credential pair supplied for your integration and send a descriptive User-Agent. Follow the exact credential combination and header format shown in your seller-panel documentation; do not substitute a public-page cookie or browser session.

Minimal cURL request

export SUPPLIER_ID='your_supplier_id'
export API_KEY='your_api_key'
export API_SECRET='your_api_secret'

curl --fail-with-body --silent --show-error 
  --user "$SUPPLIER_ID:$API_KEY" 
  -H "User-Agent: $SUPPLIER_ID - Self Integration" 
  "https://apigw.trendyol.com/integration/product/brands"

The brands operation is a useful authentication smoke test. A successful response confirms that the account can reach Product V2 metadata; it does not grant access to seller data that the account is not entitled to use.

4. Choose Product V2 operations instead of guessing URLs

Product V2 is the current surface for product workflows. The official endpoint index lists brand and category discovery, category-attribute schemas, seller product create/update/filter operations, inventory and price updates, batch-request results, archive state, buybox information and video services. Start with the current mapping in Trendyol’s product API documentation.

Task Operation family Implementation note
Discover brands /integration/product/brands Use for metadata lookups and validation.
Discover categories Product categories Cache stable identifiers, then refresh periodically.
Validate a listing schema Category attributes Build payload validation from the returned attribute definitions.
Read a seller catalog Seller product filter routes Use the pagination and filter parameters documented for your account.
Change stock or price Inventory and price updates Separate write queues from read jobs and record request IDs.
Submit product changes Create/update and batch-result routes Poll the documented result operation before declaring success.

Several Product V1 services are scheduled for retirement on 15 October 2026. New integrations should map their requirements to Product V2 and verify the current route before deploying code that still references V1.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

5. A reusable Python exporter

The following script is intentionally endpoint-configurable. Set PRODUCT_ENDPOINT to the seller product-filter URL shown for your account in Product V2 documentation, then adjust query names to that operation’s schema. The loop demonstrates pagination, timeout handling, 429 backoff and structured output without inventing an endpoint path.

import json
import os
import random
import time
from pathlib import Path

import requests

SUPPLIER_ID = os.environ["SUPPLIER_ID"]
API_KEY = os.environ["API_KEY"]
PRODUCT_ENDPOINT = os.environ["PRODUCT_ENDPOINT"]
USER_AGENT = os.getenv("TRENDYOL_USER_AGENT", f"{SUPPLIER_ID} - Self Integration")
PAGE_SIZE = int(os.getenv("PAGE_SIZE", "50"))
MAX_PAGES = int(os.getenv("MAX_PAGES", "100"))

session = requests.Session()
session.auth = (SUPPLIER_ID, API_KEY)
session.headers.update({
    "User-Agent": USER_AGENT,
    "Accept": "application/json",
})

def get_page(page: int):
    params = {"page": page, "size": PAGE_SIZE}
    for attempt in range(6):
        response = session.get(PRODUCT_ENDPOINT, params=params, timeout=30)
        if response.status_code == 429:
            delay = min(60, 2 ** attempt) + random.random()
            time.sleep(delay)
            continue
        response.raise_for_status()
        return response.json()
    raise RuntimeError("The endpoint continued returning HTTP 429 after retries")

rows = []
for page in range(MAX_PAGES):
    payload = get_page(page)
    items = payload.get("content") or payload.get("products") or []
    if not items:
        break
    rows.extend(items)
    # Stop when the server returns a short page; use the documented field
    # names for your chosen Product V2 operation if they differ.
    if len(items) < PAGE_SIZE:
        break
    time.sleep(0.25)

Path("trendyol-products.json").write_text(
    json.dumps(rows, ensure_ascii=False, indent=2), encoding="utf-8"
)
print(f"Wrote {len(rows)} records")

Install the dependency with python -m pip install requests. Product operations can use different response property names, so inspect one authorized response and replace the defensive content/products lookup with the documented field. Do not assume that a short page is the only end condition if the operation supplies an explicit total or continuation token.

6. Equivalent Node.js request

This example performs one authorized GET. It is suitable for a worker that adds its own pagination and queueing.

const supplierId = process.env.SUPPLIER_ID;
const apiKey = process.env.API_KEY;
const endpoint = process.env.PRODUCT_ENDPOINT;

if (!supplierId || !apiKey || !endpoint) {
  throw new Error('Set SUPPLIER_ID, API_KEY and PRODUCT_ENDPOINT');
}

const basic = Buffer.from(`${supplierId}:${apiKey}`).toString('base64');
const url = new URL(endpoint);
url.searchParams.set('page', '0');
url.searchParams.set('size', '50');

const res = await fetch(url, {
  headers: {
    'Authorization': `Basic ${basic}`,
    'User-Agent': `${supplierId} - Self Integration`,
    'Accept': 'application/json'
  }
});

if (res.status === 429) {
  throw new Error('Rate limit reached; retry with exponential backoff');
}
if (!res.ok) {
  throw new Error(`Trendyol returned ${res.status}: ${await res.text()}`);
}
const data = await res.json();
console.log(JSON.stringify(data, null, 2));

Use the credential and authorization format specified for your environment if your integration documentation differs. Keep the secret out of browser bundles and logs.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

7. Rate limits, pagination and reliability

The documented limit is 50 requests to the same endpoint in 10 seconds. The 51st request can return HTTP 429. This is an endpoint-specific window, not permission to fire unlimited calls across every route.

Design a polite collector

  1. Put requests behind a queue keyed by endpoint.
  2. Track timestamps and keep each endpoint below 50 calls per 10-second window.
  3. On 429, honor any server retry information and use exponential backoff with jitter.
  4. Persist the last successful page, filter and timestamp so a worker can resume after a crash.
  5. Log status code, endpoint, page, request duration and a correlation identifier, but redact credentials and sensitive payload fields.
  6. Cache brand, category and attribute metadata; refresh it on a schedule instead of for every product.

For writes, use idempotent job identifiers where the operation supports them and poll batch-result endpoints rather than resubmitting blindly. Separate transient failures (timeouts, 429 and 5xx responses) from permanent authorization or validation errors.

8. Troubleshooting common failures

Symptom Likely cause Fix
HTTP 401 Wrong supplier ID/key pair, wrong environment, or malformed Basic authentication Regenerate or copy credentials from the correct seller-panel integration page; test with the brands endpoint.
HTTP 403 Missing or unacceptable User-Agent, or the account is not authorized for that operation Send a descriptive User-Agent on every request and confirm the seller’s permissions.
HTTP 429 More than 50 calls to the same endpoint in 10 seconds Throttle per endpoint, back off with jitter and resume from the last saved page.
HTTP 400 or validation errors Incorrect category attributes, enum values, pagination names or write payload Fetch the category-attribute schema and validate before submission.
Empty results Wrong seller scope, filters, page index or an account with no matching products Remove optional filters, verify seller identity and inspect the raw response before changing pagination.
Requests time out Network path, overloaded worker or an overly broad operation Use a finite timeout, retry only safe reads, reduce page size and monitor latency.
Batch appears to succeed but data is unchanged Asynchronous processing is still pending Poll the documented batch-result operation and record its final status.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

9. Managed APIs: when they help and what to verify

A hosted provider can save you from maintaining authentication adapters, pagination code and parser changes, but it does not grant rights that your Trendyol agreement does not provide. ReefAPI publicly documents Trendyol JSON endpoints for seller products, seller information, product descriptions, search and catalog enrichment. Its seller-products example accepts a seller ID or store URL and includes pagination, page limits, sorting, price ranges and brand filters.

Treat ReefAPI as a vendor to evaluate, not as an endorsement. Before sending data through it, confirm current pricing, retention, data rights, geographic availability, reliability commitments, rate limits and referral terms directly with ReefAPI. Compare any hosted option with the official integration on authorization, endpoint coverage, freshness, filtering, operational maintenance, observability, cost and vendor dependency.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

10. Or skip the browser setup

If your requirement is a visual snapshot of a Trendyol page rather than structured seller data, ScreenshotNeo can return an image or PDF through one HTTPS request. It is not a replacement for Trendyol’s authorized Partner API and should not be used to bypass Trendyol’s terms.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

See the ScreenshotNeo API documentation for options and adapt only the target URL. Before capture, it accepts cookie or consent banners and removes more than 60 known consent platforms, newsletter popups and chat widgets; each cleanup step can be disabled. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads and cache hits are not billed, and response headers identify the page verdict and billing status. It also provides an MCP server with take_screenshot, get_page_info and capture_pdf tools for Claude, Cursor and other MCP clients.

The Free plan includes 1,000 screenshots per month with no card. Paid plans start at $5 for 3,000 shots; every feature is available on every plan. Create a free ScreenshotNeo account if a clean visual capture is the separate task you need.

11. A production checklist

  • Written authorization covers the seller, fields, purpose and retention period.
  • Stage and production credentials are separated and stored in a secret manager.
  • Every request includes the required authentication and User-Agent headers.
  • Product V2 routes and schemas are confirmed against the current documentation.
  • Pagination, queueing, backoff and a per-endpoint 50-per-10-second budget are implemented.
  • 429, 401, 403, validation, timeout and asynchronous batch states are observable.
  • Exports contain only fields your account and agreements authorize.
  • V1 retirement exposure is reviewed before the 15 October 2026 date.

Frequently Asked Questions

Can I use a normal Trendyol customer account for Partner API calls?

The documented integration is for participating sellers, companies and approved integrators. A standard shopping account does not establish the authorization required for seller-scoped operations.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Should I scrape product pages if the API lacks a field?

No. Request the field through the seller or Partner relationship, or obtain prior written consent for any separate extraction. Public visibility is not the same as permission to automate copying.

How should I schedule a large historical export?

Run it as a resumable, queued job: checkpoint each page, throttle each endpoint below its documented limit, and retry transient failures with exponential backoff rather than parallel bursts.

Is a hosted scraper automatically compliant?

No. A vendor can change the technical operation but cannot transfer your data rights. Confirm that your Trendyol agreement permits the collection and the vendor’s processing, storage and reuse.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.