TikTok Scraper: Public TikTok Pages via API
ProxyField's TikTok scraper is its Web Scraping API, priced at $2.00 per 1,000 rendered TikTok pages ($1.00 from 10,000 results in one purchase) and $0.50 per 1,000 over plain HTTP ($0.20), billed on successful results only; it is in development, so access goes through Contact sales and its design is in the API documentation. Today, TikTok's public data is reached three ways: with no code, a hosted template such as Octoparse's TikTok Scraper, at $1.50 per 1,000 output lines; with your own scraper on ProxyField residential proxies, starting with the Easy Trial: 1 GB for $2.95; or, for approved non-commercial researchers only, TikTok's Research API. No TikTok account is needed for public profiles, videos or comments.
Through the sales team on our 24/7 live chat
| Fetch | Entry | Volume, from |
|---|---|---|
| HTTP | $0.50 | $0.20 |
| JS rendering | $2.00 | $1.00 |
Billed on successful results only.
| Quick answers | |
|---|---|
| Status of ProxyField's API | In development: Contact sales; design in the API documentation |
| API price | $0.50 per 1,000 pages over plain HTTP ($0.20 from 10,000 results in one purchase); $2.00 rendered ($1.00 from 10,000) |
| Billing unit | The page: one rendered video page is one result however many comments it loads |
| TikTok account needed | No: public profiles, videos and tag pages are the scope, and no route here signs in |
| No-code tool that works today | A hosted template, such as Octoparse's TikTok templates (Excel, CSV or JSON) |
| Proxies for your own scraper | Residential $2.95/GB for 1 GB to $1.95/GB from 1,000 GB; mobile $3.45 to $2.45/GB |
TikTok's Research API or a scraper for hashtag tracking?
No: for a brand, the Research API is not enough. It is not open to brands, new videos take up to 48 hours to appear, statistics take up to 10 days to update, and an approved project gets 1,000 requests and up to 100,000 records a day. TikTok's product page says it is for "qualified researchers in the U.S., Europe, Canada, and Brazil" who are "independent of commercial interests", affiliated with an eligible academic or not-for-profit organisation and approved for one research project; its FAQ adds that creators, advertisers and commercial users are not eligible. Even for approved researchers it is a research archive, not a live feed.
Read moreShow less
Sources: TikTok's Research API pages (product page, FAQ, video query spec).
| Item | TikTok Research API | Public tag page, checked on a schedule |
|---|---|---|
| Who can use it | Approved, non-commercial researchers, per project | Public pages only, following the site's terms; TikTok's terms forbid automated collection (below) |
| Hashtag tracking | hashtag_name filter on the video query | tiktok.com/tag/<hashtag>, rendered |
| Freshness | New videos take up to 48 hours to appear; statistics up to 10 days to update | The page as TikTok serves it at request time |
| Limits | 1,000 requests a day, up to 100,000 records a day; 100 videos per request; 30 days per query | A selection of the tag's videos, not every video ever posted |
| Data | Parsed fields (view_count, like_count, hashtag_names …) | The page; your parser reads the fields |
| Other official route | TikTok's other developer APIs work only with the signed-in user's own account and videos | |
| Cost | Set by TikTok | ProxyField API design: $2.00 per 1,000 rendered tag pages, $1.00 from 10,000 |
A hashtag request on the Research API, as TikTok's video query spec shows it (dates as YYYYMMDD, at most 30 days apart):
curl -X POST "https://open.tiktokapis.com/v2/research/video/query/?fields=id,create_time,username,view_count,like_count,comment_count,hashtag_names" \
-H "Authorization: Bearer <research_access_token>" \
-H "Content-Type: application/json" \
-d '{"query": {"and": [{"operation": "EQ", "field_name": "hashtag_name", "field_values": ["examplebrand"]}]},
"start_date": "20261001", "end_date": "20261027", "max_count": 100}'A scraper tracks a hashtag by checking the tag page on a schedule, storing the new video URLs it finds, then fetching those video pages for their counts over plain HTTP. One check, once your parser has read it (example values; the field names are yours):
{"hashtag": "examplebrand", "checked_at": "2026-10-27T09:00:00Z", "videos_on_page": 30, "new_since_last_check": 4,
"new_videos": [{"url": "https://www.tiktok.com/@creator_one/video/<id>", "plays": 18400, "likes": 1210, "comments": 37}]}Tracking 10 hashtags daily is 300 rendered tag pages a month: $0.60 at $2.00 per 1,000 on the API's design, plus the new video pages over plain HTTP at $0.50 per 1,000. TikTok's terms forbid automated collection, so the choice is a terms-and-risk decision as well as a technical one.
Scrape TikTok without writing code
The no-code route that works today is a ready-made TikTok template in a hosted scraper app. Octoparse's TikTok Scraper template collects videos, profiles, comments and replies from keywords, video URLs or @handles in one task, runs in Octoparse Cloud with optional scheduled runs, and exports Excel, CSV or JSON in 101 fixed columns. Its page lists $1.50 per 1,000 output lines on the Standard plan, $1.20 on Professional and $0.90 on Enterprise (page updated 2026/09/23; check the current price there).
What an export looks like, one row per video with the profile beside it (column names from Octoparse's profile app below; example values):
| author | followers | following | is_verified | video_url | description | post_date | views_num | like_num | comment_num | bookmark_num |
|---|---|---|---|---|---|---|---|---|---|---|
| example_brand | 48200 | 310 | false | https://www.tiktok.com/@example_brand/video/ | Fall drop, part 2 #examplebrand | 2026-10-24 | 18400 | 1210 | 37 | 95 |
Read moreShow less
-
Open the template in Octoparse and sign in to Octoparse. You need an Octoparse account, not a TikTok account.
-
Enter what to collect, one item per line: keywords under Search Queries, video or photo URLs under Direct Video URLs, profile URLs or @handles under TikTok Profiles. A profile returns account data only, not the account's video list, so add video URLs or a keyword for videos.
-
Set comments enter 1 or more to collect comments and replies; leave it blank or 0 to skip them. The page says requested counts are not exact limits.
-
Run it in Octoparse Cloud, or set a schedule for a weekly re-check.
-
Export
Excel, CSV or JSON. Each reply row repeats its video and main comment, so a sheet filter on the main comment groups a thread.
For a list of known profiles, Octoparse's TikTok Profile Scraper app takes 1 to 10,000 profile URLs per run and returns one record per video with the profile beside it, at $0.001 per record successfully returned; failed runs are not charged (its page). Fields it shows include:
| Profile | Video |
|---|---|
author, author_subtitle (display name), author_bio, followers, following, is_verified, is_private | video_url, description (caption), hashtag, post_date, video_duration, views_num, like_num, comment_num, bookmark_num, music_name |
Which no-code route, by size of job:
| Job | Route | Steps to the first file | Cost |
|---|---|---|---|
| A handful of pages, by hand | A browser extension that exports what your browser shows (web scraper extensions) | open the page, click export | The extension; your own connection |
| A one-off export or a weekly re-check, today | A hosted template (above) | paste URLs or handles, run, export | Octoparse's per-line or per-record price, from $0.90 to $1.50 per 1,000 lines |
| The same profiles, videos or tags on a schedule, into your own sheet or database | An HTTP step in n8n, Make or Zapier calling ProxyField's Web Scraping API (in development; steps below) | list URLs, add the HTTP step, map fields, schedule | $2.00 per 1,000 rendered pages ($1.00 from 10,000) |
| Full control, some code | Your own Python or Playwright on ProxyField residential proxies (below) | install, set the proxy line, run the script | Easy Trial: 1 GB for $2.95; then from $1.95/GB |
Where ProxyField's proxies fit in a no-code tool. Octoparse's TikTok templates run in Octoparse Cloud on Octoparse's own IPs, so they take no proxy from you. Octoparse accepts your own proxies only on local runs of a task you build, as HTTP IP:port lines without a username or password (Octoparse docs). With ProxyField that means the IP allowlist: add your computer's IP in the dashboard, set the product and location for a port there, and enter gate.proxyfield.io with that port; the full setup is in no-code web scrapers. In a tool whose proxy form has username and password fields, enter host gate.proxyfield.io, port 7000 and a username such as <login>-country-us-session-tt01-ttl-1200 for one US IP held for 20 minutes.
The scheduled route on ProxyField's API (design, in development; access through Contact sales). v1 has no SDK, MCP server or no-code export, so the integration is one HTTP step:
-
List the URLs of the public profiles or videos in a sheet, one per row.
-
Add an HTTP step that sends
POST https://api.proxyfield.io/v1/scrapewith the headerAuthorization: Bearer <api_key>and the body below. Theevaluateaction reads TikTok's embedded data in the rendered page and returns only the counts, so the tool needs no HTML parser. -
Map the fields from
actions_log[0].result(followerCount,followingCount,heartCount,videoCount) to columns. -
Write the row back and schedule the run daily or weekly.
{
"url": "https://www.tiktok.com/@example",
"render": true,
"output": "json",
"actions": [
{"type": "evaluate",
"script": "return JSON.parse(document.getElementById('__UNIVERSAL_DATA_FOR_REHYDRATION__').textContent).__DEFAULT_SCOPE__['webapp.user-detail'].userInfo.stats"}
]
}actions_log[0].result for a profile (example values) becomes one sheet row:
| profile_url | date | followers | following | likes | videos |
|---|---|---|---|---|---|
| https://www.tiktok.com/@example | 2026-10-27 | 48200 | 310 | 1650000 | 212 |
A typical job: 1,000 profiles checked weekly is 4,000 pages in a 4-week month, $8.00 rendered or $2.00 over plain HTTP with one code step that reads the same script tag (n8n's Code node, Make's or Zapier's code step). __UNIVERSAL_DATA_FOR_REHYDRATION__ and its keys are the names in TikTok's page source when we checked; TikTok renames them from time to time, so when a field comes back empty, search the page source for followerCount.
How to scrape all the comments on a TikTok video, without an account
In short: no TikTok account is needed for a public video's comments, and no route returns all of them. Compare your row count with the video's comment count: the gap is what the route missed. Each row holds id, author, text, likes, replies (count), parent and posted. A worked cost: 100 videos at 500 rows each on Octoparse's comments template is 50,000 lines, about $20 at $0.40 per 1,000; on ProxyField's API design, 100 rendered video pages are $0.20, plus one page per reply thread you open.
Read moreShow less
No TikTok account is needed to collect a public video's comments, and you should not sign one in to a scraper. Octoparse's comments template asks only for public video URLs, a browser that loads the video page logged out sees the comments TikTok shows logged-out visitors, and the Research API needs an approved research project, not a TikTok account. "All" is never guaranteed: deleted, hidden and moderated comments never appear, TikTok may show logged-out visitors a log-in prompt or only part of a thread, and every route stops at a cap.
| Route | What "all" means on it | Account needed |
|---|---|---|
| Octoparse comments template (no code, today) | Up to the "Maximum Results per URL" you set, comments and replies counted together | An Octoparse Standard plan or higher; no TikTok account |
| TikTok Research API | Up to 100 comments per request; repeat with cursor while has_more is true; TikTok says it may return fewer, for example when users deleted comments | An approved research project |
| Your own browser on residential proxies | What TikTok loads for a logged-out visitor as you scroll | None |
| ProxyField's Web Scraping API (design, in development) | What one rendered request loads with up to 20 actions | None |
Check how close you got: compare your row count with the video's comment count (commentCount in the video page's embedded stats, comment_count on the Research API). The gap is what the route did not reach.
1. No code, today: Octoparse's comments template. The TikTok Video Details & Comments Scraper takes up to 10,000 public video URLs, runs in Octoparse Cloud and exports Excel, CSV or JSON with 54 fields, including reply rows linked by parentCommentId. Its page lists $0.40 per 1,000 output lines (updated 2026/10/23).
-
Paste the public video URLs, one per line.
-
Set Maximum Results per URL, for example 500 for each video's comments and replies together.
-
Run it in Octoparse Cloud.
-
Export the file and compare each video's rows with its comment count.
At that price, 100 videos at 500 rows each are 50,000 lines, about $20.
2. The Research API, for approved researchers. TikTok's comment endpoint returns up to 100 comments per request (max_count, default 10). Send the video_id, then repeat with the returned cursor while has_more is true. Replies come from the same endpoint with the parent's comment_id instead of the video_id; you send one or the other, not both.
curl -X POST "https://open.tiktokapis.com/v2/research/video/comment/list/?fields=id,video_id,text,like_count,reply_count,parent_comment_id,create_time" \
-H "Authorization: Bearer <research_access_token>" \
-H "Content-Type: application/json" \
-d '{"video_id": 7300000000000000000, "max_count": 100, "cursor": 0}'The response holds data.comments, data.cursor (the next page) and data.has_more. TikTok redacts phone numbers, emails and card numbers in the text (comment spec).
3. Self-hosted: Playwright on ProxyField residential proxies. TikTok's web page loads comments in pages of JSON as you scroll, so the script listens for those responses instead of parsing the layout. A sticky session keeps one video's scroll on one IP:
# pip install playwright && playwright install chromium
import json
from playwright.sync_api import sync_playwright
VIDEO = "https://www.tiktok.com/@example/video/<id>"
PROXY = {"server": "http://gate.proxyfield.io:7000",
"username": "<login>-country-us-session-cm01-ttl-1200", # one US IP for 20 min
"password": "<password>"}
rows = []
def on_response(resp):
if "/api/comment/list/" in resp.url: # replies: "/api/comment/list/reply/"
data = resp.json()
for c in data.get("comments") or []:
rows.append({"id": c.get("cid"), "author": (c.get("user") or {}).get("unique_id"),
"text": c.get("text"), "likes": c.get("digg_count"),
"replies": c.get("reply_comment_total"), "created": c.get("create_time")})
print(len(rows), "of", data.get("total"), "has_more:", data.get("has_more"))
with sync_playwright() as p:
browser = p.chromium.launch(headless=False, proxy=PROXY)
page = browser.new_page()
page.on("response", on_response)
page.goto(VIDEO, wait_until="domcontentloaded")
page.wait_for_timeout(5000)
for _ in range(30): # scroll the comment list; stop when rows stop growing
before = len(rows)
page.mouse.wheel(0, 4000)
page.wait_for_timeout(2000)
if len(rows) == before:
break
browser.close()
json.dump(rows, open("comments.json", "w"), ensure_ascii=False, indent=1)What you see: a running count such as 120 of 1843 has_more: 1, then comments.json. The endpoint and field names (cid, digg_count, reply_comment_total, total) are the ones TikTok's web app used when we checked; open DevTools → Network on a video page, filter for comment/list, and match them before a large run. If the count stops growing early, click into the comment list once and scroll again: the window shows which part of the page scrolls. Proxy traffic is billed per GB; run 10 videos and read their traffic in the dashboard's real-time usage stats before you plan a volume. The same proxy settings work in Playwright and Puppeteer.
4. ProxyField's Web Scraping API (design, in development; access through Contact sales). The billing unit is the page: one rendered video page is one result, $0.002 at $2.00 per 1,000 ($0.001 from 10,000), whether it loads 20 comments or 500. Render the video page, wait for the comments, scroll, and open reply threads with click, up to 20 actions per request:
curl https://api.proxyfield.io/v1/scrape \
-H "Authorization: Bearer <api_key>" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.tiktok.com/@example/video/<id>",
"render": true, "country": "us", "output": "json",
"wait_for": "[data-e2e=\"comment-level-1\"]",
"actions": [{"type": "infinite_scroll", "max_count": 30, "delay_ms": 1500},
{"type": "click", "selector": "<a View replies button>"},
{"type": "wait", "ms": 1500}]}'The rendered HTML comes back in content. comment-level-1 is the data-e2e selector TikTok's page used for top-level comments when we checked; confirm it, and copy the selector of a "View replies" button, in your browser's inspector (right-click → Inspect). Each click opens one reply thread (the first match), so a request reaches the main comments the scroll loads plus a few threads; a video with many threads takes several requests, each one billed result. Your parser reads, per comment:
| Field | On the page | Research API name | Example |
|---|---|---|---|
| author | the commenter's handle | (not in the field list) | creator_fan_01 |
| text | the comment text | text | Where is this jacket from? |
| likes | the heart count beside it | like_count | 214 |
| replies | the number on "View replies" | reply_count | 6 |
| parent | the thread a reply sits in | parent_comment_id | the parent's id |
| posted | the date under the comment | create_time (Unix time) | 3d ago on the page |
Comment authors are personal data, and many TikTok users are minors: keep only what your analysis needs.
Public TikTok data and how the API fetches it
TikTok's website shows logged-out visitors public profiles, public videos and tag pages, and each page carries its data as JSON for TikTok's own front end. Private accounts, direct messages and the For You feed are out of scope.
| Page | URL pattern | Public data on the page | Fetch with (API design) |
|---|---|---|---|
| Profile | tiktok.com/@<username> | Nickname, bio, link, verified badge, follower, following, like and video counts, recent videos | Plain HTTP ($0.50 per 1,000) |
| Video | tiktok.com/@<username>/video/<id> | Caption, hashtags, sound, date, play, like, comment, share and save counts, duration | Plain HTTP ($0.50 per 1,000) |
| Hashtag | tiktok.com/tag/<hashtag> | Videos for the tag and the view count, where TikTok shows them logged out | JS rendering ($2.00 per 1,000) |
| Comments | the video URL, rendered | The comments TikTok shows logged-out visitors | JS rendering ($2.00 per 1,000) |
Read moreShow less
TikTok shows more to signed-in users and changes what logged-out visitors see, so test each page type on a few URLs before you plan a volume.
The design: a POST to https://api.proxyfield.io/v1/scrape with Authorization: Bearer <api_key> and a JSON body.
| Parameter | Values | Use on TikTok |
|---|---|---|
url | a public TikTok URL | profile, video or tag page |
render | false (plain HTTP) or true (browser) | true for comments and tag pages |
country | a two-letter code, any of the pool's 195+ countries | us for the US view |
output | html, markdown, text, json | json for the envelope below |
wait_for | a CSS selector | the comment list |
actions | up to 20: click, scroll, infinite_scroll, evaluate … | load more comments, read embedded data |
{
"metadata": {"id": "req_18157e93f3138079", "api": "web_scrape", "status": "success", "billed": true},
"status_code": 200,
"final_url": "https://www.tiktok.com/@example",
"content_type": "text/html; charset=utf-8",
"content": "<!DOCTYPE html><html lang=\"en\">…</html>"
}A batch takes up to 1,000 requests and calls your webhook as each one finishes; results are kept 48 hours. The account runs 20 concurrent requests, and the API runs on ProxyField's own pool. Start with plain HTTP and render only the page types where the data you need is missing.
Pricing: $0.50 per 1,000 TikTok pages, $0.20 from 10,000
You pay only for successful results. Billed: a page TikTok returned, including a 404 or 410 and a log-in page TikTok serves with a 200 status. Not billed: error responses, blocked and timed-out requests, and our internal retries on new IPs. Every response says whether it was billed.
| Choice | Under 10,000 results in one purchase | From 10,000 results in one purchase | Use it for |
|---|---|---|---|
| Plain HTTP | $0.50 per 1,000 | $0.20 per 1,000 | Profile and video pages: the counts are in the embedded JSON |
| JS rendering | $2.00 per 1,000 | $1.00 per 1,000 | Comments, tag pages, more videos on scroll |
| Workload, one 30-day month bought in one purchase | Results | Plain HTTP | JS rendering |
|---|---|---|---|
| 1,000 creator profiles, counts checked daily | 30,000 | $6 | $30 |
| 20,000 videos, stats once a week | about 86,000 | about $17 | about $86 |
| 200,000 video pages | 200,000 | $40 | $200 |
Payment: the same crypto balance as proxies (USDT, BTC, ETH and 10 other coins), which never expires; there is no subscription, plan or monthly fee. All prices: pricing.
Through the sales team on our 24/7 live chat
Scrape TikTok with Python and ProxyField proxies
For profile and video pages, Python through rotating residential IPs works without a browser: fetch the page and load the JSON that TikTok embeds in a script tag. The code saves the page when the tag is missing, because TikTok renames it from time to time.
import json
import requests
from bs4 import BeautifulSoup
proxy = "http://<login>-country-us:<password>@gate.proxyfield.io:7000" # a new US IP per request
url = "https://www.tiktok.com/@example" # a public profile
resp = requests.get(url, proxies={"http": proxy, "https": proxy},
headers={"User-Agent": "Mozilla/5.0", "Accept-Language": "en-US"},
timeout=30)
soup = BeautifulSoup(resp.text, "html.parser")
tag = soup.find("script", id="__UNIVERSAL_DATA_FOR_REHYDRATION__")
if resp.status_code != 200 or tag is None:
open("page.html", "w").write(resp.text) # blocked, or the tag changed: inspect
else:
scope = json.loads(tag.string).get("__DEFAULT_SCOPE__", {})
info = scope.get("webapp.user-detail", {}).get("userInfo", {})
print(info.get("user", {}).get("uniqueId"), info.get("stats"))
# stats: followerCount, followingCount, heartCount, videoCount
# video pages: scope["webapp.video-detail"]["itemInfo"]["itemStruct"]["stats"]The proxy line in the dashboard's format: gate.proxyfield.io:7000:<login>-country-us-city-new_york-session-tt01-ttl-1200:<password>. ProxyField residential proxies cost $2.95/GB for 1 GB and fall to $1.95/GB from 1,000 GB, with no subscription; the traffic never expires, and all purchases are final. You get 412M+ residential IPs in 195+ countries and 21,000+ cities, a new IP on every request or a sticky session from 30 s to 36 h (20 min when you set a session without ttl), over HTTP, HTTPS or SOCKS5, and UDP over SOCKS5 on residential. Mobile proxies cost $3.45/GB for 1 GB down to $2.45 from 1,000 GB.
What teams use TikTok data for
- Influencer vetting follower counts, posting frequency and engagement per video before a campaign.
- Hashtag and trend research which tags, sounds and formats grow in your category.
- Campaign reporting plays, likes and shares on the videos of a paid campaign, tracked daily.
- Comment research questions and complaints under your own and competitors' videos.
Running your own TikTok accounts through fixed IPs is a different job: TikTok proxies.
TikTok's terms and the law
TikTok's terms of service forbid collecting content or information with automated means, so scraping even public pages is a breach of its terms, separate from whether it breaks a law; a third-party no-code tool does not move that responsibility. Profiles, videos and comments are personal data in the EU and UK, so GDPR needs a lawful basis and data minimisation, and many TikTok users are minors: leave their data out. Video and sound content is protected by copyright. The full answer: Is It Legal to Scrape TikTok? and Is Web Scraping Legal? US, EU and UK Rules (2026).
ProxyField's rule for every site: public pages only, and follow the site's terms. Our acceptable use policy allows collecting public web data and social media monitoring, and forbids fraud, including fake accounts or engagement, and accessing data behind logins you are not entitled to. This is not legal advice.
More scraper APIs
- Social media scraper public pages from several networks through the same Web Scraping API.
- Instagram scraper public pages of each network, fetched by the Web Scraping API.
- YouTube scraper public pages of each network, fetched by the Web Scraping API.
- Facebook scraper public pages of each network, fetched by the Web Scraping API.
- Web Scraping API any URL, plain HTTP or with JS rendering, from $0.20 per 1,000 successful results.
- Google SERP API the Google results page as JSON, $1.20 per 1,000 successful results, or $0.80 from 10,000.
- All scraper APIs
TikTok Scraper FAQ
24/7 support by live chat, including help with setup and integration.
Is TikTok's official Research API enough for tracking hashtag videos, or do brands need a scraper instead?
ProxyField's reading of TikTok's own pages: no, for brands the Research API is not enough. TikTok opens it only to approved researchers independent of commercial interests, new videos appear up to 48 hours late, statistics take up to 10 days to update, and use stops at 1,000 requests and 100,000 records a day. Brands that track a hashtag check the public tiktok.com/tag/<hashtag> page on a schedule instead; on ProxyField's Web Scraping API design that is $2.00 per 1,000 rendered pages ($1.00 from 10,000), through Contact sales while the API is in development. TikTok's terms forbid automated collection, so weigh that risk too.
What's the best way to scrape TikTok data without writing code?
ProxyField's answer for today is a ready-made template in a hosted no-code app: Octoparse's TikTok Scraper template takes keywords, video URLs or @handles, runs in its cloud on a schedule and exports Excel, CSV or JSON, at $1.50 per 1,000 output lines on its Standard plan (its page). For a handful of pages, a browser extension that exports what your browser shows is simpler. For the same list checked on a schedule into your own sheet, an HTTP step in n8n, Make or Zapier can call ProxyField's Web Scraping API at $2.00 per 1,000 rendered pages; that API is in development, through Contact sales.
How do I scrape all the comments on a TikTok video, and do I need a TikTok account to do it?
No TikTok account is needed for a public video's comments: Octoparse's comments template takes only public video URLs ($0.40 per 1,000 output lines), and a browser on residential proxies loads them logged out as you scroll. Approved researchers can page through TikTok's Research API, up to 100 comments per request, following cursor while has_more is true. No route guarantees every comment: deleted and hidden ones never appear and each route stops at a cap, so compare your row count with the video's comment count. Each row holds the comment's id, author, text, likes, reply count, parent and time; on ProxyField's Web Scraping API design (in development, contact sales) one rendered video page is one result, $2.00 per 1,000.
Can I scrape the replies to TikTok comments?
Yes. Octoparse's comments template exports reply rows linked to their parent by parentCommentId, the Research API returns replies when you send the parent's comment_id, and in a browser the replies load when you open "View replies". Count replies against each comment's reply count to see what you missed.
How do I export TikTok comments to Excel or CSV?
A hosted template exports them directly: Octoparse's TikTok Video Details & Comments Scraper takes up to 10,000 public video URLs and exports Excel, CSV or JSON with 54 fields. From your own script, write the rows to a CSV with Python's csv module, or load the JSON into a spreadsheet.
How much does it cost to scrape TikTok comments?
On ProxyField's Web Scraping API design, one rendered video page is one result at $2.00 per 1,000 ($1.00 from 10,000), however many comments it loads; a video with many reply threads takes several requests. Hosted templates price per row, for example Octoparse's comments template at $0.40 per 1,000 output lines. Your own Playwright scraper pays only proxy traffic, residential from $2.95/GB for 1 GB.
Do no-code TikTok scrapers need my own proxies?
Hosted templates, such as Octoparse's TikTok templates, run in the tool's cloud on its own IPs and take no proxy from you. Your own proxies matter when you run a task on your own computer or in a tool with a proxy setting: with ProxyField, enter gate.proxyfield.io:7000 with your login, or, where the tool takes only IP:port, allowlist your IP and enter gate.proxyfield.io with the port you set up in the dashboard.
How do I scrape TikTok?
Collect the profile and video URLs you need, fetch each page logged out through rotating residential IPs and read the JSON that TikTok embeds in the page. Render the page only for parts that load later, such as comments and tag pages.
What data can I scrape from TikTok?
From public profiles: nickname, bio, link, verified badge and follower, following, like and video counts. From public videos: caption, hashtags, sound, date and play, like, comment, share and save counts; private accounts and messages are out of scope.
Why do brands scrape TikTok data?
Brands and agencies use public TikTok data to vet influencers, follow trends in sounds and hashtags, report on campaigns and watch competitors. TikTok's own APIs do not give businesses this view across other creators.
Show 13 more questionsShow fewer questions
Does TikTok have an API?
Not an open one for brands: TikTok's developer APIs work with the signed-in user's own account and videos, and its Research API is for approved non-commercial researchers, with 1,000 requests a day. Data about other creators for business use comes from their public pages.
Do I need a TikTok account or API key to scrape TikTok?
No. Public profiles and videos open logged out, and a scraper should never sign in. The only access you need is to the scraping tool or service you use, not a key from TikTok.
How do I start scraping TikTok with an API?
ProxyField's Web Scraping API is in development: contact sales with the page types you need and the pages per month, and read the request format in the API documentation. Each successful page will cost $0.50 per 1,000 over plain HTTP, $0.20 from 10,000 results in one purchase.
How do I get structured JSON from TikTok scraping?
TikTok pages embed their data as JSON in the __UNIVERSAL_DATA_FOR_REHYDRATION__ script tag, so you load that JSON instead of parsing the visible layout; profile counts sit under webapp.user-detail. Map the fields you need into your own schema, because TikTok changes the structure from time to time.
What is the rate limit for scraping TikTok?
TikTok publishes no limit for logged-out visitors; it blocks IPs that send fast or repetitive requests. Spread requests over rotating residential IPs with a pause between them, and back off when pages come back empty or blocked.
Will I get blocked when scraping TikTok?
At a high rate from one IP or from datacenter ranges, yes, quickly. Rotating residential IPs, normal browser headers and a low rate per IP reduce blocks; on the Web Scraping API's design, blocked requests are retried on new IPs and not billed.
How do I scrape TikTok videos?
Fetch each video page and read its caption, hashtags, sound, date and counts from the embedded JSON. The video files are the creators' content and protected by copyright, so store the metadata and the link rather than the file.
Can I scrape a TikTok hashtag?
Yes, the public tag page: render tiktok.com/tag/<hashtag> to get the videos and view count TikTok shows logged-out visitors, then fetch the video pages for their counts. Expect a selection of videos, not every video with the tag, and check the page on a schedule to catch new ones.
How do I scrape TikTok with Python?
Use requests through a rotating residential proxy, parse the page with Beautiful Soup and load the embedded data script, as in the code on this page. For comments or scrolling, drive Playwright through the same proxy with a sticky session.
How much does it cost to scrape TikTok?
On ProxyField's Web Scraping API design, checking 1,000 creator profiles daily is 30,000 pages a month: $6 over plain HTTP at $0.20 per 1,000, or $30 rendered, when bought in one purchase. Under 10,000 results in one purchase, the price is $0.50 per 1,000 ($2.00 rendered).
Can I scrape TikTok creator emails?
Only an address a creator put in their public bio, and that is personal data under GDPR, so you need a lawful basis to keep and use it. Business contact options that TikTok shows only to signed-in users are out of scope.
Do TikTok's terms allow web scraping?
No: TikTok's terms of service forbid collecting content or information with automated means. Whether a particular scrape also breaks a law is a separate question; this is not legal advice.
Is there a TikTok scraper on GitHub?
Yes, several open-source TikTok scrapers are on GitHub, mostly Python projects that read the embedded page data or drive a headless browser. They break when TikTok renames its data script, so check the last update and run them through rotating residential IPs.
Related pages
Collect TikTok pages with the Web Scraping API
Billed on successful results only. Contact sales for the Web Scraping API and the volume you need, or run your own scraper on residential proxies. 24/7 live chat helps with setup and integration.