{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Shop Scraper: Products, Prices, Sales & Stock",
    "description": "Scrape TikTok Shop by keyword, store URL or product URL. Get prices, discounts, units sold, ratings, seller data and, optionally, SKU stock, categories, reviews and creator videos. Failed lookups are free.",
    "version": "1.1",
    "x-build-id": "uYIru3zk1ooTqAw4O"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/datara~tiktok-shop-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-datara-tiktok-shop-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/datara~tiktok-shop-scraper/runs": {
      "post": {
        "operationId": "runs-sync-datara-tiktok-shop-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/datara~tiktok-shop-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-datara-tiktok-shop-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": "Keywords to search on TikTok Shop, e.g. \"lip gloss\" or \"phone case\". Each keyword is a separate source.",
            "items": {
              "type": "string"
            }
          },
          "storeUrls": {
            "title": "Store URLs",
            "type": "array",
            "description": "TikTok Shop store pages, e.g. https://www.tiktok.com/shop/store/goli-nutrition/7495794203056835079. Returns the store's product catalogue.",
            "items": {
              "type": "string"
            }
          },
          "productUrls": {
            "title": "Product URLs or IDs",
            "type": "array",
            "description": "TikTok Shop product pages (https://www.tiktok.com/shop/pdp/...), shop.tiktok.com/view/product/... links, or bare product IDs. Always returns full details.",
            "items": {
              "type": "string"
            }
          },
          "storeSort": {
            "title": "Store sort order",
            "enum": [
              "top",
              "new_releases"
            ],
            "type": "string",
            "description": "How to order products from store URLs.",
            "default": "top"
          },
          "region": {
            "title": "Region",
            "enum": [
              "US",
              "GB",
              "DE",
              "FR",
              "IT",
              "ES",
              "IE",
              "ID",
              "MY",
              "MX",
              "PH",
              "SG",
              "TH",
              "VN",
              "BR",
              "JP"
            ],
            "type": "string",
            "description": "TikTok Shop region. US is reliable. Other regions may return partial or no data, and product details are US-only. Failed lookups are not charged.",
            "default": "US"
          },
          "maxProductsPerSource": {
            "title": "Max products per keyword or store",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Stops paging a keyword or store once this many products are saved.",
            "default": 50
          },
          "maxProducts": {
            "title": "Max products in total",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Hard cap for the whole run, across all sources. The run stops when it is reached.",
            "default": 200
          },
          "includeDetails": {
            "title": "Fetch full details for search and store results",
            "type": "boolean",
            "description": "Adds SKU variants and stock, categories, seller location, sample reviews and creator videos to every search and store result. Charged at the detailed-product price instead of the basic one. Product URLs always get full details.",
            "default": false
          },
          "includeRelatedVideos": {
            "title": "Include creator videos",
            "type": "boolean",
            "description": "For detailed products, include the TikTok videos promoting the product (views, likes, creator, whether commission was paid).",
            "default": true
          },
          "includeReviews": {
            "title": "Include sample reviews",
            "type": "boolean",
            "description": "For detailed products, include the reviews shown on the product page.",
            "default": true
          },
          "dedupe": {
            "title": "Skip duplicate products",
            "type": "boolean",
            "description": "If the same product turns up in several keywords or stores, save (and charge for) it once.",
            "default": true
          },
          "includeFailures": {
            "title": "Save failed lookups",
            "type": "boolean",
            "description": "Save a free row for each source or product that returned nothing or failed, with the reason.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many product-detail requests run in parallel.",
            "default": 5
          },
          "saveRawResponses": {
            "title": "Debug: save raw API responses",
            "type": "boolean",
            "description": "Saves the first 10 raw upstream responses to the key-value store (RAW_01_search, ...). For troubleshooting only.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}