{"id":6,"date":"2026-05-24T18:02:03","date_gmt":"2026-05-24T18:02:03","guid":{"rendered":"https:\/\/scrapios.com\/?p=6"},"modified":"2026-05-24T18:02:03","modified_gmt":"2026-05-24T18:02:03","slug":"how-to-scrape-tiktok-profiles-videos","status":"publish","type":"post","link":"https:\/\/scrapios.com\/?p=6","title":{"rendered":"How to Scrape TikTok Profiles and Videos Without Getting Blocked (2026)"},"content":{"rendered":"<p>TikTok data is some of the most valuable social media intelligence available right now. Follower growth rates, video performance metrics, comment sentiment, hashtag reach \u2014 it all feeds into influencer vetting, trend analysis, and competitive research. The problem is TikTok&#8217;s API is severely restricted, and unofficial scraping is aggressively blocked.<\/p>\n<p>This guide shows you what it takes to scrape TikTok \u2014 and why most developers end up using an API instead.<\/p>\n<h2>The Challenge With TikTok Scraping<\/h2>\n<p>TikTok uses multiple layers of bot detection:<\/p>\n<ul>\n<li><strong>Device fingerprinting<\/strong> \u2014 TikTok&#8217;s JS checks canvas rendering, WebGL, fonts, and dozens of browser signals<\/li>\n<li><strong>Signed API requests<\/strong> \u2014 their mobile API uses <code>X-Bogus<\/code> and <code>msToken<\/code> parameters that change with every session<\/li>\n<li><strong>Login walls<\/strong> \u2014 many endpoints return empty results unless you&#8217;re logged in<\/li>\n<li><strong>Geo-restrictions<\/strong> \u2014 content varies by country and some regions are blocked entirely<\/li>\n<\/ul>\n<h2>What Data Is Available<\/h2>\n<p>TikTok has several distinct data types you can extract:<\/p>\n<table>\n<thead>\n<tr>\n<th>Data type<\/th>\n<th>Fields<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Profile<\/td>\n<td>Username, followers, following, likes, bio, verified status<\/td>\n<\/tr>\n<tr>\n<td>Videos<\/td>\n<td>Views, likes, comments, shares, duration, captions, hashtags<\/td>\n<\/tr>\n<tr>\n<td>Comments<\/td>\n<td>Text, author, likes, reply count, timestamp<\/td>\n<\/tr>\n<tr>\n<td>Hashtag feed<\/td>\n<td>Top videos for a given hashtag, post count<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>The Manual Approach<\/h2>\n<p><strong>Step 1 \u2014 Install Playwright<\/strong><\/p>\n<pre><code>pip install playwright\nplaywright install chromium<\/code><\/pre>\n<p><strong>Step 2 \u2014 Launch a browser session<\/strong><\/p>\n<pre><code>from playwright.async_api import async_playwright\nimport asyncio, json\n\nasync def scrape_profile(username):\n    async with async_playwright() as p:\n        browser = await p.chromium.launch(headless=False)\n        context = await browser.new_context(\n            user_agent=\"Mozilla\/5.0 (iPhone; CPU iPhone OS 17_0...)\",\n            viewport={\"width\": 390, \"height\": 844},\n        )\n        page = await context.new_page()\n        await page.goto(f\"https:\/\/www.tiktok.com\/@{username}\")\n        await page.wait_for_timeout(3000)\n\n        # Extract follower count\n        followers = await page.locator('[data-e2e=\"followers-count\"]').text_content()\n        print(f\"@{username}: {followers} followers\")\n        await browser.close()\n\nasyncio.run(scrape_profile(\"nasa\"))<\/code><\/pre>\n<p><strong>Step 3 \u2014 Handle the inevitable blocks<\/strong><\/p>\n<p>TikTok detects Playwright within a few requests even with <code>headless=False<\/code>. Getting past this requires:<\/p>\n<ul>\n<li>Anti-detect browser patches (Camoufox, rebrowser-patches, or similar)<\/li>\n<li>Residential proxies \u2014 datacenter IPs are instantly flagged<\/li>\n<li>Solving or avoiding the CAPTCHA challenge that appears on first load<\/li>\n<li>Session cookies from real TikTok accounts (risky, violates ToS)<\/li>\n<\/ul>\n<p>Maintaining all of this as TikTok updates its bot detection every few weeks is a full-time job.<\/p>\n<h2>The Easier Way \u2014 Scrapios<\/h2>\n<p>Scrapios maintains a TikTok scraper that keeps up with their anti-bot updates automatically. Here&#8217;s how to pull a profile:<\/p>\n<p><strong>1. Get your API key free at <a href=\"https:\/\/app.scrapios.com\/register\" target=\"_blank\">app.scrapios.com<\/a><\/strong><\/p>\n<p><strong>2. Submit the job<\/strong><\/p>\n<pre><code>curl -X POST https:\/\/api.scrapios.com\/api\/v1\/ext\/jobs \n  -H \"X-API-Key: scr_live_YOUR_KEY\" \n  -H \"Content-Type: application\/json\" \n  -d '{\n    \"url\": \"https:\/\/www.tiktok.com\/@nasa\",\n    \"catalog_scraper_id\": 4,\n    \"catalog_version_id\": 12\n  }'<\/code><\/pre>\n<p><strong>3. Get the result<\/strong><\/p>\n<pre><code>{\n  \"status\": \"completed\",\n  \"result\": {\n    \"preview_data\": [{\n      \"username\": \"nasa\",\n      \"display_name\": \"NASA\",\n      \"followers\": 9300000,\n      \"following\": 12,\n      \"likes\": 87400000,\n      \"video_count\": 241,\n      \"bio\": \"Explore the universe and discover our home planet...\",\n      \"verified\": true,\n      \"avatar_url\": \"https:\/\/...\"\n    }]\n  }\n}<\/code><\/pre>\n<h2>Influencer Research Workflow<\/h2>\n<p>Here&#8217;s a real workflow used by marketing teams:<\/p>\n<ol>\n<li>Build a list of 100\u2013500 TikTok handles in your niche<\/li>\n<li>Batch-submit jobs to pull follower counts and recent video metrics<\/li>\n<li>Calculate engagement rate: <code>(likes + comments) \/ followers \u00d7 100<\/code><\/li>\n<li>Filter for accounts with engagement rate > 5% and followers 10k\u2013500k (the sweet spot for micro-influencers)<\/li>\n<li>Re-scrape weekly to track growth trends<\/li>\n<\/ol>\n<p>With 500 free credits\/month, you can monitor up to 50 profiles weekly at no cost.<\/p>\n<div style=\"background:#0c1629;border:1px solid #27272a;border-radius:16px;padding:40px;text-align:center;margin:40px 0;\">\n<h3 style=\"color:#fff;margin-bottom:12px;\">Start scraping TikTok for free<\/h3>\n<p style=\"color:#71717a;font-size:.9rem;margin-bottom:24px;\">500 credits\/month free. No credit card. Results in under 30 seconds.<\/p>\n<p>  <a href=\"https:\/\/app.scrapios.com\/register\" style=\"background:#7c3aed;color:#fff;padding:12px 28px;border-radius:8px;font-weight:600;text-decoration:none;display:inline-block;\">Try Scrapios free \u2192<\/a>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Extract TikTok follower counts, video metrics, and comment data for influencer research and competitor analysis \u2014 without getting your IP banned.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-6","post","type-post","status-publish","format-standard","hentry","category-tutorials"],"_links":{"self":[{"href":"https:\/\/scrapios.com\/index.php?rest_route=\/wp\/v2\/posts\/6","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scrapios.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/scrapios.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/scrapios.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/scrapios.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6"}],"version-history":[{"count":0,"href":"https:\/\/scrapios.com\/index.php?rest_route=\/wp\/v2\/posts\/6\/revisions"}],"wp:attachment":[{"href":"https:\/\/scrapios.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scrapios.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scrapios.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}