FETCHAPI

Search TikTok posts by keyword API

One call returns up to 10 TikTok challenges (hashtags/trends) matching a keyword. Each item is a challenge with name, description, and engagement stats. The answer shows 10 challenges per page; get the next page by passing the returned `cursor` value to the `cursor` parameter.

12 live routes on TikTok, from $0.00002 per call. Every route below answered our last live test on 2026-10-06; the gateway re-tests them daily.

Get a keySee it in the catalogUse it from MCP

Price per call, by route

The upstream price you are metered at, cheapest first. A route without a published price says so.

ProviderEndpointPriceTested
tiktok-scraper7RapidAPI listing
Search ChallengeCHEAPESTGET challenge/search$0.00002$0.02 / 1k calls✓ 2026-10-06pricing ↗
tiktok-scraper7RapidAPI listing
Search PhotoGET photo/search$0.00002$0.02 / 1k calls✓ 2026-10-06pricing ↗
tiktok-scraper7RapidAPI listing
Search VideoGET feed/search$0.00002$0.02 / 1k calls✓ 2026-10-06pricing ↗
tiktok-api23RapidAPI listing
Explore DramasGET api/drama/explore$0.00005$0.05 / 1k calls✓ 2026-10-06pricing ↗
tiktok-api23RapidAPI listing
Get Keyword SentenceGET api/trending/keyword/sentence$0.00005$0.05 / 1k calls✓ 2026-10-06pricing ↗
tiktok-api23RapidAPI listing
Get Trending Video By KeywordGET api/trending/keyword/posts$0.00005$0.05 / 1k calls✓ 2026-10-06pricing ↗
tiktok-api23RapidAPI listing
Others Searched For (Suggest Search)GET api/search/others-searched-for$0.00005$0.05 / 1k calls✓ 2026-10-06pricing ↗
tiktok-api23RapidAPI listing
Search General (Top)GET api/search/general$0.00005$0.05 / 1k calls✓ 2026-10-06pricing ↗
tiktok-api23RapidAPI listing
Search PhotoGET api/search/photo$0.00005$0.05 / 1k calls✓ 2026-10-06pricing ↗
tiktok-api23RapidAPI listing
Search VideoGET api/search/video$0.00005$0.05 / 1k calls✓ 2026-10-06pricing ↗
tiktok-api6RapidAPI listing
Get Search VideosGET search/general/query$0.001998$2.00 / 1k calls✓ 2026-10-06pricing ↗
tiktok-api6RapidAPI listing
Search VideosPOST search/general/query$0.001998$2.00 / 1k calls✓ 2026-10-06pricing ↗

What it returns

From a real call to the cheapest route: tiktok-scraper7.

One call returns up to 10 TikTok challenges (hashtags/trends) matching a keyword. Each item is a challenge with name, description, and engagement stats. The answer shows 10 challenges per page; get the next page by passing the returned `cursor` value to the `cursor` parameter.
data.challenge_list[].idChallenge IDdata.challenge_list[].cha_nameChallenge namedata.challenge_list[].descChallenge descriptiondata.challenge_list[].user_countNumber of users who participateddata.challenge_list[].view_countTotal views on challenge videosdata.challenge_list[].coverChallenge cover image URLdata.hasMoreWhether more challenges exist

Paging (tiktok-scraper7): read `data.cursor` from the answer and send it back as `cursor=` for the next page; stop when it is empty or repeats. From MCP: call_endpoint("rapidapi-tiktok-scraper7.search_challenge", params, pages=3) follows it for you.

Paging (tiktok-scraper7): read `data.cursor` from the answer and send it back as `cursor=` for the next page; stop when it is empty or repeats. From MCP: call_endpoint("rapidapi-tiktok-scraper7.search_photo", params, pages=3) follows it for you.

Paging (tiktok-scraper7): read `data.cursor` from the answer and send it back as `cursor=` for the next page; stop when it is empty or repeats. From MCP: call_endpoint("rapidapi-tiktok-scraper7.search_video", params, pages=3) follows it for you.

Paging (tiktok-api23): read `cursor` from the answer and send it back as `cursor=` for the next page; stop when it is empty or repeats. From MCP: call_endpoint("rapidapi-tiktok-api23.explore_dramas", params, pages=3) follows it for you.

Paging (tiktok-api23): read `cursor` from the answer and send it back as `cursor=` for the next page; stop when it is empty or repeats. From MCP: call_endpoint("rapidapi-tiktok-api23.search_general_top", params, pages=3) follows it for you.

Paging (tiktok-api23): read `cursor` from the answer and send it back as `cursor=` for the next page; stop when it is empty or repeats. From MCP: call_endpoint("rapidapi-tiktok-api23.search_photo", params, pages=3) follows it for you.

Paging (tiktok-api23): read `cursor` from the answer and send it back as `cursor=` for the next page; stop when it is empty or repeats. From MCP: call_endpoint("rapidapi-tiktok-api23.search_video", params, pages=3) follows it for you.

Paging (tiktok-api6): read `cursor` from the answer and send it back as `cursor=` for the next page; stop when it is empty or repeats. From MCP: call_endpoint("rapidapi-tiktok-api6.get_search_videos", params, pages=3) follows it for you.

Call it

HTTP with your key in x-api-key, or the call_endpoint tool of our MCP server.

GET /api/gw/rapidapi-tiktok-scraper7/challenge/search$0.00002 / call✓ working · tested 2026-10-061.30 s latency
Parameters
ParameterTypeNotes
countstring · queryoptionalmax 30 · default 10
cursorstring · queryoptionaldefault 0
keywordsstring · queryrequireddefault cosplay
HTTP
curl "https://fetchapi.co/api/gw/rapidapi-tiktok-scraper7/challenge/search?count=10&cursor=0&keywords=cosplay" \
  -H "x-api-key: YOUR_KEY"
MCP
call_endpoint("rapidapi-tiktok-scraper7.search_challenge", {"count": "10", "cursor": "0", "keywords": "cosplay"})
Real example answer (trimmed) · 2026-10-03
{
  "msg": "success",
  "code": 0,
  "data": {
    "cursor": 10,
    "hasMore": true,
    "challenge_list": [
      {
        "id": "33380",
        "desc": "#Cosplay your favorite character, and show the world your power!",
        "type": 2,
        "cover": "https://p16-amd-va.tiktokcdn.com/obj/tiktok-obj/8dc87afbcc425ff89c9c68e5514ddb8e.jpeg",
        "cha_name": "Cosplay",
        "is_pgcshow": false,
        "user_count": 47951191,
        "view_count": 455797189160,
        "is_commerce": false,
        "is_challenge": false,
        "is_strong_music": false
      },
      {
        "id": "4804974",
        "desc": "",
        "type": 1,
        "cover": "",
        "cha_name": "cosplaygirl",
        "is_pgcshow": false,
        "user_count": 1231387,
        "view_count": 12244748974,
        "is_commerce": false,
        "is_challenge": false,
        "is_strong_music": false
      },
      "… 2 more"
    ]
  },
  "processed_time": 1.2523
}
Other routes for this job
tiktok-scraper7 · Search Photo$0.00002
GET /api/gw/rapidapi-tiktok-scraper7/photo/search$0.00002 / call✓ working · tested 2026-10-060.87 s latency
Parameters
ParameterTypeNotes
regionstring · queryoptionaldefault us
cursorstring · queryoptionaldefault 0
countstring · queryoptionalmax 30 · default 10
keywordsstring · queryrequireddefault fyp
HTTP
curl "https://fetchapi.co/api/gw/rapidapi-tiktok-scraper7/photo/search?count=10&cursor=0&region=us&keywords=fyp" \
  -H "x-api-key: YOUR_KEY"
MCP
call_endpoint("rapidapi-tiktok-scraper7.search_photo", {"count": "10", "cursor": "0", "region": "us", "keywords": "fyp"})
tiktok-scraper7 · Search Video$0.00002
GET /api/gw/rapidapi-tiktok-scraper7/feed/search$0.00002 / call✓ working · tested 2026-10-061.06 s latency
Parameters
ParameterTypeNotes
countstring · queryoptionalmax 30 · default 10
regionstring · queryoptionalregion code, such as: **jp, kr, us, vn, br, ru** ... · default us
cursorstring · queryoptionaldefault 0
publish_timenumber · queryoptionalPublish time filter 0 - ALL 1 - Past 24 hours 7 - This week 30 - This month 90 - Last 3 months 180 - Last 6 months · default 0
sort_typenumber · queryoptionalSort by 0 - Relevance 1 - Like count 3 - Date posted · default 0
keywordsstring · queryrequireddefault fyp
HTTP
curl "https://fetchapi.co/api/gw/rapidapi-tiktok-scraper7/feed/search?count=10&cursor=0&region=us&keywords=fyp&sort_type=0&publish_time=0" \
  -H "x-api-key: YOUR_KEY"
MCP
call_endpoint("rapidapi-tiktok-scraper7.search_video", {"count": "10", "cursor": "0", "region": "us", "keywords": "fyp", "sort_type": "0", "publish_time": "0"})
tiktok-api23 · Explore Dramas$0.00005
GET /api/gw/rapidapi-tiktok-api23/api/drama/explore$0.00005 / call✓ working · tested 2026-10-060.89 s latency
Parameters
ParameterTypeNotes
typestring · queryoptionalTheme type for filtering dramas - `10` (default): All - `9`: Lastest - `8`: Ranking - New releases - `7`: Ranking - Trending · default 10
countnumber · queryoptionalThe number of results to be returned. The default and maximum value is `10` · default 10
releasePeriodstring · queryoptionalThe release period used to filter dramas - `all` (default): All - `7d`: In 7 days - `30d`: In 30 days · default all
cursorstring · queryoptionalcursor parameter is used for pagination. In the first request, the default value of cursor is `0`. For subsequent requests, the value of cursor will be taken from the response of the previous request · default 0
regionstring · queryoptionalThe region code used to determine the available dramas · default US
HTTP
curl "https://fetchapi.co/api/gw/rapidapi-tiktok-api23/api/drama/explore?type=10&count=10&cursor=0&region=US&releasePeriod=all" \
  -H "x-api-key: YOUR_KEY"
MCP
call_endpoint("rapidapi-tiktok-api23.explore_dramas", {"type": "10", "count": "10", "cursor": "0", "region": "US", "releasePeriod": "all"})
tiktok-api23 · Get Keyword Sentence$0.00005
GET /api/gw/rapidapi-tiktok-api23/api/trending/keyword/sentence$0.00005 / call✓ working · tested 2026-10-060.96 s latency
Parameters
ParameterTypeNotes
order_typestring · queryoptional`desc` | `asc` · default desc
pagenumber · queryoptionaldefault 1
countrystring · queryoptionaldefault US
periodnumber · queryoptional`7` | `30` | `120` · default 30
limitnumber · queryoptionaldefault 50
keywordstring · queryrequireddefault promotion
HTTP
curl "https://fetchapi.co/api/gw/rapidapi-tiktok-api23/api/trending/keyword/sentence?page=1&limit=50&period=30&country=US&keyword=promotion&order_type=desc" \
  -H "x-api-key: YOUR_KEY"
MCP
call_endpoint("rapidapi-tiktok-api23.get_keyword_sentence", {"page": "1", "limit": "50", "period": "30", "country": "US", "keyword": "promotion", "order_type": "desc"})
tiktok-api23 · Get Trending Video By Keyword$0.00005
GET /api/gw/rapidapi-tiktok-api23/api/trending/keyword/posts$0.00005 / call✓ working · tested 2026-10-060.37 s latency
Parameters
ParameterTypeNotes
periodnumber · queryoptional`7` | `30` | `120` · default 7
countrystring · queryoptionalCountry code. Head [here](https://gist.githubusercontent.com/apiboxguru/21d1cff1bef7732d9533389cb540541f/raw/6669d1e0025b67e8c7a0a1649cd8c75c5d5d2803/tiktok_trending_support_countries_with_codes.json) for a full list of supported countries · default US
limitnumber · queryoptionaldefault 10
keywordstring · queryrequireddefault promotion
HTTP
curl "https://fetchapi.co/api/gw/rapidapi-tiktok-api23/api/trending/keyword/posts?limit=10&period=7&country=US&keyword=promotion" \
  -H "x-api-key: YOUR_KEY"
MCP
call_endpoint("rapidapi-tiktok-api23.get_trending_video_by_keyword", {"limit": "10", "period": "7", "country": "US", "keyword": "promotion"})
tiktok-api23 · Others Searched For (Suggest Search)$0.00005
GET /api/gw/rapidapi-tiktok-api23/api/search/others-searched-for$0.00005 / call✓ working · tested 2026-10-060.77 s latency
Parameters
ParameterTypeNotes
keywordstring · queryrequireddefault cat
HTTP
curl "https://fetchapi.co/api/gw/rapidapi-tiktok-api23/api/search/others-searched-for?keyword=cat" \
  -H "x-api-key: YOUR_KEY"
MCP
call_endpoint("rapidapi-tiktok-api23.others_searched_for_suggest_search", {"keyword": "cat"})
tiktok-api23 · Search General (Top)$0.00005
GET /api/gw/rapidapi-tiktok-api23/api/search/general$0.00005 / call✓ working · tested 2026-10-060.50 s latency
Parameters
ParameterTypeNotes
cursornumber · queryoptional`cursor` parameter is used for pagination. In the first request, the default value of `cursor` is 0. For subsequent requests, the value of `cursor` will be taken from the response of the previous request. In the Search Endpoints, both `cursor` and `search_id` need to be provided when pagination is used · default 0
search_idstring · queryoptional`search_id` parameter is used for pagination. In the first request, the default value of the `search_id` is 0. For subsequent requests, the value of the cursor will be taken from the response of the previous request (from: `res.log_pb.impr_id`). In the Search Endpoints, both `cursor` and `search_id` need to be provided when pagination is used · default 0
keywordstring · queryrequireddefault cat
HTTP
curl "https://fetchapi.co/api/gw/rapidapi-tiktok-api23/api/search/general?cursor=0&keyword=cat&search_id=0" \
  -H "x-api-key: YOUR_KEY"
MCP
call_endpoint("rapidapi-tiktok-api23.search_general_top", {"cursor": "0", "keyword": "cat", "search_id": "0"})
tiktok-api23 · Search Photo$0.00005
GET /api/gw/rapidapi-tiktok-api23/api/search/photo$0.00005 / call✓ working · tested 2026-10-062.89 s latency
Parameters
ParameterTypeNotes
cursorstring · queryoptionalcursor parameter is used for pagination. In the first request, the default value of cursor is `0`. For subsequent requests, the value of cursor will be taken from the response of the previous request. In the Search Endpoints, both `cursor` and `search_id` need to be provided when pagination is used
search_idstring · queryoptionalsearch_id parameter is used for pagination. In the first request, the default value of the search_id is `0`. For subsequent requests, the value of the cursor will be taken from the response of the previous request (from: `log_pb.impr_id`). In the Search Endpoints, both `cursor` and `search_id` need to be provided when pagination is used
keywordstring · queryrequiredSearch keyword · default fornite
HTTP
curl "https://fetchapi.co/api/gw/rapidapi-tiktok-api23/api/search/photo?keyword=fornite" \
  -H "x-api-key: YOUR_KEY"
MCP
call_endpoint("rapidapi-tiktok-api23.search_photo", {"keyword": "fornite"})
tiktok-api23 · Search Video$0.00005
GET /api/gw/rapidapi-tiktok-api23/api/search/video$0.00005 / call✓ working · tested 2026-10-060.42 s latency
Parameters
ParameterTypeNotes
cursornumber · queryoptional`cursor` parameter is used for pagination. In the first request, the default value of `cursor` is 0. For subsequent requests, the value of `cursor` will be taken from the response of the previous request. In the Search Endpoints, both `cursor` and `search_id` need to be provided when pagination is used · default 0
search_idstring · queryoptional`search_id` parameter is used for pagination. In the first request, the default value of the `search_id` is 0. For subsequent requests, the value of the cursor will be taken from the response of the previous request (from: `res.log_pb.impr_id`). In the Search Endpoints, both `cursor` and `search_id` need to be provided when pagination is used · default 0
keywordstring · queryrequireddefault cat
HTTP
curl "https://fetchapi.co/api/gw/rapidapi-tiktok-api23/api/search/video?cursor=0&keyword=cat&search_id=0" \
  -H "x-api-key: YOUR_KEY"
MCP
call_endpoint("rapidapi-tiktok-api23.search_video", {"cursor": "0", "keyword": "cat", "search_id": "0"})
tiktok-api6 · Get Search Videos$0.001998
GET /api/gw/rapidapi-tiktok-api6/search/general/query$0.001998 / call✓ working · tested 2026-10-062.19 s latency
Parameters
ParameterTypeNotes
sort_typenumber · queryoptionalSort type for search results. Options are: 0 (relevance), 1 (like count), 3 (date posted). Default is 0 (relevance).
cursorstring · queryoptional
querystring · queryrequireddefault mr beast
HTTP
curl "https://fetchapi.co/api/gw/rapidapi-tiktok-api6/search/general/query?query=mr beast" \
  -H "x-api-key: YOUR_KEY"
MCP
call_endpoint("rapidapi-tiktok-api6.get_search_videos", {"query": "mr beast"})
tiktok-api6 · Search Videos$0.001998
POST /api/gw/rapidapi-tiktok-api6/search/general/query$0.001998 / call✓ working · tested 2026-10-062.17 s latency
Parameters
ParameterTypeNotes
querystr · bodyJSON body fielde.g. "mr beast"
cursorint · bodyJSON body fielde.g. 0
sort_typestr · bodyJSON body fielde.g. "0"
HTTP
curl -X POST "https://fetchapi.co/api/gw/rapidapi-tiktok-api6/search/general/query" \
  -H "x-api-key: YOUR_KEY" -H "content-type: application/json" \
  -d '{"query": "mr beast", "cursor": 0, "sort_type": "0"}'
MCP
call_endpoint("rapidapi-tiktok-api6.search_videos", {}, {"query": "mr beast", "cursor": 0, "sort_type": "0"})

Related TikTok APIs

All 43 TikTok jobs →

One key for every API on this page.

Call it over HTTP or from any MCP client. Each key has a rate limit and a monthly cap; calls are metered at the upstream price.