# How to Scrape TikTok in 2026: A Developer's Guide (https://www.socialcrawl.dev/blog/how-to-scrape-tiktok-2026)
> Scrape TikTok profiles, videos, and comments in 2026 without Selenium: why the official Research API won't help, the DIY realities, and a working API tutorial with real code and a real response.
The quickest way to scrape TikTok in 2026 is a single GET request to a data API, no headless browser and no reverse-engineered mobile endpoints. Here is the whole thing:
```bash
curl "https://www.socialcrawl.dev/v1/tiktok/profile?handle=mrbeast" \
-H "x-api-key: sc_your_api_key_here"
```
That returns a normalized TikTok profile: followers, likes, video count, verification, for 1 credit. The rest of this guide is the honest version: what TikTok's official APIs will and will not give you, what building your own scraper actually costs, and how to pull profiles, videos, and comments through a real endpoint with runnable Python, Node, and curl.
TikTok's official Research API is limited to approved academics at qualifying
institutions, and its commercial APIs don't expose arbitrary profiles or
comments at all. That leaves a DIY scraper (a maintenance treadmill against an
aggressively bot-defended SPA) or a third-party data API. The API route is one
authenticated GET per resource: `GET /v1/tiktok/profile` for profiles, plus
profile-videos and post-comments endpoints that paginate with a cursor at 1
credit per page.
**Stack:** Python 3.10+ or Node 18+ · `requests` / `fetch` · a [SocialCrawl API key](/docs/quickstart) (free tier: 100 credits, no card)
---
## Can you get TikTok data from the official API?
TikTok has official APIs, but none of them is built for the job most developers actually have.
The [TikTok Research API](https://developers.tiktok.com/products/research-api/) does expose rich profile, video, and comment data, but access is restricted to academic researchers at qualifying non-profit institutions in supported regions, gated behind a proposal review. If you are building a product, running marketing analysis, or feeding a data pipeline, you do not qualify. That is the stated scope of the program, not a loophole.
The Display API and the Commercial Content API, which regular developers _can_ register for, cover profile display for authorized users, video publishing, and ad-library data. Arbitrary public profiles and comments are simply not in the surface area.
So for competitor tracking, creator discovery, or trend analysis on accounts you do not own, the official APIs do not cover it. Your real choices are to scrape TikTok yourself or to use a third-party data API.
## Should you build your own TikTok scraper?
The DIY route works for some teams. Here is what it honestly involves.
**Anti-bot reality.** TikTok's web app is one of the more aggressively defended targets on the internet. Scraping it yourself means driving Playwright or Selenium against a single-page app that fingerprints devices, throws challenges, and changes its internal endpoints without notice, or reverse-engineering those private endpoints and their signing directly. Success rates depend on residential proxies and rotating sessions, and never reach 100 percent.
**Maintenance.** The internal endpoints and the DOM shift regularly, and when they do your scraper returns empty results rather than throwing a clean error, so you also need monitoring to catch silent breakage. A self-maintained TikTok scraper is a subscription paid in engineering hours.
**Legal considerations.** Scraping publicly accessible data has survived legal challenge in US courts (the _hiQ Labs v. LinkedIn_ line of cases), but that is not a blanket permission slip. TikTok's Terms of Service prohibit automated collection, so ToS exposure is real, and profile and comment data is personal data subject to GDPR and CCPA depending on your jurisdiction and use case. No tool can honestly promise it "gets around" TikTok's terms. What a data API removes is the collection and anti-bot problem; the legal and product questions remain yours. Read the [legal and technical guide to social media scraping](/blog/social-media-scraping-legal-technical-guide) before shipping anything commercial.
The rest of this guide takes the API route: public TikTok data in a normalized shape, so you write against a schema instead of a moving target.
## Setting up: one key, one request
Get an API key at [socialcrawl.dev](https://www.socialcrawl.dev), sign up, then open **Dashboard → API Keys**. Keys look like `sc_` plus 32 random bytes and are shown in full once, so copy it immediately. New accounts get 100 free credits that never expire, and a TikTok profile call is 1 credit.
Keep the key out of source control:
```bash
```
Prefer to see the response first? Paste a TikTok URL into the [Visual Explorer](/explorer) and the unified schema renders instantly, no code required.
## Scraping a TikTok profile
The endpoint is [`GET /v1/tiktok/profile`](/platforms/tiktok/profile). It takes one required parameter, `handle` (the username without `@`), and returns the normalized author object.
```python
API_KEY = os.environ["SOCIALCRAWL_API_KEY"]
BASE = "https://www.socialcrawl.dev/v1"
resp = requests.get(
f"{BASE}/tiktok/profile",
params={"handle": "mrbeast"},
headers={"x-api-key": API_KEY},
timeout=30,
)
author = resp.json()["data"]["author"]
print(author["username"], author["followers"], "followers")
```
The same call in Node:
```js
const res = await fetch(
"https://www.socialcrawl.dev/v1/tiktok/profile?handle=mrbeast",
{ headers: { "x-api-key": process.env.SOCIALCRAWL_API_KEY } },
);
const { data } = await res.json();
console.log(data.author.username, data.author.followers, "followers");
```
Here is a real, unmodified response captured with a live dev key in July 2026 (avatar URL truncated):
```json
{
"success": true,
"platform": "tiktok",
"endpoint": "/v1/tiktok/profile",
"data": {
"author": {
"id": "6614519312189947909",
"username": "mrbeast",
"display_name": "MrBeast",
"avatar_url": "https://p16-common-sign.tiktokcdn-us.com/...",
"bio": "Checkout My New Book!👇",
"verified": true,
"followers": 129300000,
"following": 353,
"posts_count": 463,
"likes_count": 1300000000,
"private": false
},
"computed": {
"content_category": "other"
}
},
"credits_used": 1,
"credits_remaining": 184255,
"request_id": "req-4nrQA8K3yHiu7Rqn",
"cached": false
}
```
The `author` field names (`username`, `followers`, `likes_count`, `verified`) are identical across all 44 platforms, so the parser you write for TikTok works unchanged when you add Instagram or YouTube. One honest note the API surfaces itself: a lifetime likes-to-followers ratio is not a meaningful engagement rate, so `computed.engagement_rate` is returned as `null` for profiles where the raw ratio is nonsensical rather than being invented.
## Scraping TikTok videos and comments
The two reads most projects need after a profile are a creator's videos and a video's comments, and both paginate with a cursor.
[`GET /v1/tiktok/profile/videos`](/platforms/tiktok/profile-videos) lists a creator's videos. Read `data.items`, and pass `data.next_cursor` back on the next request until it disappears:
```python
def scrape_tiktok_videos(handle: str, max_pages: int = 5) -> list[dict]:
videos, cursor = [], None
for _ in range(max_pages):
params = {"handle": handle}
if cursor:
params["max_cursor"] = cursor # this endpoint's cursor param is max_cursor
payload = requests.get(
f"{BASE}/tiktok/profile/videos",
params=params,
headers={"x-api-key": API_KEY},
timeout=30,
).json()
if not payload.get("success"):
raise RuntimeError(payload["error"]["message"])
videos.extend(payload["data"]["items"])
cursor = payload["data"].get("next_cursor")
if not cursor:
break
return videos
```
To read comments on a specific video, [`GET /v1/tiktok/post/comments`](/platforms/tiktok/post-comments) takes the video `url` and paginates the same way. Comments arrive in the canonical shape (`text`, `author.username`, `engagement.likes`, `engagement.replies`, `published_at`), the same object the Instagram, YouTube, and Reddit comment endpoints return. There is a full walkthrough in [how to scrape TikTok comments with Python](/blog/how-to-scrape-tiktok-comments-python).
One subtlety the videos snippet encodes: the response field is always `next_cursor`, but the request parameter name varies by endpoint, `cursor` on comments, `max_cursor` on profile videos. The [pagination table](/docs/pagination) lists the exact parameter for every endpoint.
## Pagination, rate limits, and credits
Three operational facts, all from the live API:
- **Pagination is a cursor contract.** The response carries `data.next_cursor`; pass it back verbatim as the endpoint's cursor parameter and stop when it is `null`. Never use `data.total` (an upstream estimate) as a loop condition.
- **There is no requests-per-minute quota.** The only ceiling is 50 concurrent requests per API key; exceed it and you get a `429 CONCURRENCY_LIMIT` envelope with no credits charged.
- **Failures refund credits.** Errors use the same envelope with `success: false`. Empty-upstream `404`s and transient `502`/`503`s refund the credit automatically, so a retry wrapper never double-spends. The full matrix is in the [error handling docs](/docs/errors).
TikTok profile, videos, and comments are all Standard-tier at 1 credit per page, so the math stays flat. A hundred profile reads is 100 credits, which the free tier covers. Past that, [pricing](/pricing) is pay-as-you-go and never expires: £15 buys 2,500 credits, £49 buys 20,000, enough to walk the comments on hundreds of videos.
## Where to go from here
You now have TikTok profiles, videos, and comments in one schema for 1 credit each, without a browser farm. Next steps:
- **Browse the rest of the surface** on the [TikTok platform page](/platforms/tiktok): 18 endpoints covering search, hashtags, sounds, TikTok Shop, and transcripts.
- **Turn any video into text** with the free [TikTok transcript generator](/tools/tiktok-transcript-generator), or check a creator's numbers with the [TikTok engagement rate calculator](/tools/tiktok-engagement-rate-calculator).
- **Compare the paid options** in the [best TikTok data APIs](/blog/best-tiktok-data-apis-2026) roundup, or read [how to get TikTok data without the API](/blog/tiktok-data-without-api) for the DIY trade-offs in detail.
- **Start on the free tier**: [100 credits, no card](/pricing), a hundred profile reads to find out whether the data fits.
## Frequently asked questions
### Is it legal to scrape TikTok?
Scraping publicly accessible data has survived legal challenge in US courts (the _hiQ v. LinkedIn_ line of cases), but that is not blanket permission. TikTok's Terms of Service prohibit automated collection, so ToS exposure is real, and profile and comment data is personal data subject to GDPR and CCPA depending on jurisdiction and use case. No API can honestly claim to get around TikTok's terms. Read the [legal and technical guide](/blog/social-media-scraping-legal-technical-guide) before anything commercial, and talk to a lawyer if revenue depends on it.
### Can you scrape TikTok without an account?
Yes, with a data API. A third-party API runs its own collection infrastructure and returns public TikTok data through your API key, so you never handle a TikTok login or session. A DIY scraper increasingly runs into challenges and rate limits that make anonymous scraping unreliable.
### Do I need TikTok's approval to use a TikTok scraper API?
No. The approval gate applies to TikTok's own Research API, which requires academic affiliation. A third-party data API is a separate service you sign up for directly, so the key works in minutes rather than after a proposal review.
### How do you scrape TikTok comments and videos?
Through dedicated endpoints: `GET /v1/tiktok/profile/videos` for a creator's videos and `GET /v1/tiktok/post/comments` for a video's comments. Both paginate with a cursor at 1 credit per page and return normalized lists you can export to CSV.
### Why doesn't the official TikTok Research API work for most developers?
Because access is limited to academic researchers at qualifying non-profit institutions in supported regions, granted after a proposal review. Product teams, marketers, and data engineers do not meet that bar, which is the stated design of the program.
### What is the best language for scraping TikTok?
Any language that can make an HTTP request. The endpoints are single authenticated GETs, so Python with requests, Node with fetch, or a plain curl command work identically, with the same envelope and cursor pagination.
### How much does it cost to scrape TikTok?
On SocialCrawl, TikTok profile, videos, and comments are 1 credit per page. The free tier is 100 credits (no card, never expires); after that £15 buys 2,500 credits and £49 buys 20,000, pay-as-you-go with no expiry. DIY scraping has no per-call fee but costs proxy subscriptions plus ongoing maintenance time.