Pass one social source and a hashtag to get_top_posts. Read the default 20-row window, the 404s on board keywords, and the REST mode that OpenAPI still omits.
Live data as of 2026-09-18
get_top_posts on Trends MCP returns live posts for one hashtag on one social source. Valid sources are tiktok and instagram. REST mode is get_top_posts. The alias is top_posts. Omit limit and the payload prints count 20. Max limit is 20. offset does not page. A 2026-09-18 TikTok Trending Hashtags board ranked usa at 1, then get_top_posts on usa returned 404 no_data. Product docs, llms.txt, and the OpenAPI spec fetched that day still say three tools. The live MCP tool list and the REST endpoint both accept a fourth.
From the Trends MCP pull of 2026-09-18, a get_top_posts call that sent source tiktok and keyword fitness with no limit field returned count 20 and 20 distinct TikTok URLs. Rank 1 was https://www.tiktok.com/@bodylife65/video/7682843935131045152, posted 2026-09-07, 3,100,000 plays, 105,300 likes. A follow-up with limit 1 returned count 1 and that same URL. keyword #fitness echoed fitness and the same rank-1 row.
The server does not share the get_top_trends default. That tool omits limit and prints 25, with a max of 200. get_top_posts max is 20. REST limit 50 returned HTTP 200, envelope statusCode 400, error invalid_request, message limit must be between 1 and 20.
offset is not a pager here. REST offset 20 on the same tiktok fitness call still printed count 20 and the same @bodylife65 rank-1 URL. There was no as_of_ts field on any posts payload in this pull. get_top_trends boards carry that stamp. This tool does not.
A comma-separated source string failed. source tiktok, instagram returned 400 invalid_request, Unknown source 'tiktok, instagram'. Valid sources: tiktok, instagram. source youtube used the same error code, not invalid_source. Missing keyword on REST printed The 'keyword' parameter is required (the hashtag, with or without #). Missing source printed The 'source' parameter is required. Valid sources: tiktok, instagram. Both were invalid_request. Product error tables still lead with missing_parameter. Read the live error field.
get_top_trends with type TikTok Trending Hashtags and limit 5 on 2026-09-18 printed as_of_ts 2026-09-18T06:01:36.869406+00:00 and this board:
| Rank | Board string | get_top_posts on tiktok |
|---|---|---|
| 1 | usa | 404 no_data |
| 2 | nfl | count 3, rank 1 @overtime |
| 3 | football | count 1, rank 1 @overtime |
| 4 | tiktokshop | 404 no_data |
| 5 | dance | 404 no_data |
The usa error named #usa and listed similar tags such as #usahakecilkecilan. tiktokshop suggested #tiktokshopdealsforyouday. dance suggested #dancechallenges. Three of the five board leaders were not exact hashtags this tool could fetch.
nfl rank 1 was https://www.tiktok.com/@overtime/video/7683582199022505229, posted 2026-09-09, 2,200,000 plays, 371,100 likes. football rank 1 was a different @overtime video, posted 2026-09-12, 3,600,000 plays. Rank on the TikTok Trending Hashtags API board is a discovery string. It is not a hashtag id.
get_growth on source tiktok and keyword fitness is a different object again. The 2026-09-18 pull printed 30 daily points. 7D index 2.0 on 2026-09-13 versus 11.6 on 2026-09-06, growth -82.76%. Volume 45,735,154 versus 47,006,300, volume_growth -2.7%. 30D index 2.0 versus 74.8, growth -97.33%. The posts call for that same tag still returned a rank-1 video with 3,100,000 plays. Volume direction and the winning post are not the same number.
TikTok posts rows in this pull carried rank, title (always null), caption, author, plays, likes, posted, url, and hashtags. Instagram rows on the same day dropped author and plays, added comments, media_type, and id, and left likes null on some ranks.
source Instagram (capital I) succeeded and echoed instagram. keyword book stagram with a space echoed bookstagram. Spaces are stripped. The hash mark is stripped. The source string is folded.
Instagram Graph API Hashtag Top Media, fetched 2026-09-18 from Meta's docs, still caps a page at 50 results, limits callers to 30 unique hashtags in 7 days, will not return promoted media, and will not return a username field on those media objects. Trends MCP max limit is 20. This pull printed Instagram author null on every row, including rank 1 https://www.instagram.com/p/DdZIh-0DYRv/ (24 comments, likes null, media_type CAROUSEL_ALBUM, posted 2026-09-17). That null is the payload. It is not a Trends MCP username quota copied from Meta's 30-hashtag rule.
TikTok fitness rank 14 was @nr_performance at 3,800,000 plays. Rank 20 was @greywolffitness1 at 3,000,000 plays and 38,400 likes. Rank is not a sort by plays. Count the plays field if volume of a post is the question.
count is len(posts). It is not unique URLs.
MCP instagram bookstagram with limit omitted returned count 20 and 5 unique URLs. The same five shortcodes occupied ranks 1-5, 6-10, 11-15, and 16-20. MCP limit 5 on that tag returned those five URLs once. A later REST call with limit 20 returned count 20 and 10 unique URLs. Rank 2 moved between the MCP pull and the REST pull. The tool description says posts are fetched live on every call and nothing is stored. The changing rank-2 URL matches that.
MCP instagram fitness with limit omitted returned count 20 and 6 unique URLs. A separate MCP limit 3 call on the same tag put a different carousel first (https://www.instagram.com/p/DdX0hz_FKBg/, 357 likes, 19 comments) than the omit-limit rank 1 (https://www.instagram.com/p/DdXRtjilFwg/, 610 likes, 9 comments). Deduplicate on url or id before treating the twentieth row as a twentieth post.
POST https://api.trendsmcp.ai/api with {"mode": "get_top_posts", "source": "tiktok", "keyword": "fitness", "limit": 3} returned HTTP 200, statusCode 200, count 3, and the same @bodylife65 rank-1 URL as MCP. mode top_posts returned that row too. An earlier get_top_posts REST call on the same body returned 404 no_data for #fitness with similar-tag hints, then a retry succeeded. Live fetch can 404 on a tag that the next call hits.
The OpenAPI 3.1 document at https://www.trendsmcp.ai/openapi.json, fetched 2026-09-18, still describes "one of three operations." Its mode discriminator maps only get_time_series, get_growth, and get_top_trends. docs.md and llms.txt from the same day open the tool table with "Three tools." Pricing markdown lists request costs for those three names and does not name get_top_posts. The live REST envelope accepts the fourth mode anyway.
A generated client that only emits the OpenAPI oneOf will never send this call. MCP clients that read the live tool list will. Wire get_top_posts or top_posts on REST if the job is posts on a hashtag. Leave get_top_trends for ranking hashtags, and get_growth for the volume series behind a tag that actually resolves.
FAQ