{"id":5402,"date":"2026-05-10T13:35:06","date_gmt":"2026-05-10T13:35:06","guid":{"rendered":"https:\/\/scraping-bot.io\/blogs\/how-to-scrape-and-collect-data-from-tiktok\/"},"modified":"2026-05-18T20:11:49","modified_gmt":"2026-05-18T20:11:49","slug":"tiktok-scraper-api","status":"publish","type":"post","link":"https:\/\/scraping-bot.io\/blogs\/tiktok-scraper-api\/","title":{"rendered":"How to scrape and collect data from TikTok?"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"5402\" class=\"elementor elementor-5402\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2217963 e-flex e-con-boxed e-con e-parent\" data-id=\"2217963\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b376995 e-flex e-con-boxed e-con e-parent\" data-id=\"b376995\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3ba6622 elementor-widget elementor-widget-html\" data-id=\"3ba6622\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\r\n.sb-article { max-width: 800px; margin: 0 auto; font-family: inherit; color: inherit; line-height: 1.7; }\r\n.sb-article h1 { font-size: 28px; font-weight: 700; margin: 0 0 1.25rem; line-height: 1.3; }\r\n.sb-meta { display: flex; align-items: center; gap: 12px; margin-bottom: 1.5rem; flex-wrap: wrap; }\r\n.sb-tag { background: #e6f1fb; color: #185fa5; font-size: 12px; padding: 4px 12px; border-radius: 6px; font-weight: 500; }\r\n.sb-read-time { font-size: 13px; color: #888; }\r\n.sb-intro { font-size: 16px; border-left: 3px solid #378add; padding-left: 1rem; color: #444; margin-bottom: 2rem; }\r\n.sb-toc { background: #f8f8f8; border: 1px solid #e8e8e8; border-radius: 8px; padding: 1rem 1.5rem; margin-bottom: 2rem; }\r\n.sb-toc-title { font-size: 13px; font-weight: 600; color: #666; margin: 0 0 8px; text-transform: uppercase; letter-spacing: 0.05em; }\r\n.sb-toc ol { margin: 0; padding-left: 1.25rem; }\r\n.sb-toc li { font-size: 14px; padding: 3px 0; }\r\n.sb-toc a { color: #185fa5; text-decoration: none; }\r\n.sb-toc a:hover { text-decoration: underline; }\r\n.sb-article h2 { font-size: 22px; font-weight: 600; margin: 2.5rem 0 0.75rem; border-bottom: 1px solid #eee; padding-bottom: 0.5rem; }\r\n.sb-article h3 { font-size: 17px; font-weight: 600; margin: 1.5rem 0 0.5rem; }\r\n.sb-article p { margin: 0 0 1rem; }\r\n.sb-article ul, .sb-article ol { margin: 0 0 1rem; padding-left: 1.5rem; }\r\n.sb-article li { margin-bottom: 6px; }\r\n.sb-article pre { background: #1e1e1e; color: #d4d4d4; border-radius: 8px; padding: 1.25rem; overflow-x: auto; margin: 1rem 0 1.5rem; }\r\n.sb-article code { font-family: 'Courier New', monospace; font-size: 13px; line-height: 1.6; }\r\n.sb-article p code { background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-size: 13px; color: #c7254e; }\r\n.sb-table { width: 100%; border-collapse: collapse; margin: 1rem 0 1.5rem; font-size: 14px; }\r\n.sb-table th { text-align: left; padding: 10px 14px; background: #f4f4f4; font-weight: 600; border-bottom: 2px solid #ddd; }\r\n.sb-table td { padding: 10px 14px; border-bottom: 1px solid #eee; }\r\n.sb-table tr:last-child td { border-bottom: none; }\r\n.sb-note { background: #fffbea; border: 1px solid #f0e28a; border-radius: 8px; padding: 1rem 1.25rem; margin: 1rem 0 1.5rem; font-size: 14px; color: #5a4a00; }\r\n.sb-cta { background: #e6f1fb; border: 1px solid #b5d4f4; border-radius: 10px; padding: 1.5rem; margin: 2.5rem 0 0; text-align: center; }\r\n.sb-cta p { margin: 0 0 1rem; font-size: 15px; }\r\n.sb-cta-btn { display: inline-block; background: #185fa5; color: white; padding: 10px 24px; border-radius: 6px; text-decoration: none; font-size: 14px; font-weight: 500; }\r\n.sb-cta-btn:hover { background: #0c447c; }\r\n<\/style>\r\n\r\n<article class=\"sb-article\">\r\n\r\n  <div class=\"sb-meta\">\r\n    <span class=\"sb-tag\">Site-Specific Scrapers<\/span>\r\n    <span class=\"sb-read-time\">8 min read &nbsp;\u00b7&nbsp; Published: 18\/05\/2026<\/span>\r\n  <\/div>\r\n\r\n  <h1>TikTok Scraper API \u2014 How to Scrape TikTok Data with ScrapingBot<\/h1>\r\n\r\n  <p class=\"sb-intro\">The <strong>TikTok scraper API<\/strong> from ScrapingBot lets you collect public profile and hashtag data at scale \u2014 in JSON, without getting blocked. With over <strong>1 billion active users<\/strong>, TikTok is one of the richest sources of social data available today. In this guide, you will learn how to set up and use the TikTok scraper API with a simple two-step async pattern that handles all anti-bot protections for you.<\/p>\r\n\r\n  <div class=\"sb-toc\">\r\n    <p class=\"sb-toc-title\">Table of contents<\/p>\r\n    <ol>\r\n      <li><a href=\"#why\">Why use a TikTok scraper API?<\/a><\/li>\r\n      <li><a href=\"#data\">What data can you collect?<\/a><\/li>\r\n      <li><a href=\"#prerequisites\">Prerequisites<\/a><\/li>\r\n      <li><a href=\"#flow\">How the TikTok scraper API works<\/a><\/li>\r\n      <li><a href=\"#step1\">Step 1 \u2014 POST request (get a responseId)<\/a><\/li>\r\n      <li><a href=\"#step2\">Step 2 \u2014 GET request (poll for results)<\/a><\/li>\r\n      <li><a href=\"#response\">Example JSON response<\/a><\/li>\r\n      <li><a href=\"#tips\">Tips for developers<\/a><\/li>\r\n    <\/ol>\r\n  <\/div>\r\n\r\n  <h2 id=\"why\">1. Why use a TikTok scraper API?<\/h2>\r\n  <p>TikTok's official API is private and heavily rate-limited. Nevertheless, for developers and data engineers, the platform's public data represents a real opportunity. Here are the main use cases for a TikTok scraper API:<\/p>\r\n  <ul>\r\n    <li><strong>Market research<\/strong> \u2014 track trends, hashtags, and viral content in real time. For reference, see <a href=\"https:\/\/www.tiktok.com\/creators\/creator-portal\/en-us\/getting-started-on-tiktok\/understanding-your-audience\/\" target=\"_blank\" rel=\"noopener\">TikTok's audience insights documentation<\/a>.<\/li>\r\n    <li><strong>Influencer analysis<\/strong> \u2014 evaluate profiles by followers, engagement rate, and top videos<\/li>\r\n    <li><strong>Brand monitoring<\/strong> \u2014 measure how your brand or competitors are discussed<\/li>\r\n    <li><strong>ML datasets<\/strong> \u2014 build training datasets from public social content<\/li>\r\n  <\/ul>\r\n  <p>In other words, you can build powerful data pipelines without complex infrastructure. To make this easier, ScrapingBot's TikTok scraper API handles JavaScript rendering, rotating IPs, and anti-bot measures for you.<\/p>\r\n\r\n  <h2 id=\"data\">2. What data can you collect with the TikTok scraper API?<\/h2>\r\n  <p>The TikTok scraper API supports two types of data collection. First, you can scrape public profiles. Second, you can collect hashtag data. Both are returned as structured JSON.<\/p>\r\n\r\n  <h3>TikTok Profiles<\/h3>\r\n  <table class=\"sb-table\">\r\n    <thead><tr><th>Field<\/th><th>Description<\/th><\/tr><\/thead>\r\n    <tbody>\r\n      <tr><td><code>nickname<\/code>, <code>id<\/code>, <code>biography<\/code><\/td><td>Basic profile info<\/td><\/tr>\r\n      <tr><td><code>verified<\/code>, <code>privateAccount<\/code><\/td><td>Account status<\/td><\/tr>\r\n      <tr><td><code>followers<\/code>, <code>following<\/code>, <code>hearts<\/code><\/td><td>Engagement metrics<\/td><\/tr>\r\n      <tr><td><code>videoCount<\/code><\/td><td>Total videos published<\/td><\/tr>\r\n      <tr><td><code>topVideos[]<\/code><\/td><td>Top videos with full metadata (ID, description, plays, shares, comments, music info)<\/td><\/tr>\r\n    <\/tbody>\r\n  <\/table>\r\n\r\n  <h3>TikTok Hashtags<\/h3>\r\n  <table class=\"sb-table\">\r\n    <thead><tr><th>Field<\/th><th>Description<\/th><\/tr><\/thead>\r\n    <tbody>\r\n      <tr><td><code>title<\/code>, <code>description<\/code><\/td><td>Hashtag info<\/td><\/tr>\r\n      <tr><td><code>videoCount<\/code>, <code>viewCount<\/code><\/td><td>Reach metrics<\/td><\/tr>\r\n      <tr><td><code>topVideos[]<\/code><\/td><td>Top videos with engagement data (likes, shares, comments, plays, URL, author)<\/td><\/tr>\r\n    <\/tbody>\r\n  <\/table>\r\n\r\n  <h2 id=\"prerequisites\">3. Prerequisites<\/h2>\r\n  <p>To follow this guide and start using the TikTok scraper API, you need three things. First, make sure you have all of them ready before you continue:<\/p>\r\n  <ul>\r\n    <li>A <strong>ScrapingBot account<\/strong> with your username and API key<\/li>\r\n    <li>A TikTok profile URL or hashtag keyword you want to scrape<\/li>\r\n    <li>Any HTTP client \u2014 cURL, Python <code>requests<\/code>, Node.js <code>axios<\/code>, or Postman<\/li>\r\n  <\/ul>\r\n\r\n  <div class=\"sb-note\">\r\n    <strong>\ud83d\udca1 Note:<\/strong> ScrapingBot offers <strong>free access with 100 credits per month<\/strong> \u2014 no payment required. Sign up at <a href=\"https:\/\/scraping-bot.io\" target=\"_blank\" rel=\"noopener\">scraping-bot.io<\/a> to get your credentials instantly.\r\n  <\/div>\r\n\r\n  <h2 id=\"flow\">4. How the TikTok scraper API works<\/h2>\r\n  <h3>Overview of the async pattern<\/h3>\r\n  <p>Unlike a standard REST API, the TikTok scraper API uses an <strong>asynchronous two-step pattern<\/strong>. Indeed, this approach is needed because TikTok actively detects and blocks standard scrapers.<\/p>\r\n  <h3>Why async?<\/h3>\r\n  <p>In short, TikTok has strong protections that require extra processing time to bypass. Therefore, instead of returning data right away, the API first gives you a <code>responseId<\/code>. You then use that ID to fetch results once they are ready.<\/p>\r\n\r\n  <pre><code>Your App\r\n   \u2502\r\n   \u251c\u2500 POST \/scrape\/data-scraper\r\n   \u2502   \u2514\u2500 body: { scraper, url \/ hashtag }\r\n   \u2502\r\n   \u2502   \u2190 { responseId: \"abc123\" }\r\n   \u2502\r\n   \u251c\u2500 GET \/scrape\/data-scraper-response?responseId=abc123&scraper=tiktokProfile\r\n   \u2502   \u2514\u2500 if { status: \"pending\" } \u2192 wait a few seconds and retry\r\n   \u2502\r\n   \u2514\u2500 \u2190 Full JSON data (profile or hashtag)<\/code><\/pre>\r\n\r\n  <div class=\"sb-note\">\r\n    <strong>\ud83d\udca1 Why two steps?<\/strong> Social networks detect and block single-request scrapers. Consequently, the async approach lets ScrapingBot process your request through multiple layers of protection before returning clean data.\r\n  <\/div>\r\n\r\n  <h2 id=\"step1\">5. Step 1 \u2014 POST request (get a responseId)<\/h2>\r\n  <p>To get started with the TikTok scraper API, send a <code>POST<\/code> request to obtain a <code>responseId<\/code>. Afterward, you will use that ID in Step 2. Authenticate with <strong>HTTP Basic Auth<\/strong> using your ScrapingBot username and API key.<\/p>\r\n\r\n  <h3>Endpoint<\/h3>\r\n  <pre><code>POST https:\/\/api.scraping-bot.io\/scrape\/data-scraper<\/code><\/pre>\r\n\r\n  <h3>Request body \u2014 TikTok profile<\/h3>\r\n  <p>For a profile, pass the <code>tiktokProfile<\/code> scraper along with the target URL:<\/p>\r\n  <pre><code>{\r\n  \"scraper\": \"tiktokProfile\",\r\n  \"url\": \"https:\/\/www.tiktok.com\/@nike\"\r\n}<\/code><\/pre>\r\n\r\n  <h3>Request body \u2014 TikTok hashtag<\/h3>\r\n  <p>For a hashtag, use <code>tiktokHashtag<\/code> and pass the keyword without the <code>#<\/code> symbol:<\/p>\r\n  <pre><code>{\r\n  \"scraper\": \"tiktokHashtag\",\r\n  \"hashtag\": \"football\"\r\n}<\/code><\/pre>\r\n\r\n  <h3>cURL example<\/h3>\r\n  <p>Here is how to call the TikTok scraper API using cURL:<\/p>\r\n  <pre><code>curl -X POST https:\/\/api.scraping-bot.io\/scrape\/data-scraper \\\r\n  -u \"YOUR_USERNAME:YOUR_API_KEY\" \\\r\n  -H \"Content-Type: application\/json\" \\\r\n  -d '{\"scraper\": \"tiktokProfile\", \"url\": \"https:\/\/www.tiktok.com\/@nike\"}'<\/code><\/pre>\r\n\r\n  <h3>Python example<\/h3>\r\n  <p>Similarly, here is the equivalent TikTok scraper API call in Python:<\/p>\r\n  <pre><code>import requests\r\nfrom requests.auth import HTTPBasicAuth\r\n\r\nresponse = requests.post(\r\n    \"https:\/\/api.scraping-bot.io\/scrape\/data-scraper\",\r\n    json={\"scraper\": \"tiktokProfile\", \"url\": \"https:\/\/www.tiktok.com\/@nike\"},\r\n    auth=HTTPBasicAuth(\"YOUR_USERNAME\", \"YOUR_API_KEY\")\r\n)\r\n\r\nresponse_id = response.json().get(\"responseId\")\r\nprint(f\"Response ID: {response_id}\")<\/code><\/pre>\r\n\r\n  <h3>JavaScript (Node.js) example<\/h3>\r\n  <p>Finally, here is the same request using <code>axios<\/code> in Node.js:<\/p>\r\n  <pre><code>const axios = require('axios');\r\n\r\nconst { data } = await axios.post(\r\n  'https:\/\/api.scraping-bot.io\/scrape\/data-scraper',\r\n  { scraper: 'tiktokProfile', url: 'https:\/\/www.tiktok.com\/@nike' },\r\n  { auth: { username: 'YOUR_USERNAME', password: 'YOUR_API_KEY' } }\r\n);\r\n\r\nconst { responseId } = data;\r\nconsole.log('Response ID:', responseId);<\/code><\/pre>\r\n\r\n  <h2 id=\"step2\">6. Step 2 \u2014 GET request (poll for results)<\/h2>\r\n  <p>Next, use the <code>responseId<\/code> from Step 1 to poll the TikTok scraper API for your results. If scraping is not finished yet, simply wait a few seconds and try again.<\/p>\r\n\r\n  <h3>Endpoint<\/h3>\r\n  <pre><code>GET https:\/\/api.scraping-bot.io\/scrape\/data-scraper-response?responseId=YOUR_ID&scraper=tiktokProfile<\/code><\/pre>\r\n\r\n  <h3>Pending response<\/h3>\r\n  <p>When the data is not ready yet, you will receive this response. In that case, retry after a short delay:<\/p>\r\n  <pre><code>{\r\n  \"status\": \"pending\",\r\n  \"message\": \"Scraping is not finished for this request, try again in a few seconds\"\r\n}<\/code><\/pre>\r\n\r\n  <h3>Python \u2014 with retry logic<\/h3>\r\n  <p>The following function polls the TikTok scraper API until the data is ready or the retry limit is reached:<\/p>\r\n  <pre><code>import requests, time\r\nfrom requests.auth import HTTPBasicAuth\r\n\r\ndef get_tiktok_data(response_id, scraper, username, api_key, max_retries=10):\r\n    url = \"https:\/\/api.scraping-bot.io\/scrape\/data-scraper-response\"\r\n    for attempt in range(max_retries):\r\n        res = requests.get(\r\n            url,\r\n            params={\"responseId\": response_id, \"scraper\": scraper},\r\n            auth=HTTPBasicAuth(username, api_key)\r\n        )\r\n        data = res.json()\r\n        if data.get(\"status\") == \"pending\":\r\n            print(f\"Attempt {attempt + 1}: still processing, retrying in 5s...\")\r\n            time.sleep(5)\r\n            continue\r\n        return data  # Data is ready\r\n    raise TimeoutError(\"Scraping timed out after max retries\")\r\n\r\nresult = get_tiktok_data(response_id, \"tiktokProfile\", \"YOUR_USERNAME\", \"YOUR_API_KEY\")\r\nprint(result)<\/code><\/pre>\r\n\r\n  <h3>JavaScript \u2014 with retry logic<\/h3>\r\n  <p>Likewise, here is the same polling logic in Node.js with async\/await:<\/p>\r\n  <pre><code>async function getTikTokData(responseId, scraper, username, apiKey, maxRetries = 10) {\r\n  const url = 'https:\/\/api.scraping-bot.io\/scrape\/data-scraper-response';\r\n  for (let attempt = 0; attempt < maxRetries; attempt++) {\r\n    const { data } = await axios.get(url, {\r\n      params: { responseId, scraper },\r\n      auth: { username, password: apiKey }\r\n    });\r\n    if (data.status === 'pending') {\r\n      console.log(`Attempt ${attempt + 1}: still processing, retrying in 5s...`);\r\n      await new Promise(r => setTimeout(r, 5000));\r\n      continue;\r\n    }\r\n    return data;\r\n  }\r\n  throw new Error('Scraping timed out after max retries');\r\n}<\/code><\/pre>\r\n\r\n  <h2 id=\"response\">7. Example JSON response from the TikTok scraper API<\/h2>\r\n  <p>Once scraping is complete, you will receive a clean JSON object. In addition, this response is ready to insert into any database or pipeline \u2014 no transformation needed:<\/p>\r\n\r\n  <pre><code>{\r\n  \"id\": \"123456789\",\r\n  \"nickname\": \"nike\",\r\n  \"biography\": \"Just Do It.\",\r\n  \"verified\": true,\r\n  \"privateAccount\": false,\r\n  \"followers\": 8500000,\r\n  \"following\": 12,\r\n  \"hearts\": 45000000,\r\n  \"videoCount\": 312,\r\n  \"topVideos\": [\r\n    {\r\n      \"id\": \"987654321\",\r\n      \"description\": \"Speed is everything. #nike #running\",\r\n      \"playCount\": 12000000,\r\n      \"diggCount\": 980000,\r\n      \"shareCount\": 45000,\r\n      \"commentCount\": 12300,\r\n      \"url\": \"https:\/\/www.tiktok.com\/@nike\/video\/987654321\"\r\n    }\r\n  ]\r\n}<\/code><\/pre>\r\n\r\n  <p>As you can see, the response includes both profile-level data and an array of top videos. Moreover, each video entry contains full engagement metrics ready for analysis.<\/p>\r\n\r\n  <h2 id=\"tips\">8. Tips for using the TikTok scraper API in production<\/h2>\r\n  <p>Once your basic setup is working, keep these best practices in mind. They will help you get the most out of the TikTok scraper API at scale:<\/p>\r\n\r\n  <table class=\"sb-table\">\r\n    <thead><tr><th>Tip<\/th><th>Details<\/th><\/tr><\/thead>\r\n    <tbody>\r\n      <tr><td><strong>Retry with backoff<\/strong><\/td><td>Wait at least 3\u20135 seconds between polling attempts to avoid overloading the API<\/td><\/tr>\r\n      <tr><td><strong>Parallel scraping<\/strong><\/td><td>Send multiple POST requests at once, then poll each <code>responseId<\/code> in parallel to boost throughput<\/td><\/tr>\r\n      <tr><td><strong>Hashtag scraping<\/strong><\/td><td>Replace <code>\"url\"<\/code> with <code>\"hashtag\": \"yourkeyword\"<\/code> \u2014 do not include the <code>#<\/code> symbol<\/td><\/tr>\r\n      <tr><td><strong>Data storage<\/strong><\/td><td>The JSON response works directly with MongoDB, PostgreSQL (JSONB), BigQuery, or any data pipeline<\/td><\/tr>\r\n      <tr><td><strong>Error handling<\/strong><\/td><td>Always wrap your polling loop in a try\/catch and set a <code>maxRetries<\/code> limit to prevent infinite loops<\/td><\/tr>\r\n    <\/tbody>\r\n  <\/table>\r\n\r\n  <div class=\"sb-cta\">\r\n    <p><strong>Ready to start using the TikTok scraper API?<\/strong> Sign up for ScrapingBot and get 100 free credits \u2014 no credit card required.<\/p>\r\n    <a href=\"https:\/\/scraping-bot.io\/pricing\" class=\"sb-cta-btn\">Try ScrapingBot for free \u2192<\/a>\r\n  <\/div>\r\n\r\n<\/article>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Site-Specific Scrapers 8 min read \u00a0\u00b7\u00a0 Published: 18\/05\/2026 TikTok Scraper API \u2014 How to Scrape TikTok Data with ScrapingBot The TikTok scraper API from ScrapingBot lets you collect public profile and hashtag data at scale \u2014 in JSON, without getting blocked. With over 1 billion active users, TikTok is one of the richest sources of [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":6213,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[7],"tags":[],"class_list":["post-5402","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-site-specific-scrapers"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.5 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>TikTok Scraper API \u2014 How to Scrape TikTok Data with ScrapingBot<\/title>\n<meta name=\"description\" content=\"Use the TikTok scraper API from ScrapingBot to collect profiles and hashtags in JSON. Python, JS, and cURL examples included. Free trial.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/scraping-bot.io\/blogs\/tiktok-scraper-api\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to scrape and collect data from TikTok?\" \/>\n<meta property=\"og:description\" content=\"Use the TikTok scraper API from ScrapingBot to collect profiles and hashtags in JSON. Python, JS, and cURL examples included. Free trial.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/scraping-bot.io\/blogs\/tiktok-scraper-api\/\" \/>\n<meta property=\"og:site_name\" content=\"Scraping-bot\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-10T13:35:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-18T20:11:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/scraping-bot.io\/blogs\/wp-content\/uploads\/2026\/05\/tiktok_scraper_API.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"985\" \/>\n\t<meta property=\"og:image:height\" content=\"771\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"olivier\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"olivier\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/tiktok-scraper-api\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/tiktok-scraper-api\\\/\"},\"author\":{\"name\":\"olivier\",\"@id\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/#\\\/schema\\\/person\\\/33c8e0db9fe504e7a1789b829e6dcce4\"},\"headline\":\"How to scrape and collect data from TikTok?\",\"datePublished\":\"2026-05-10T13:35:06+00:00\",\"dateModified\":\"2026-05-18T20:11:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/tiktok-scraper-api\\\/\"},\"wordCount\":925,\"publisher\":{\"@id\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/tiktok-scraper-api\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/tiktok_scraper_API.webp\",\"articleSection\":[\"Site-Specific Scrapers\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/tiktok-scraper-api\\\/\",\"url\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/tiktok-scraper-api\\\/\",\"name\":\"TikTok Scraper API \u2014 How to Scrape TikTok Data with ScrapingBot\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/tiktok-scraper-api\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/tiktok-scraper-api\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/tiktok_scraper_API.webp\",\"datePublished\":\"2026-05-10T13:35:06+00:00\",\"dateModified\":\"2026-05-18T20:11:49+00:00\",\"description\":\"Use the TikTok scraper API from ScrapingBot to collect profiles and hashtags in JSON. Python, JS, and cURL examples included. Free trial.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/tiktok-scraper-api\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/tiktok-scraper-api\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/tiktok-scraper-api\\\/#primaryimage\",\"url\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/tiktok_scraper_API.webp\",\"contentUrl\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/tiktok_scraper_API.webp\",\"width\":985,\"height\":771},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/tiktok-scraper-api\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home &gt; Blog\",\"item\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to scrape and collect data from TikTok?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/#website\",\"url\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/\",\"name\":\"Scraping-bot\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Organization\",\"Place\"],\"@id\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/#organization\",\"name\":\"Scraping-bot\",\"url\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/\",\"logo\":{\"@id\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/tiktok-scraper-api\\\/#local-main-organization-logo\"},\"image\":{\"@id\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/tiktok-scraper-api\\\/#local-main-organization-logo\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/company\\\/scrapingbot\\\/\"],\"telephone\":[],\"openingHoursSpecification\":[{\"@type\":\"OpeningHoursSpecification\",\"dayOfWeek\":[\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\",\"Sunday\"],\"opens\":\"09:00\",\"closes\":\"17:00\"}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/#\\\/schema\\\/person\\\/33c8e0db9fe504e7a1789b829e6dcce4\",\"name\":\"olivier\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e4d9abe97a49097500854cf50a8a4fd9bba4cb96d5d7a046dbaab0bbe764f0df?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e4d9abe97a49097500854cf50a8a4fd9bba4cb96d5d7a046dbaab0bbe764f0df?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e4d9abe97a49097500854cf50a8a4fd9bba4cb96d5d7a046dbaab0bbe764f0df?s=96&d=mm&r=g\",\"caption\":\"olivier\"},\"url\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/author\\\/olivier\\\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/tiktok-scraper-api\\\/#local-main-organization-logo\",\"url\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/scraping-bot-logo.svg\",\"contentUrl\":\"https:\\\/\\\/scraping-bot.io\\\/blogs\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/scraping-bot-logo.svg\",\"width\":159,\"height\":32,\"caption\":\"Scraping-bot\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"TikTok Scraper API \u2014 How to Scrape TikTok Data with ScrapingBot","description":"Use the TikTok scraper API from ScrapingBot to collect profiles and hashtags in JSON. Python, JS, and cURL examples included. Free trial.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/scraping-bot.io\/blogs\/tiktok-scraper-api\/","og_locale":"en_US","og_type":"article","og_title":"How to scrape and collect data from TikTok?","og_description":"Use the TikTok scraper API from ScrapingBot to collect profiles and hashtags in JSON. Python, JS, and cURL examples included. Free trial.","og_url":"https:\/\/scraping-bot.io\/blogs\/tiktok-scraper-api\/","og_site_name":"Scraping-bot","article_published_time":"2026-05-10T13:35:06+00:00","article_modified_time":"2026-05-18T20:11:49+00:00","og_image":[{"width":985,"height":771,"url":"https:\/\/scraping-bot.io\/blogs\/wp-content\/uploads\/2026\/05\/tiktok_scraper_API.webp","type":"image\/webp"}],"author":"olivier","twitter_card":"summary_large_image","twitter_misc":{"Written by":"olivier","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/scraping-bot.io\/blogs\/tiktok-scraper-api\/#article","isPartOf":{"@id":"https:\/\/scraping-bot.io\/blogs\/tiktok-scraper-api\/"},"author":{"name":"olivier","@id":"https:\/\/scraping-bot.io\/blogs\/#\/schema\/person\/33c8e0db9fe504e7a1789b829e6dcce4"},"headline":"How to scrape and collect data from TikTok?","datePublished":"2026-05-10T13:35:06+00:00","dateModified":"2026-05-18T20:11:49+00:00","mainEntityOfPage":{"@id":"https:\/\/scraping-bot.io\/blogs\/tiktok-scraper-api\/"},"wordCount":925,"publisher":{"@id":"https:\/\/scraping-bot.io\/blogs\/#organization"},"image":{"@id":"https:\/\/scraping-bot.io\/blogs\/tiktok-scraper-api\/#primaryimage"},"thumbnailUrl":"https:\/\/scraping-bot.io\/blogs\/wp-content\/uploads\/2026\/05\/tiktok_scraper_API.webp","articleSection":["Site-Specific Scrapers"],"inLanguage":"en-US","copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/scraping-bot.io\/blogs\/#organization"}},{"@type":"WebPage","@id":"https:\/\/scraping-bot.io\/blogs\/tiktok-scraper-api\/","url":"https:\/\/scraping-bot.io\/blogs\/tiktok-scraper-api\/","name":"TikTok Scraper API \u2014 How to Scrape TikTok Data with ScrapingBot","isPartOf":{"@id":"https:\/\/scraping-bot.io\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/scraping-bot.io\/blogs\/tiktok-scraper-api\/#primaryimage"},"image":{"@id":"https:\/\/scraping-bot.io\/blogs\/tiktok-scraper-api\/#primaryimage"},"thumbnailUrl":"https:\/\/scraping-bot.io\/blogs\/wp-content\/uploads\/2026\/05\/tiktok_scraper_API.webp","datePublished":"2026-05-10T13:35:06+00:00","dateModified":"2026-05-18T20:11:49+00:00","description":"Use the TikTok scraper API from ScrapingBot to collect profiles and hashtags in JSON. Python, JS, and cURL examples included. Free trial.","breadcrumb":{"@id":"https:\/\/scraping-bot.io\/blogs\/tiktok-scraper-api\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/scraping-bot.io\/blogs\/tiktok-scraper-api\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/scraping-bot.io\/blogs\/tiktok-scraper-api\/#primaryimage","url":"https:\/\/scraping-bot.io\/blogs\/wp-content\/uploads\/2026\/05\/tiktok_scraper_API.webp","contentUrl":"https:\/\/scraping-bot.io\/blogs\/wp-content\/uploads\/2026\/05\/tiktok_scraper_API.webp","width":985,"height":771},{"@type":"BreadcrumbList","@id":"https:\/\/scraping-bot.io\/blogs\/tiktok-scraper-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home &gt; Blog","item":"https:\/\/scraping-bot.io\/blogs\/"},{"@type":"ListItem","position":2,"name":"How to scrape and collect data from TikTok?"}]},{"@type":"WebSite","@id":"https:\/\/scraping-bot.io\/blogs\/#website","url":"https:\/\/scraping-bot.io\/blogs\/","name":"Scraping-bot","description":"","publisher":{"@id":"https:\/\/scraping-bot.io\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/scraping-bot.io\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Organization","Place"],"@id":"https:\/\/scraping-bot.io\/blogs\/#organization","name":"Scraping-bot","url":"https:\/\/scraping-bot.io\/blogs\/","logo":{"@id":"https:\/\/scraping-bot.io\/blogs\/tiktok-scraper-api\/#local-main-organization-logo"},"image":{"@id":"https:\/\/scraping-bot.io\/blogs\/tiktok-scraper-api\/#local-main-organization-logo"},"sameAs":["https:\/\/www.linkedin.com\/company\/scrapingbot\/"],"telephone":[],"openingHoursSpecification":[{"@type":"OpeningHoursSpecification","dayOfWeek":["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],"opens":"09:00","closes":"17:00"}]},{"@type":"Person","@id":"https:\/\/scraping-bot.io\/blogs\/#\/schema\/person\/33c8e0db9fe504e7a1789b829e6dcce4","name":"olivier","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/e4d9abe97a49097500854cf50a8a4fd9bba4cb96d5d7a046dbaab0bbe764f0df?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e4d9abe97a49097500854cf50a8a4fd9bba4cb96d5d7a046dbaab0bbe764f0df?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e4d9abe97a49097500854cf50a8a4fd9bba4cb96d5d7a046dbaab0bbe764f0df?s=96&d=mm&r=g","caption":"olivier"},"url":"https:\/\/scraping-bot.io\/blogs\/author\/olivier\/"},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/scraping-bot.io\/blogs\/tiktok-scraper-api\/#local-main-organization-logo","url":"https:\/\/scraping-bot.io\/blogs\/wp-content\/uploads\/2025\/10\/scraping-bot-logo.svg","contentUrl":"https:\/\/scraping-bot.io\/blogs\/wp-content\/uploads\/2025\/10\/scraping-bot-logo.svg","width":159,"height":32,"caption":"Scraping-bot"}]}},"_links":{"self":[{"href":"https:\/\/scraping-bot.io\/blogs\/wp-json\/wp\/v2\/posts\/5402","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scraping-bot.io\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/scraping-bot.io\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/scraping-bot.io\/blogs\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/scraping-bot.io\/blogs\/wp-json\/wp\/v2\/comments?post=5402"}],"version-history":[{"count":25,"href":"https:\/\/scraping-bot.io\/blogs\/wp-json\/wp\/v2\/posts\/5402\/revisions"}],"predecessor-version":[{"id":6214,"href":"https:\/\/scraping-bot.io\/blogs\/wp-json\/wp\/v2\/posts\/5402\/revisions\/6214"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/scraping-bot.io\/blogs\/wp-json\/wp\/v2\/media\/6213"}],"wp:attachment":[{"href":"https:\/\/scraping-bot.io\/blogs\/wp-json\/wp\/v2\/media?parent=5402"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scraping-bot.io\/blogs\/wp-json\/wp\/v2\/categories?post=5402"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scraping-bot.io\/blogs\/wp-json\/wp\/v2\/tags?post=5402"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}