Comparison

TikTok Research API alternative: what to use when you don't qualify

TikTok's Research API charges no fee and goes deep, but only for approved non-commercial researchers. Here is who qualifies, what its limits are, and which of its endpoints ScrapingBot covers for everyone else.

ScrapingBot 9 min read
Access
Sign-up vs application
Commercial use
Yes vs no
Price
1 credit a call vs no fee
Daily cap
Your credits vs 1,000 requests
On this page

The TikTok Research API is the most complete official source of public TikTok data: date-bounded video queries, paged follower lists, comments, liked and reposted videos. It is also closed to many of the people who look for it. Agencies, startups, brands and researchers outside the eligible regions or institutions can't apply, and nobody may use it commercially.

If you qualify, use it: TikTok announced it free of charge for researchers and publishes no price. This page is for everyone else, and for researchers who want to know what a commercial API can and cannot replace.

How we compared

ScrapingBot is our product. Research API facts come from TikTok's own Research API page, its FAQ, the endpoint references for videos, user info, comments and followers, the Research Tools terms and TikTok's 2023 announcement, checked in October 2026. We have no Research API access, so its side is as documented, not measured. ScrapingBot responses are real, from October 27, 2026.

Who can use the Research API

  • Where: researchers in the US, the EEA, the UK, Canada, Switzerland, Norway, Iceland, Liechtenstein and Brazil. In Brazil, the research must be about youth safety.
  • Who: academic institutions in the US, EEA, UK, Canada or Switzerland, and not-for-profit or independent research institutions in the EU. Ph.D. candidates need an advisor's endorsement letter.
  • For what: non-commercial research only. Applicants must be independent of commercial interests; creators, advertisers and commercial users are not eligible.
  • How: create a TikTok for Developers account, submit an application with a research proposal, and wait. TikTok says to expect an answer within about 4 weeks. An approved researcher can add up to 9 collaborators, who share the team's quota.

The short version

Pick ScrapingBot if

Your project is commercial, or you are outside the eligible regions and institutions.
You need data today, not after an application, and counts as TikTok shows them right now.
You want playable video URLs, sound details, or Instagram, Google and Amazon data on the same key.

Pick the Research API if

You are an eligible researcher: there is no fee.
You need date-bounded, filtered samples: by region, hashtag, sound, effect or view count, with and/or/not logic.
You need follower lists past the first page, liked, pinned or reposted videos, playlists, transcripts or TikTok Shop data.

ScrapingBot vs the TikTok Research API at a glance

ScrapingBotTikTok Research API
Who can use itAnyone with an account; commercial use allowedApproved non-commercial researchers (see above)
Getting accessSign up; 100 free credits, no cardApplication with a research proposal; about 4 weeks
Price1 credit per call; Starter $49.99 for 275,000 creditsNo published price; announced free of charge for researchers
VolumeAs many calls as your credits, within your plan's concurrency1,000 requests and 100,000 records a day; follower and following lists 20,000 calls and 2 million records a day
Finding videosKeyword search as TikTok shows it, any date; an account's videos; a sound's videosQueries on keyword, hashtag, username, region, sound, effect, length, views and comments, within a 30-day window
FreshnessRead from TikTok when you callNew videos can take 48 hours to appear; counts up to 10 days to update
MediaPlayable video URL, cover image and audio URLNo media URLs among its video fields
Followers and followingOne page of up to 50 accounts, each with its own countsPages of up to 100 (username and display name), with a cursor
CommentsUp to 50 per page, replies by comment, authors with countsUp to 100 per page, replies by comment
Only hereSound details, account search; Instagram, Google, Amazon and website scrapingLiked, pinned and reposted videos, playlists, transcripts (voice_to_text), EU TikTok Shop data
Rules on the dataScrapingBot's terms and the law where you workRefresh at least every 30 days and delete what is gone; send TikTok publications 7 days ahead; don't combine with other data about individuals

Endpoint by endpoint

Every ScrapingBot TikTok call is a POST to https://scrapingbot.io/api/v1/tiktok naming an endpoint, for 1 credit. This is how the Research API's endpoints map onto them:

Research APIScrapingBot endpointNotes
Query Videos/feed/search, /user/posts, /music/postsBy keyword, account or sound. No date, region or view filters: filter on create_time and the counts yourself.
Query User Info/user/infoFollowers, following, likes, video count, bio, verified, private.
Query Video Comments/comment/list, /comment/replyPaged with a cursor, up to 50 per page.
Query User Followers, Following/user/followers, /user/followingOne page of up to 50 accounts, no further pages. A hidden list returns 403, refunded.
Liked, Pinned, Reposted VideosNone
Playlist Info, TikTok ShopNone
None/ (a video by URL)Details plus playable video, cover and audio URLs.
None/music/info, /user/searchA sound's title, author and number of videos; accounts for a keyword.

Video fields map closely. Counts come as TikTok displays them, so large ones are rounded (1.8M arrives as 1800000):

Research API fieldScrapingBot field
idvideo_id (id on a single-video lookup)
video_descriptiontitle
create_timecreate_time
usernameauthor.unique_id
view_count, like_countplay_count, digg_count
comment_count, share_countcomment_count, share_count
favorites_countcollect_count
video_durationduration
music_idmusic_info.id
hashtag_namestext_extra[].hashtag_name
region_coderegion, set on single-video lookups and empty in search results
voice_to_text, playlist_idNo equivalent

One question, both ways: a keyword's videos from the last 30 days

With the Research API, "videos about outdoor cooking from the last 30 days" is one request to its video query endpoint, bounded by dates. In the format its reference documents, the body is:

{
  "query": {
    "and": [{ "operation": "EQ", "field_name": "keyword", "field_values": ["outdoor cooking"] }]
  },
  "start_date": "20260928",
  "end_date": "20261027",
  "max_count": 100
}

It goes out with a client access token, and the fields you want are listed in the URL, such as fields=id,video_description,create_time,username,view_count,hashtag_names. Each request returns up to 100 videos and a cursor for the next.

ScrapingBot has no date filter. You page through TikTok's own search, which ranks by relevance across all dates, and keep the recent videos:

from datetime import datetime, timedelta, timezone

import requests

API = "https://scrapingbot.io/api/v1/tiktok"
HEADERS = {"x-api-key": "YOUR_API_KEY"}


def search(keywords, pages=4, region="US"):
    """Videos TikTok's search shows for a keyword, de-duplicated: 1 credit per page."""
    videos, params = {}, {"keywords": keywords, "count": 30, "region": region}
    for _ in range(pages):
        body = requests.post(API, headers=HEADERS, timeout=60,
                             json={"endpoint": "/feed/search", "params": params}).json()
        if not body.get("success"):
            raise RuntimeError(body.get("error"))
        data = body["data"]
        for v in data["videos"]:
            videos.setdefault(v["video_id"], v)
        if not data.get("hasMore"):
            break
        params = {**params, "offset": data["cursor"], "search_id": data["searchId"]}
    return list(videos.values())


since = datetime.now(timezone.utc) - timedelta(days=30)
found = search("outdoor cooking")
recent = [v for v in found if datetime.fromtimestamp(v["create_time"], timezone.utc) >= since]
print(f"{len(found)} videos, {len(recent)} posted in the last 30 days")
for v in sorted(recent, key=lambda v: v["play_count"], reverse=True)[:5]:
    tags = sorted({t["hashtag_name"] for t in v.get("text_extra") or [] if t.get("hashtag_name")})
    print(f"{v['play_count']:>10,}  @{v['author']['unique_id']:<22} {' '.join('#' + t for t in tags[:3])}")
176 videos, 44 posted in the last 30 days
62,500,000  @outruncook             #citytastetest #cooking #easyrecipetiktokcontest
 9,200,000  @mountainchef420        #firecooking #mountainchef #outdoorcooking
 9,000,000  @outruncook             #citytastetest #cooking #easyrecipetiktokcontest
 4,300,000  @outdoor_chef7          #cooking #cookingforest #outdoorcooking
 3,500,000  @firerun.crew           #campfirecooking #campingfood #cookinginnature

That run cost 4 credits, well under a cent on Starter. The four pages came back with 30, 96, 95 and 93 videos (TikTok often returns more than count), 176 of them unique. Only 44 were from the last 30 days and 17 from the last week; the oldest went back to 2022. Each video arrived with its play URL, cover and sound.

The difference matters for research. TikTok's search is what a user sees: ranked by relevance and partial. The Research API's query is a filter over TikTok's index, so it is the right tool for a defensible sample ("every video with this hashtag posted in the UK in May"). For a product, a dashboard or a monitor that wants the popular videos a user would find, along with their media, search is the closer match.

Followers and following

This is the largest gap. The Research API pages through an account's followers 100 at a time, with 2 million records a day to spend. ScrapingBot's /user/followers and /user/following return one page of up to 50 accounts. Asking NASA's followers for 50 returned 50, with total at 2,141,592; there is no cursor to go further.

Each of those accounts carries more than the Research API's username and display name: its own follower and following counts, total likes (total_favorited), video count (aweme_count), bio, region and verified badge. For "who are some of this account's followers, and how big are they", one call is enough. For a follower graph beyond that first page, you need the Research API. (On Instagram, ScrapingBot does page through whole lists: see exporting Instagram followers.)

What it costs

  • Research API: no fee for approved projects (TikTok announced it free of charge in 2023 and lists no price), within 1,000 requests a day (100,000 records) plus the follower-list quota.
  • ScrapingBot: 1 credit per TikTok call, whatever it returns. A search page of 30 to 96 videos, a profile, a page of 50 comments or 50 followers each cost 1 credit. Starter is $49.99 for 275,000 credits, so 1,000 calls is about 18 cents. Failed calls are refunded, and the 100 free credits are enough to try every endpoint.

The rules that come with Research API data

Approved researchers accept TikTok's Research Tools terms. Among them: refresh the data at least every 30 days and delete what is no longer available, keep it no longer than the research needs, send TikTok a copy of any publication at least 7 days before it appears, and don't combine the data with other information about individual users. Budget for the refresh work if you plan a long study. ScrapingBot data comes with ScrapingBot's terms, and your own obligations under privacy law still apply to what you store.

Where to go from here

Common questions

Who can use the TikTok Research API?

Researchers at academic institutions in the US, EEA, UK, Canada or Switzerland, and at not-for-profit or independent research institutions in the EU, who apply with a research proposal and are approved. In Brazil, access is for youth safety research. Applicants must be independent of commercial interests. Checked October 2026 on TikTok's Research API page.

Can I use the TikTok Research API for a commercial project?

No. TikTok's Research Tools terms prohibit commercial use beyond publishing papers about the approved research, and creators, advertisers and companies are not eligible. A commercial project needs another source, such as a data API like ScrapingBot.

How long does Research API approval take?

TikTok says you can typically expect to hear back within 4 weeks of submitting an application. Ph.D. candidates also need an endorsement letter from their advisor.

What are the TikTok Research API's limits?

1,000 requests a day for up to 100,000 records, 100 records per request, and video queries no wider than 30 days. Follower and following lists have their own quota: 20,000 calls and 2 million records a day. Quotas reset at 12 AM UTC and are shared across an approved team.

Does ScrapingBot have date filters like the Research API?

No. /feed/search returns what TikTok's search shows for a keyword, from any date, so filter on create_time yourself. In our test, 44 of the 176 videos for "outdoor cooking" were from the last 30 days. If you need complete, date-bounded samples and you qualify, the Research API is the better tool.

How do I get TikTok follower lists without the Research API?

ScrapingBot's /user/followers and /user/following return one page of up to 50 accounts, each with its own follower, following, like and video counts, for 1 credit. There is no paging past that page. Accounts that hide their list return 403, refunded.

Start scraping in the next five minutes.

100 free credits, no credit card. One API key works for websites, TikTok, Instagram, Google, Amazon and ChatGPT.