{
  "openapi": "3.0.1",
  "info": {
    "title": "All-in-One TikTok Shop Scraper",
    "description": "Collects TikTok Shop products, sellers, categories, reviews, creator videos, trending items and recommendations through a single Actor. The mode is selected per run; each mode accepts its own identifier and returns that dataset's fields.",
    "version": "0.1",
    "x-build-id": "cfMqCAcNXT3dADEX7"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/thenetaji~tiktok-shop-all-in-one-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-thenetaji-tiktok-shop-all-in-one-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/thenetaji~tiktok-shop-all-in-one-scraper/runs": {
      "post": {
        "operationId": "runs-sync-thenetaji-tiktok-shop-all-in-one-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/thenetaji~tiktok-shop-all-in-one-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-thenetaji-tiktok-shop-all-in-one-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",
        "required": [
          "scraperType"
        ],
        "properties": {
          "scraperType": {
            "title": "What to collect",
            "enum": [
              "productDetail",
              "searchProducts",
              "categoryProducts",
              "shopInfo",
              "sellerProducts",
              "productReviews",
              "reviewInsights",
              "listingHealth",
              "showcaseVideos",
              "homeCarousels",
              "youMayLike",
              "moreFromShop",
              "topReviewed",
              "frequentlyBoughtTogether",
              "recommendedForYou",
              "recommendedShops",
              "relatedTerms"
            ],
            "type": "string",
            "description": "Choose the dataset for this run, then fill in the section for that mode below.",
            "default": "productDetail"
          },
          "product_ids": {
            "title": "Products",
            "type": "array",
            "description": "One or more TikTok Shop products to fetch. Paste product page links, or product IDs — both work, and you can mix them.",
            "items": {
              "type": "string"
            }
          },
          "enrichProductDetails": {
            "title": "Enrich With Product Details",
            "type": "boolean",
            "description": "Add the full product page to every row — description, all variants, shop profile, a page of reviews with the star breakdown, and the category path. This makes one extra request per product.",
            "default": false
          },
          "keyword": {
            "title": "Search Keyword",
            "type": "string",
            "description": "Product keyword to search for on TikTok Shop."
          },
          "includeKeywordCoverage": {
            "title": "Score Keyword Coverage",
            "type": "boolean",
            "description": "Check the title against TikTok's own related search terms for the product's keyword and flag high-intent terms missing from it. Needs Search Keyword. Adds one request per distinct keyword in the run, shared across products that use it.",
            "default": true
          },
          "includeCompetitive": {
            "title": "Score Competitive Position",
            "type": "boolean",
            "description": "Compare the product's price and rating against the top search results for its keyword, and flag if it does not appear in them at all. Needs Search Keyword. Adds one request per distinct keyword in the run, shared across products that use it.",
            "default": true
          },
          "category_id": {
            "title": "Category",
            "type": "string",
            "description": "A TikTok Shop category page link, or a category ID."
          },
          "seller_id": {
            "title": "Seller ID",
            "type": "string",
            "description": "A TikTok Shop shop link, or a seller ID."
          },
          "includeShopSignal": {
            "title": "Score Shop Signal",
            "type": "boolean",
            "description": "Add the seller's shop-level rating to the report. Adds one request per distinct shop in the run, shared across products from the same shop.",
            "default": true
          },
          "reviewSort": {
            "title": "Sort Reviews By",
            "enum": [
              "recommended",
              "most_recent"
            ],
            "type": "string",
            "description": "Order reviews are returned in. Most recent walks the newest first — the right choice for tracking sentiment over time.",
            "default": "recommended"
          },
          "reviewFilter": {
            "title": "Filter Reviews",
            "enum": [
              "all",
              "5_star",
              "4_star",
              "3_star",
              "2_star",
              "1_star",
              "with_media",
              "verified_purchase"
            ],
            "type": "string",
            "description": "Narrow to one star rating, to reviews carrying photos or video, or to confirmed purchases. Only one filter applies at a time.",
            "default": "all"
          },
          "reviewSampleSize": {
            "title": "Review Sample Size",
            "minimum": 0,
            "type": "integer",
            "description": "How many recent reviews to pull per product before analysing them. A larger sample surfaces quieter themes but costs one larger request per product. 0 asks for the upstream ceiling of 500.",
            "default": 100
          },
          "includeCreators": {
            "title": "Score Creator Presence",
            "type": "boolean",
            "description": "Check how many creators are promoting the product on TikTok Shop, their combined view count, and whether any carry a paid-partnership label. Adds one request per product.",
            "default": true
          },
          "includeCategoryBenchmark": {
            "title": "Score Category Benchmark",
            "type": "boolean",
            "description": "Compare the product's rating against the best-reviewed items TikTok Shop surfaces on its own page. Adds one request per product.",
            "default": true
          },
          "region": {
            "title": "Region",
            "enum": [
              "US",
              "GB",
              "SG",
              "MY",
              "PH",
              "TH",
              "VN",
              "JP",
              "MX"
            ],
            "type": "string",
            "description": "Which TikTok Shop storefront to read. This changes the products, prices, and currency you get back — not just the display language.",
            "default": "US"
          },
          "maxItems": {
            "title": "Max Results",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of products to save. Set 0 for no limit.",
            "default": 100
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}