{
  "openapi": "3.0.1",
  "info": {
    "title": "Trendyol Scraper | Prices, All Sellers, Reviews & Monitor",
    "description": "Trendyol scraper for TRY prices with cart discounts, every seller offer (buy-box), stock, variants and reviews. Paste any category, brand, store, search or product URL. Changes-only mode makes it a daily price and stock monitor. Pay per result.",
    "version": "1.0",
    "x-build-id": "vHdp6T4UXdK5RrMPi"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/atesen-software~trendyol-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-atesen-software-trendyol-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/atesen-software~trendyol-scraper/runs": {
      "post": {
        "operationId": "runs-sync-atesen-software-trendyol-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/atesen-software~trendyol-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-atesen-software-trendyol-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "startUrls": {
            "title": "Trendyol URLs",
            "type": "array",
            "description": "Trendyol category (e.g. https://www.trendyol.com/fritoz-x-c1055), brand, brand + category, store (/magaza/...-m-123), search (/sr?q=...) or product (...-p-123) URLs. In JSON, use objects such as {\"url\":\"https://www.trendyol.com/fritoz-x-c1055\"}. Supply URLs, searchQueries, or both. Category, brand and search URL filters and sorting are preserved; store URLs preserve seller ID and sorting. Product URLs retain merchantId and boutiqueId. Only the Turkish storefront is supported.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "searchQueries": {
            "title": "Search keywords",
            "type": "array",
            "description": "Keywords to search on Trendyol, one per line in Console or as a JSON string array (e.g. [\"airfryer\", \"kahve makinesi\"]). Can be combined with startUrls. Empty and duplicate keywords are ignored; at least one non-empty keyword or URL is required.",
            "items": {
              "type": "string"
            }
          },
          "maxProductsPerSource": {
            "title": "Max products per URL / keyword",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum products collected per listing URL or search keyword, not a run-wide limit. Range: 1–10000; API default: 50; Console prefill: 20. Listing pages contain up to 36 products. Products are deduplicated across the run, so overlapping sources, empty listings or blocked requests may return fewer products. A product URL selects one product.",
            "default": 50
          },
          "sortBy": {
            "title": "Sort listings by",
            "enum": [
              "RELEVANCE",
              "PRICE_ASC",
              "PRICE_DESC",
              "NEWEST",
              "BEST_SELLER",
              "MOST_FAVOURITE",
              "MOST_RATED"
            ],
            "type": "string",
            "description": "Listing order for keyword searches and URLs without an existing sst sorting parameter. An explicit sort in the URL takes precedence. API default: RELEVANCE; Console prefill: BEST_SELLER. Does not sort product URLs or reviews.",
            "default": "RELEVANCE"
          },
          "skipSponsored": {
            "title": "Skip sponsored products",
            "type": "boolean",
            "description": "Exclude listing cards identified as sponsored ads. Default: false, including sponsored cards. Applies to listings, not direct product URLs.",
            "default": false
          },
          "includeProductDetails": {
            "title": "Add product details (all sellers, attributes, variants)",
            "type": "boolean",
            "description": "Fetch product-page data: available seller offers and ratings (including the buy-box winner), barcode, attributes, variants with stock, favourite count and category path. Missing source fields remain null or empty; completeness of all marketplace sellers is not guaranteed. Adds a product-details event per saved product. Does not enable individual reviews or review analytics.",
            "default": false
          },
          "includeReviewSummary": {
            "title": "Add review summary",
            "type": "boolean",
            "description": "Fetch review analytics into reviewSummary: available 1–5 star distribution, aspect sentiment (e.g. 'Kalite 94% positive'), size feedback and Trendyol's AI summary. Requires product/review requests, but adds no review-summary billing event. Does not enable individual reviews. Missing or unavailable summaries may be null.",
            "default": false
          },
          "includeReviews": {
            "title": "Scrape reviews",
            "type": "boolean",
            "description": "Fetch individual reviews into each product's nested reviews array, capped by maxReviewsPerProduct and ordered by reviewSort. Each saved review adds a review event. Does not enable reviewSummary. Expand reviews for CSV/Excel; filter blank reviewId rows for a review-only sheet. Reviewer names, height and weight are omitted. If the review API is unavailable, inspect reviewsError; an empty array does not prove there are no reviews.",
            "default": false
          },
          "maxReviewsPerProduct": {
            "title": "Max reviews per product",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum individual reviews saved per product when includeReviews is true. Range: 1–5000; default: 20. Ignored when reviews are disabled. Products with fewer available reviews return fewer; this is not a run-wide limit.",
            "default": 20
          },
          "reviewSort": {
            "title": "Review order",
            "enum": [
              "RELEVANCE",
              "NEWEST"
            ],
            "type": "string",
            "description": "Order requested from the review API when includeReviews is true: RELEVANCE (default) or NEWEST. Independent of the product listing sortBy option.",
            "default": "RELEVANCE"
          },
          "priceMonitorKey": {
            "title": "Price monitor name",
            "type": "string",
            "description": "Optional monitor name, e.g. \"airfryer-watch\". Adds previousPrice, priceChange, priceChangePercent and isNewInMonitor using the last observed price for each product under that name. Reuse the same name for the same watch list. Spaces and unsupported characters become hyphens; names are limited to 100 characters. Empty disables price-history fields; changesOnly can still derive its own snapshot key from URLs and keywords. Scheduling is configured separately in Apify Console."
          },
          "changesOnly": {
            "title": "Changes only (price & stock monitor)",
            "type": "boolean",
            "description": "Default false: save the full product output. True: compare against the saved snapshot selected by priceMonitorKey, or a key derived from URLs and keywords, and save only new, price_changed, stock_changed, variants_changed, unavailable or back_in_stock products. The first run saves all products as new. Removed products produce free removed rows after a 404 or absence from two complete listing runs. Unchanged products are skipped and not charged. Enable product details to compare variants; configure a schedule separately.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Default: {\"useApifyProxy\":false}, using a direct connection. Requests use Chromium. A proxy is used only when explicitly configured. Apify Proxy can incur additional charges; useApifyProxy:false disables it, but custom proxyUrls, if supplied, are still used. Automatic fallback is controlled separately by autoProxyFallback.",
            "default": {
              "useApifyProxy": false
            }
          },
          "autoProxyFallback": {
            "title": "Retry blocked pages with another connection",
            "type": "boolean",
            "description": "Default false. On Apify, true allows one retry of blocked requests through paid Apify Proxy RESIDENTIAL (TR) when the initial connection is direct, or through a direct connection when the configured proxy was blocked. May incur proxy charges. Keep false when paid proxy usage is not authorized. Has no effect in local runs.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Max parallel requests",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Maximum concurrent crawler requests (1–16; default 4). Higher values may increase rate limiting and memory usage. Actual parallelism also depends on available browser sessions and run memory.",
            "default": 4
          },
          "maxBrowserSessions": {
            "title": "Browser sessions",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Maximum browser sessions (1–10; default 3), capped by available run memory (about 200 MB per session plus overhead). Sessions have separate browser contexts; a proxy connection is assigned per session only when a proxy is explicitly configured. Direct sessions do not provide distinct proxy IPs.",
            "default": 3
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}