{
  "openapi": "3.0.1",
  "info": {
    "title": "Tiktok Data Scraper ($0.25/1000 results)",
    "description": "🔥 Extract public TikTok data at scale: profiles, videos, followers, comments/replies, hashtags, music, playlists, and video details. Get structured metrics, creator info, engagement stats, and discovery signals via one standalone Apify API Actor.",
    "version": "0.0",
    "x-build-id": "FQFhBb8QVbcDNVpZ8"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/api-ninja~tiktok-data-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-api-ninja-tiktok-data-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/api-ninja~tiktok-data-scraper/runs": {
      "post": {
        "operationId": "runs-sync-api-ninja-tiktok-data-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/api-ninja~tiktok-data-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-api-ninja-tiktok-data-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": {
          "userUrls": {
            "title": "🔗 User URLs, Usernames or IDs",
            "type": "array",
            "description": "Provide URLs, usernames or IDs for profiles. Example: https://www.tiktok.com/@billieeilish, billieeilish, @billieeilish, 107955",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "🗂️ Parse categories",
            "type": "array",
            "description": "Select which types of content to scrape for the query. Multiple categories are supported.",
            "items": {
              "type": "string",
              "enum": [
                "videos",
                "favourite_videos",
                "followers",
                "following",
                "user_playlists",
                "search",
                "user_info"
              ],
              "enumTitles": [
                "📹 User Videos",
                "❤️ User Favourite Videos",
                "👥 Followers",
                "👥 Following",
                "▶️ User Playlists",
                "🔍 User Search",
                "👤 User Info"
              ]
            },
            "default": [
              "videos"
            ]
          },
          "maxUserResults": {
            "title": "Maximum results per category",
            "minimum": 40,
            "type": "integer",
            "description": "The maximum number of items to fetch for each individual URL or section. This is ignored if 'Scrape all available results' is enabled.",
            "default": 100
          },
          "scrapeAllUserResults": {
            "title": "Scrape all available results",
            "type": "boolean",
            "description": "If enabled, the scraper will ignore the result limit and attempt to fetch all available content for each provided source.",
            "default": false
          },
          "videoUrlsComments": {
            "title": "🔗 TikTok Video URLs or IDs",
            "type": "array",
            "description": "List of TikTok video URLs or video IDs to scrape comments from. Supports both full URLs (https://www.tiktok.com/@username/video/1234567890) and just the video ID (1234567890).",
            "items": {
              "type": "string"
            }
          },
          "commentsPerUrl": {
            "title": "Maximum Comments per Video",
            "minimum": 40,
            "type": "integer",
            "description": "Maximum number of comments to scrape for each video. This limit is ignored when 'Scrape All Comments' is enabled.",
            "default": 100
          },
          "scrapeAllComments": {
            "title": "Scrape All Comments",
            "type": "boolean",
            "description": "When enabled, scrapes all available comments from each video, ignoring the 'Maximum Comments per Video' limit. This may significantly increase scraping time and resource usage.",
            "default": false
          },
          "repliesPerComment": {
            "title": "Maximum Replies per Comment",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of replies to scrape for each comment. Set to 0 to skip replies entirely. This limit is ignored when 'Parse All Replies' is enabled.",
            "default": 0
          },
          "scrapeAllReplies": {
            "title": "Parse All Replies",
            "type": "boolean",
            "description": "When enabled, scrapes all available replies for each comment, ignoring the 'Maximum Replies per Comment' limit. This may significantly increase scraping time and resource usage.",
            "default": false
          },
          "hashtags": {
            "title": "#️⃣ TikTok Hashtag Name or IDs",
            "type": "array",
            "description": "List of hashtag names (dance or #dance), TikTok hashtag URLs (https://www.tiktok.com/hashtag/dance), or numeric challenge IDs. Each hashtag must be a single token without spaces, tabs, or line breaks. Use personalfinancejourney instead of personal finance journey. Leading and trailing whitespace is trimmed. Invalid entries stop the run before scraping starts; words are never automatically joined.",
            "items": {
              "type": "string",
              "pattern": "^\\s*\\S+\\s*$"
            }
          },
          "parseSimilarHashtag": {
            "title": "If not available, parse similar hashtag",
            "type": "boolean",
            "description": "If a hashtag name cannot be resolved, search for similar hashtags and scrape videos using the first result. If no result is found, skip the hashtag. Does not apply to numeric challenge IDs.",
            "default": false
          },
          "videosPerHashtag": {
            "title": "Maximum Videos per Hashtag",
            "minimum": 40,
            "type": "integer",
            "description": "Maximum number of videos to scrape for each hashtag. This limit is ignored when 'Scrape All Hashtag Videos' is enabled.",
            "default": 100
          },
          "scrapeAllHashtagVideos": {
            "title": "Scrape All Videos",
            "type": "boolean",
            "description": "When enabled, scrapes all available videos from each hashtag, ignoring the 'Maximum Videos per Hashtag' limit. This may significantly increase scraping time and resource usage.",
            "default": false
          },
          "hashtagRegion": {
            "title": "🌍 Region",
            "enum": [
              "AD",
              "AE",
              "AF",
              "AG",
              "AI",
              "AL",
              "AM",
              "AO",
              "AR",
              "AS",
              "AT",
              "AU",
              "AW",
              "AX",
              "AZ",
              "BA",
              "BB",
              "BD",
              "BE",
              "BF",
              "BG",
              "BH",
              "BI",
              "BJ",
              "BL",
              "BM",
              "BN",
              "BO",
              "BQ",
              "BR",
              "BS",
              "BT",
              "BW",
              "BY",
              "BZ",
              "CA",
              "CC",
              "CD",
              "CF",
              "CG",
              "CH",
              "CI",
              "CK",
              "CL",
              "CM",
              "CN",
              "CO",
              "CR",
              "CV",
              "CW",
              "CX",
              "CY",
              "CZ",
              "DE",
              "DG",
              "DJ",
              "DK",
              "DM",
              "DO",
              "DZ",
              "EC",
              "EE",
              "EG",
              "EH",
              "ER",
              "ES",
              "ET",
              "FI",
              "FJ",
              "FK",
              "FM",
              "FO",
              "FR",
              "GA",
              "GB",
              "GD",
              "GE",
              "GF",
              "GG",
              "GH",
              "GI",
              "GL",
              "GM",
              "GN",
              "GP",
              "GQ",
              "GR",
              "GS",
              "GT",
              "GU",
              "GW",
              "GY",
              "HK",
              "HN",
              "HR",
              "HT",
              "HU",
              "ID",
              "IE",
              "IL",
              "IM",
              "IN",
              "IO",
              "IQ",
              "IS",
              "IT",
              "JE",
              "JM",
              "JO",
              "JP",
              "KE",
              "KG",
              "KH",
              "KI",
              "KM",
              "KN",
              "KR",
              "KW",
              "KY",
              "KZ",
              "LA",
              "LB",
              "LC",
              "LI",
              "LK",
              "LR",
              "LS",
              "LT",
              "LU",
              "LV",
              "LY",
              "MA",
              "MC",
              "MD",
              "ME",
              "MF",
              "MG",
              "MH",
              "MK",
              "ML",
              "MM",
              "MN",
              "MO",
              "MP",
              "MQ",
              "MR",
              "MS",
              "MT",
              "MU",
              "MV",
              "MW",
              "MX",
              "MY",
              "MZ",
              "NA",
              "NC",
              "NE",
              "NF",
              "NG",
              "NI",
              "NL",
              "NO",
              "NP",
              "NR",
              "NU",
              "NZ",
              "OM",
              "PA",
              "PE",
              "PF",
              "PG",
              "PH",
              "PK",
              "PL",
              "PM",
              "PN",
              "PR",
              "PS",
              "PT",
              "PW",
              "PY",
              "QA",
              "RE",
              "RO",
              "RS",
              "RU",
              "RW",
              "SA",
              "SB",
              "SC",
              "SD",
              "SE",
              "SG",
              "SH",
              "SI",
              "SJ",
              "SK",
              "SL",
              "SM",
              "SN",
              "SO",
              "SR",
              "SS",
              "ST",
              "SV",
              "SX",
              "SZ",
              "TC",
              "TD",
              "TG",
              "TH",
              "TJ",
              "TK",
              "TL",
              "TM",
              "TN",
              "TO",
              "TR",
              "TT",
              "TV",
              "TW",
              "TZ",
              "UA",
              "UG",
              "US",
              "UY",
              "UZ",
              "VA",
              "VC",
              "VE",
              "VG",
              "VI",
              "VN",
              "VU",
              "WF",
              "WS",
              "XK",
              "YE",
              "YT",
              "ZA",
              "ZM",
              "ZW"
            ],
            "type": "string",
            "description": "Select a region for hashtag video results. The region feature may not always return results from the selected region. For the United Kingdom, select GB.",
            "default": "US"
          },
          "musicUrls": {
            "title": "🔗 TikTok Music URLs or IDs",
            "type": "array",
            "description": "List of TikTok music URLs or music IDs to scrape videos from. Supports both full URLs (https://www.tiktok.com/music/1234567890) and just the music ID (1234567890).",
            "items": {
              "type": "string"
            }
          },
          "videosPerMusic": {
            "title": "Maximum Videos per Music",
            "minimum": 40,
            "type": "integer",
            "description": "Maximum number of videos to scrape for each music. This limit is ignored when 'Scrape All Music Videos' is enabled.",
            "default": 100
          },
          "scrapeAllMusicVideos": {
            "title": "Scrape All Videos",
            "type": "boolean",
            "description": "When enabled, scrapes all available videos from each music track, ignoring the 'Maximum Videos per Music' limit. This may significantly increase scraping time and resource usage.",
            "default": false
          },
          "playlistIDs": {
            "title": "🆔 TikTok Playlist IDs",
            "type": "array",
            "description": "List of TikTok playlist IDs to scrape videos from. Supports just the playlist ID (1234567890).",
            "items": {
              "type": "string"
            }
          },
          "videosPerPlaylist": {
            "title": "Maximum Videos per Playlist",
            "minimum": 40,
            "type": "integer",
            "description": "Maximum number of videos to scrape for each playlist. This limit is ignored when 'Scrape All Playlist Videos' is enabled.",
            "default": 100
          },
          "scrapeAllPlaylistVideos": {
            "title": "Scrape All Videos",
            "type": "boolean",
            "description": "When enabled, scrapes all available videos from each playlist, ignoring the 'Maximum Videos per Playlist' limit. This may significantly increase scraping time and resource usage.",
            "default": false
          },
          "videoDetailsList": {
            "title": "🔗 TikTok Video IDs or URLs",
            "type": "array",
            "description": "List of TikTok video IDs or URLs to retrieve video details. Supports just the video ID (1234567890) or full URL (https://www.tiktok.com/@username/video/1234567890).",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}