Search Douyin videos by keyword
Find Douyin videos by keyword, with caption, creator, likes, comments, shares, saves, music and duration. 50 credits per video returned.
To search Douyin videos by keyword, call GET /v1/douyin/search with a query in Chinese or English. One call returns up to 25 videos, 10 by default, each with its caption and hashtags, creator, like, comment, share and save counts, music ID, cover image, video URL and duration. It is metered at 50 to 1,250 credits per call: the range scales with limit, which works out to 50 credits per video, so the default 10 videos cost 500.
Cost
50 to 1,250 credits per call: 50 at limit=1, 1,250 at limit=25. The sample below used the default limit of 10 and was charged 500. When the call starts, the most it can cost with your limit is held; you are charged what it used and the rest is released. Add dry_run=1 to get a free quote first. Asking the same search again within 1 hour is answered from the shared cache for 2 credits. Failed calls and empty results are free.
Which parameters can I set?
| Parameter | Values |
|---|---|
query | Required. The search keywords, for example 美食 (food) or coffee. |
limit | Videos to return, 1 to 25. Default 10. |
sort | relevance (default), most_liked or latest. |
published | Recency window: all (default), day, week or half_year. |
duration | Video length: all (default), under_1m, one_to_five_m or over_5m. |
Make the request
curl -G "https://api.insightsocial.app/v1/douyin/search" \
--data-urlencode "query=美食" \
-H "x-api-key: $INSIGHTSOCIAL_API_KEY"What comes back
A real response from 2026-10-14, shortened: one video instead of 10, the caption and long URLs cut, and the creator replaced with a placeholder.
{
"success": true,
"endpoint": "/v1/douyin/search",
"schema_version": "2",
"data": {
"items": [
{
"post": {
"id": "7644834211292280293",
"url": "https://www.douyin.com/video/7644834211292280293",
"kind": "video",
"content": {
"text": "简单几步教你做出五⭐️级酒店的酸辣柠檬虾 #酸辣柠檬虾 #柠檬虾做法 …",
"media_urls": ["https://api-play.amemv.com/aweme/v1/play/?video_id=…"],
"thumbnail_url": "https://p3-sign.douyinpic.com/tos-cn-p-0015c000-ce/…",
"duration_seconds": 17.3
},
"author": { "id": "example_user_id", "username": "example_user", "display_name": "Example User", "verified": false },
"engagement": { "views": null, "likes": 3111106, "comments": 43865, "shares": 1765351, "saves": 2519903 },
"published_at": "2026-05-28T07:01:10.000Z",
"ext": { "music_id": "7587240130655537202", "author_followers": 711275, "download_count": 34926 }
}
}
],
"total": null
},
"pagination": { "next_cursor": null, "has_more": false, "page_size": 10 },
"unavailable": [],
"credits_used": 500
}| Field | What it holds |
|---|---|
data.items[].post | One video in the shared post shape. |
post.content.text | The caption, hashtags included. |
post.content.media_urls | A playback URL for the video file. |
post.engagement | Likes, comments, shares and saves. |
post.author | The creator: numeric ID, Douyin ID, nickname, avatar, verified flag. |
post.ext.author_followers | The creator's follower count. |
post.ext.music_id | The sound the video uses. |
post.ext.download_count | How many times the video was downloaded. |
What are the limits?
- 25 videos per search. The endpoint does not paginate:
has_morewasfalsein the sample. Use different keywords,sortorders orpublishedwindows to reach more videos. - No view counts.
engagement.viewsisnullon every video in the sample, which means unknown, not zero. - No total.
data.totalisnull: the search does not say how many videos match. - Douyin ID can be missing.
author.usernamewasnullfor 4 of the 10 creators in the sample.author.id, the numeric user ID, was always set. - Short-lived media links. The cover image URLs carry an expiry time, about two weeks after the call in the sample. Download what you need instead of storing the links.
- Price per video. The cost grows with
limit, so ask for the number of videos you need, not the maximum.
What can I build with it?
- Market research in China. Search a product or category with
sort=most_likedto see which videos and hashtags lead it. - Creator discovery. Rank the authors in your results by
ext.author_followers, then passauthor.idasidtoGET /v1/douyin/profile(60 credits) for the full profile. - Trend checks. Run the same keyword with
published=weekandsort=latesteach week to see what is new.
The other Douyin endpoints pick up where search stops: search/users (50 to 1,250 credits) finds creators instead of videos, post (100) reads one video, post/comments (20 to 1,000) and comment/replies (50 to 2,500) read its comments, profile (60) and profile/posts (50 to 1,250) cover a creator, and trending (250) returns the live hot-search board.
Related
GET /v1/douyin/searchreference: every parameter and field.GET /v1/douyin/search/users: search creators instead of videos.GET /v1/douyin/trending: the live hot-search board.- Douyin endpoints: everything the API covers on Douyin.
Search Xiaohongshu (RedNote) notes by keyword
Find Xiaohongshu (RedNote) notes by keyword, with title, summary, creator, likes, comments, saves and shares. 50 credits per note returned.
Bluesky
Bluesky API reference: 4 endpoints for profiles, posts and post search. Per-endpoint credit prices and cURL examples.