{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Search Scraper: Keyword Videos by Region, No Login",
    "description": "Scrape TikTok search results by keyword. One row per video with views, likes, comments, shares, creator stats, music and hashtags. Real country and language targeting, server-side sort and date filters. No login, no cookies, no API key. Pay per result.",
    "version": "0.0",
    "x-build-id": "7dmyqIOmVf3SoOjXS"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/stanvanrooy6~tiktok-search-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-stanvanrooy6-tiktok-search-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/stanvanrooy6~tiktok-search-scraper/runs": {
      "post": {
        "operationId": "runs-sync-stanvanrooy6-tiktok-search-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/stanvanrooy6~tiktok-search-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-stanvanrooy6-tiktok-search-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": [
          "keywords"
        ],
        "properties": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Search queries, one per line. Each keyword is searched separately and every video row carries the keyword it matched.",
            "items": {
              "type": "string"
            }
          },
          "region": {
            "title": "Region",
            "enum": [
              "US",
              "GB",
              "DE",
              "FR",
              "ES",
              "IT",
              "NL",
              "BE",
              "AT",
              "CH",
              "IE",
              "PT",
              "PL",
              "SE",
              "NO",
              "DK",
              "CA",
              "MX",
              "BR",
              "AU",
              "NZ",
              "JP",
              "KR",
              "ID",
              "PH",
              "TH",
              "VN",
              "MY",
              "SG",
              "IN",
              "AE",
              "SA",
              "TR",
              "ZA",
              "NG"
            ],
            "type": "string",
            "description": "Country whose TikTok results you want. The search is sent as the TikTok app configured for that country (region and app language), which is what decides the results server side. DE returns German creators and captions, JP Japanese ones, and so on.",
            "default": "US"
          },
          "language": {
            "title": "App language",
            "type": "string",
            "description": "Language code sent as the app language (for example en, de, fr, es, ja). auto picks the main language of the region. Affects which captions and creators rank.",
            "default": "auto"
          },
          "maxResults": {
            "title": "Max results per keyword",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many unique videos per keyword. 0 means everything TikTok will serve (typically 200 to 300 per keyword with deep search on).",
            "default": 100
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "relevance",
              "likes",
              "newest"
            ],
            "type": "string",
            "description": "Server-side sort of the search results, the same options as the TikTok app filter sheet.",
            "default": "relevance"
          },
          "publishedWithin": {
            "title": "Published within",
            "enum": [
              "all",
              "day",
              "week",
              "month",
              "3months",
              "6months"
            ],
            "type": "string",
            "description": "Server-side date filter: only videos posted inside this window.",
            "default": "all"
          },
          "deepSearch": {
            "title": "Deep search",
            "type": "boolean",
            "description": "TikTok caps one search session at about 200 videos. When on, the actor also runs the other sort orders and narrower date windows for the same keyword and merges the unique videos, which usually adds 30 to 50 percent more results. Turn off for the fastest run.",
            "default": true
          },
          "includeAds": {
            "title": "Include promoted videos",
            "type": "boolean",
            "description": "Keep videos TikTok marks as ads. Off by default.",
            "default": false
          },
          "apiHost": {
            "title": "API host override",
            "type": "string",
            "description": "Advanced: override the TikTok app API host."
          },
          "proxyCountry": {
            "title": "Proxy country override",
            "type": "string",
            "description": "Advanced: country of the residential proxy when it should differ from the region."
          },
          "deviceRegion": {
            "title": "Device region override",
            "type": "string",
            "description": "Advanced: register the anonymous device as this region instead of the search region."
          },
          "proxyGroups": {
            "title": "Proxy groups override",
            "type": "string",
            "description": "Advanced: comma separated Apify proxy groups, or none for no proxy."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}