{
  "openapi": "3.0.1",
  "info": {
    "title": "Trendyol Scraper",
    "description": "[💰 $1.0 / 1K] Extract products and customer reviews from Trendyol — Turkey's largest marketplace. Search by keyword, paste category or seller pages, or supply direct product URLs. Reviews are opt-in and emitted as separate dataset rows.",
    "version": "1.0",
    "x-build-id": "T2eGBJ93Z0lZQkt5f"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/solidcode~trendyol-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-solidcode-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/solidcode~trendyol-scraper/runs": {
      "post": {
        "operationId": "runs-sync-solidcode-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/solidcode~trendyol-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-solidcode-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": {
          "searchQueries": {
            "title": "Search Keywords",
            "type": "array",
            "description": "Trendyol product search terms (e.g., 'erkek spor ayakkabı', 'kahve makinesi', 'iPhone 15'). Each keyword runs as a separate search. The same keyword listed twice runs once and is charged once. Leave empty if you only want to use URLs below.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Trendyol URLs",
            "type": "array",
            "description": "Paste Trendyol URLs directly. Accepts search result pages (trendyol.com/sr?q=...), category pages (trendyol.com/<category>-x-c<id>), seller / merchant pages (trendyol.com/magaza/...), and direct product URLs — both the full trendyol.com/<brand>/<product>-p-<id> form and the short trendyol.com/p/<id> form. Mix any types in one list. The price, rating and badge filters below apply to every link you paste, including direct product links — a link that does not match them is skipped and named in the run log. Paste the whole address, not just the product number — Trendyol numbers sellers the same way, so a bare number is ambiguous. The same source given twice is scanned and charged once, whichever way it is written: two spellings of one product link (the full link and the short /p/<id> one), or the same search, category or seller page repeated with a trailing slash, without the https://, or with different tracking parameters on the end. Every repeat is named in the run log.",
            "items": {
              "type": "string"
            }
          },
          "maxProductsPerSource": {
            "title": "Maximum products per source",
            "minimum": 0,
            "type": "integer",
            "description": "Cap on the number of product rows returned per search keyword, category URL, or seller URL. Leave empty and each source stops at 100 products. Direct product URLs always return exactly one product and are unaffected by this cap. Set to 0 for unlimited — a source then runs until it hits our safety limit, which in live testing came out between about 2,400 and 4,700 products depending on the sort order and on how often Trendyol repeats products between result pages (repeats are never billed twice). When the price, rating or badge filters are on we keep looking past your cap to try to fill it, scanning up to five times as many products before giving up."
          },
          "includeReviews": {
            "title": "Also extract customer reviews",
            "type": "boolean",
            "description": "When on, the actor fetches customer reviews for every product it returns and emits them as separate rows (recordType=\"review\"). Off by default to keep runs lean — reviews are billed at a separate per-row rate."
          },
          "maxReviewsPerProduct": {
            "title": "Maximum reviews per product",
            "minimum": 0,
            "type": "integer",
            "description": "Cap on review rows extracted from each product. Leave empty for 50 per product. Ignored when 'Also extract customer reviews' is off. Set to 0 to take every review Trendyol serves for a product (thousands, on popular items). Trendyol stops serving after roughly 5,000 reviews on any one product, however many the product page counts, so 0 means 'up to about 5,000'."
          },
          "sort": {
            "title": "Sort order",
            "enum": [
              "best_match",
              "newest",
              "price_asc",
              "price_desc",
              "best_seller",
              "most_favorited",
              "most_rated"
            ],
            "type": "string",
            "description": "Result ordering for search keywords and category URLs. 'Best match' is Trendyol's default ranking. Ignored when scraping direct product URLs. Note on 'Newest first': brand-new listings have not collected shopper activity yet, so rating, review count and favorite count come back empty on almost every row (about 1 in 100 carries them, against 99 in 100 on the other sort orders). That is what Trendyol publishes for new arrivals, not a gap in the data. Pick 'Best sellers' or 'Most favorited' when you need those numbers."
          },
          "minPrice": {
            "title": "Minimum price (TL)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include products priced at or above this value in Turkish Lira. Leave empty for no minimum."
          },
          "maxPrice": {
            "title": "Maximum price (TL)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include products priced at or below this value in Turkish Lira. Leave empty for no maximum."
          },
          "minRating": {
            "title": "Minimum star rating",
            "enum": [
              "any",
              "3",
              "4",
              "4.5"
            ],
            "type": "string",
            "description": "Only include products whose average customer rating is at least this many stars. Leave empty for no minimum."
          },
          "freeShippingOnly": {
            "title": "Free shipping only",
            "type": "boolean",
            "description": "Only include products eligible for free shipping."
          },
          "fastDeliveryOnly": {
            "title": "Fast delivery only",
            "type": "boolean",
            "description": "Only include products carrying Trendyol's Hızlı Teslimat (fast delivery) badge. Turkey storefront only — Trendyol never marks fast delivery on the International or Azerbaijan storefronts, so this filter is switched off automatically there and the run tells you it did. On Turkey, fast-moving categories like phones and fashion see around 8 in 10 products qualify; bulky ones like furniture fewer than 1 in 10."
          },
          "discountedOnly": {
            "title": "Discounted products only",
            "type": "boolean",
            "description": "Only include products currently on sale (showing a strike-through original price)."
          },
          "country": {
            "title": "Storefront",
            "enum": [
              "tr",
              "az",
              "international"
            ],
            "type": "string",
            "description": "Which Trendyol storefront to target. The default Turkey marketplace (trendyol.com) is the broadest catalog with all reviews available. Other storefronts have smaller catalogs and different currencies. The International storefront sells only part of the Turkish catalogue, so a product link you copied from trendyol.com may not exist there — the run says so instead of returning an empty result."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}