

TikTok data scraping is the automated collection of publicly available information from TikTok, such as profile details, video metadata, hashtags, comments, and engagement metrics, for research, marketing, and analytics. You can collect it in four ways: TikTok's official Research API, open-source libraries, a custom Python scraper, or a no-code platform. Residential, mobile, and datacenter proxies keep large-scale collection stable and market-accurate.
Key takeaways
TikTok data scraping is the automated collection of publicly available data from TikTok, including profile details, video metadata, hashtags, comments, sounds, and engagement metrics. Researchers, marketers, and analysts use it to study trends, measure influencer performance, and monitor markets. It works by requesting TikTok pages or endpoints with a script or tool and converting the responses into structured datasets such as JSON or CSV.
Scraping isn't the same as saving one video. A download gives you a single file. TikTok's personal data export only covers your own account. Scraping turns thousands of public pages into rows you can work with.
SEO and market research teams use it to track rising topics. Ad verification specialists check how campaigns look in each market, and social listening teams follow brand mentions in comments. Agencies compare creators before signing a deal. Our data scraping use cases page has more examples.
One rule frames everything below. Publicly available data is what any visitor sees without logging in. Private accounts and login-gated pages are out of scope for every setup we cover at Proxy-Cheap.
You can collect any TikTok data that is publicly visible without logging in: profile fields (username, bio, follower and following counts, verification status), video metadata (caption, hashtags, sound, view, like, share, and comment counts, timestamps), comment threads, hashtag feeds, and search results. Private-account data and anything behind a login is out of scope for compliant collection.
Here's how the main data types break down:
| Data type | Example fields | Typical use |
|---|---|---|
| Profiles | Username, nickname, bio, verified flag, follower, following, like, and video counts | Influencer vetting, audience sizing |
| Videos | Caption, hashtags, sound, views, likes, shares, comments, post time, duration | Content and trend analysis |
| Comments | Comment text, like count, reply count, post time | Sentiment and social listening |
| Hashtags | Hashtag name, video list, post volume | Campaign tracking, topic research |
| Search results | Matching videos and accounts for a keyword | Share of voice, competitor monitoring |
Engagement metrics live in a stats object inside each profile or video record, right next to the descriptive fields. Once you know the path, you can pull them in one line.
Give sound metadata a quick sanity check. Licensing changes can remove or mute tracks, leaving music fields empty or out of date.
This data feeds market research across regions and categories. If a field only appears after login, leave it out.

There are four practical ways to collect TikTok data in 2026: TikTok's official Research API for approved researchers, open-source scraping libraries, a custom Python scraper that reads the JSON embedded in TikTok pages, and no-code scraping platforms. Each suits a different skill level, data volume, and appetite for maintenance. The rest of this section covers when to pick each.
There's no single best TikTok scraper. The right choice depends on your coding skill and how much upkeep you're willing to handle.
The Research API is TikTok's first-party route to public data. It covers public videos and comments, plus account details such as bios and follower counts.
Access is narrow, though. According to TikTok for Developers, applicants must be affiliated with an academic institution in the US, EEA, UK, Canada, or Switzerland, or an eligible not-for-profit research body. Applicants need a research proposal and must be independent of commercial interests. TikTok says to expect a response within four weeks.
Quotas apply once you're approved. The Research API FAQ lists 1,000 requests per day and up to 100,000 records per day, with up to 100 records per request. New videos can take up to 48 hours to become searchable.
Pros: the compliant, stable, first-party route.
Cons: gated eligibility and no commercial use.
Community-maintained Python and Node libraries on GitHub collect public profile and video data. Most wrap TikTok's web endpoints, so you call a function instead of parsing pages.
The catch is upkeep. TikTok changes its internal endpoints and page structure often. Developer guides published in 2026 put the cycle at roughly every four to eight weeks for endpoints. When that happens, a library can break until its maintainers ship a fix.
Open-source tools fit quick, low-cost pulls where occasional breakage is fine. Check a project's recent commits before you rely on it.
TikTok is a single-page app. Much of its public data doesn't sit in the visible HTML. Instead, each profile and video page carries a JSON blob inside a <script id="__UNIVERSAL_DATA_FOR_REHYDRATION__"> tag. Profile details live under __DEFAULT_SCOPE__ → webapp.user-detail → userInfo, and video details sit under webapp.video-detail.
A lightweight HTTP client can do most of the work here. Fetch the page with httpx or requests, find the script tag with BeautifulSoup, then pull the fields you need with JMESPath:
python import json import os import httpx import jmespath from bs4 import BeautifulSoup # Copy host, port, username, and password from your Proxy-Cheap dashboard PROXY = "http://{}:{}@{}:{}".format( os.environ["PROXY_USER"], os.environ["PROXY_PASS"], os.environ["PROXY_HOST"], os.environ["PROXY_PORT"], ) HEADERS = { "User-Agent": ( "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 " "(KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36" ), "Accept-Language": "en-US,en;q=0.9", } BASE_URL = "https://www.tiktok.com" # Pick the public fields you need from the embedded JSON PROFILE_FIELDS = """{ username: user.uniqueId, nickname: user.nickname, bio: user.signature, verified: user.verified, private_account: user.privateAccount, followers: stats.followerCount, following: stats.followingCount, likes: stats.heartCount, videos: stats.videoCount }""" def get_profile(username: str) -> dict: with httpx.Client(proxy=PROXY, headers=HEADERS, timeout=30, follow_redirects=True) as client: response = client.get(f"{BASE_URL}/@{username}") response.raise_for_status() soup = BeautifulSoup(response.text, "html.parser") script = soup.find("script", id="__UNIVERSAL_DATA_FOR_REHYDRATION__") if script is None: raise ValueError("Embedded JSON not found. The page layout may have changed.") data = json.loads(script.string) user_info = data["__DEFAULT_SCOPE__"]["webapp.user-detail"]["userInfo"] return jmespath.search(PROFILE_FIELDS, user_info) if __name__ == "__main__": print(json.dumps(get_profile("tiktok"), indent=2))
Run it against TikTok's official account and you get a clean record:
json { "username": "tiktok", "nickname": "TikTok", "bio": "Your next discovery is waiting on TikTok.", "verified": true, "private_account": false, "followers": 96300000, "following": 1, "likes": 465000000, "videos": 1498 }
We tested the script with Python 3.13, httpx 0.28.1, BeautifulSoup 4.15.0, and JMESPath 1.1.0 through a password-protected proxy. The JSON paths match TikTok's live profile page as of October 2026. Keep the if script is None check, because a layout change shows up there first.
Dynamic data loads differently. Channel video lists and comments arrive through internal XHR endpoints after the page renders. Capture them with a headless browser such as Playwright or Puppeteer, or call the endpoint directly and page through it with the cursor parameter. Search-type endpoints also expect session cookies, so load the page once and reuse them. TikTok limits some actions to logged-in users, so skip those.
To create or rotate proxies from scripts, see our guide to the Proxy-Cheap proxy API. New to the terms? Start with our overview of proxy types.
Template-based and visual scraping tools collect TikTok data from a profile URL, hashtag, keyword, or search. Results export to CSV, Google Sheets, or JSON.
They suit non-developers and one-off pulls, though you pay per row or per run and get less control. Proxies still help for market-accurate collection at volume. To spot-check a market by hand, the Chrome proxy extension switches proxy profiles in your browser.
Here's how the four methods compare:
| Method | Skill level | Best for | Maintenance | Cost model |
|---|---|---|---|---|
| Research API | Medium | Approved academic and not-for-profit research | Low (first-party, documented) | Approval required, fixed daily quota |
| Open-source libraries | Medium | Quick, low-cost pulls | High (breaks when endpoints change) | Free tool, plus proxies at volume |
| Custom Python scraper | High | Full control over fields and schedule | Medium to high (you fix it) | Your time, plus proxies |
| No-code platforms | Low | Non-developers, one-off exports | Low (vendor maintains it) | Per row or per run |
Match the proxy to the job. Rotating residential proxies suit large-scale, market-accurate collection across many profiles and hashtags. Mobile proxies fit mobile-first social data and the highest-trust sessions. Static residential (ISP) proxies fit long-lived, session-bound collection that needs a consistent address. Datacenter proxies fit high-throughput collection of public, unprotected pages where speed matters most.
Here's the matrix we use:
| Collection job | Recommended proxy line | Why it fits |
|---|---|---|
| Thousands of profiles and hashtags across markets | Rotating residential | Real ISP-assigned IPs, country and city targeting, a fresh IP per request or sticky sessions |
| Mobile-first feeds and the highest-trust sessions | Rotating mobile | IPs from real mobile carriers on 5G, 4G, 3G, and LTE networks |
| Long-running jobs that need one consistent address | Static residential (ISP) | A fixed residential IP for as long as you need it, with country and ISP targeting |
| Large crawls of public, unprotected pages | Datacenter IPv4 and IPv6 | High throughput, dedicated IPs, and unlimited bandwidth |
At scale, TikTok data collection runs into rate limits and inconsistent responses. A pool of residential or mobile IPs lets you distribute requests across many addresses and collect from the specific markets you need, so results stay consistent and location-accurate. Datacenter and unlimited-bandwidth lines add throughput for large public-page crawls, and pay-as-you-go pricing on rotating lines means no monthly commitment.
TikTok says it uses rate limiting, so a high-volume job sent from one IP slows down fast. A rotating pool spreads those requests across many addresses, and each IP carries a small share of the load. Add sensible delays between requests too.
Location matters just as much, because TikTok's feeds and search results vary by market. Geo-specific IPs in the market you're studying return location-accurate data instead of your server's local view. Rotating residential proxies support country and city targeting for this.
Some tasks need one steady address instead. Cookie-based search sessions and long monitoring runs work better on a fixed IP. ISP proxies come in static and rotating options, so each job gets the behavior it needs.
For throughput, datacenter proxies suit large crawls of public pages. Sustained, data-heavy jobs fit unlimited bandwidth proxies, which offer SOCKS5 across 195+ locations with no data caps.
Running your own IP infrastructure means servers and constant upkeep. With pay-as-you-go billing, you pay only for the data you move, with 256-bit SSL on every checkout. If you also manage TikTok accounts, see our page on proxies for TikTok.
Ready to scale your TikTok data collection? Start with rotating residential proxies on pay-as-you-go pricing. There's no monthly commitment, and you can cancel anytime.
Collecting publicly available data has legal precedent, but TikTok's Terms of Service prohibit automated access, and personal data is regulated. Compliant practice means collecting only publicly visible data, respecting TikTok's robots.txt and reasonable request rates, avoiding login-gated or private content, and handling any personal data under GDPR and CCPA. For commercial projects, get legal advice.
This section is general information, not legal advice. Laws differ by country and continue to evolve.
The US Terms of Service (last updated July 15, 2026) prohibit scraping, crawling, or extracting data with automated software unless TikTok approves it in writing. TikTok also explains its position in How We Combat Unauthorized Data Scraping, which names CAPTCHAs and rate limiting among its measures. If you collect data while logged in to an account, that account can face enforcement.
TikTok's robots.txt (tiktok.com/robots.txt) is the second check. As of October 2026, it disallows general crawlers from paths such as /auth, /inapp, /link, /search?, and /discover/trending/detail/. It also lists named AI crawlers that are disallowed from the whole site. Public profile and video pages aren't on the disallow list for general crawlers. Check the live file before each project.
Personal data adds another layer, since usernames and comments can identify people. Under GDPR, you need a lawful basis to store personal data of people in the EU, and CCPA brings similar duties for California residents. Collect only the fields you need.
Keep these off your list:
Proxy-Cheap customers also agree to our appropriate use policy, which sets out how the network may be used.