Answers
TikTok's Research API is only for academics. What can a company use instead?
Short answer
A company that cannot get TikTok Research API access can read the same kind of public data through okdata with just an API key: video search at $0.002 a page of about 30 videos, video detail at $0.002, account profiles at $0.002, and comments at $0.002 a page. There is no application, no university affiliation and no review queue.
A typical story: a consumer brand's insights team fills in TikTok's Research API form, then reads the eligibility rules properly. The API is for researchers at non-profit academic institutions in the US, the EEA, the UK and Switzerland, and each project is reviewed. A company does not qualify, and an agency working for one does not either. What the team actually wanted was modest: the videos people post about their category, the comments under them, and the size of the creators involved. All of that is public, and you can get it without the Research API.
The four calls that cover most company work
| What you want | Endpoint | Price |
|---|---|---|
| Videos for a keyword | TikTok video search | $0.002 per page of about 30 |
| Stats for one video, by ID or link | TikTok video detail | $0.002 |
| Comments on a video | TikTok video comments | $0.002 per page of about 50 |
| Followers, likes and video count of an account | TikTok account profile | $0.002 |
A monthly category scan of 20 keywords at 5 pages each, the comments on the 30 biggest videos (4 pages each) and 100 creator profiles comes to {{cost:tiktok.videos.search100+tiktok.videos.comments.list120+tiktok.users.get*100}}. Billing is per call; there is no plan or minimum, and new keys start with $0.10 of credit.
A first run in Python
import os, requests
API = "https://api.okdata.online/v1"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
def get(path, **params):
body = requests.get(f"{API}/{path}", headers=H, params=params, timeout=60).json()
if body["code"] != "ok":
raise RuntimeError(f"{body['code']}: {body['message']}")
return body["data"]
videos = get("tiktok/videos/search", query="protein bar", sort="most_liked")["items"]
creators = {v["author"]["username"] for v in videos if v["author"]["username"]}
for handle in sorted(creators)[:10]:
p = get("tiktok/users/get", username=handle)["item"]
print(handle, p["followers"], p["likes"], p["posts"])
What the Research API gives that this does not
Be honest with yourself about the gaps before you choose:
- The Research API lets approved researchers query by date range and region. Here, search has neither; you filter on
published_atafter the fact. - There are no follower lists, reply threads or full profile video lists in this catalog.
- Data is what TikTok shows publicly right now. Private accounts and deleted videos return
not_found, which is not charged.
When to go another way
If you are an eligible academic, apply to the Research API first: it is free and designed for studies. If you need data about your own account or ads, TikTok's own business tools and the Display API (for users who authorize your app) are the right source. For the company use case above, the competitor monitoring page walks through a full weekly run.
Updated