Pass source youtube for a YouTube search-interest series, or source tiktok for a hashtag-volume series with absolute volume. The live boards use different type strings and different row shapes.
Live data as of 2026-09-25
A YouTube vs TikTok comparison on Trends MCP is two keyword sources plus two live boards. Source youtube on get_growth or get_time_series returns a 0-100 YouTube search-interest series for one phrase. Source tiktok returns a 0-100 hashtag-volume series with absolute volume. On September 25, 2026, chatgpt closed 57.0 on YouTube (recent_date 2026-09-19, 261 weekly points from 2021-09-25) and 55.5 on TikTok (recent_date 2026-09-20, 30 daily points from 2026-08-22, recent_volume 21784795.0). Omitting percent_growth on TikTok chatgpt defaults to 12M and returned HTTP 400 growth_calculation_failed. Type YouTube Trending and type TikTok Trending Hashtags are separate get_top_trends feeds. Mixing those type strings into source is a 400.
The September 25, 2026 pull is the split that still matters next month: YouTube search interest is a five-year weekly strip with no volume field, while TikTok hashtag volume is about one month of daily rows with volume on every point. get_time_series for chatgpt on source youtube returned 261 weekly points from 2021-09-25 (value 0) through 2026-09-19 (value 57). The first non-zero week was 2022-12-10 at 5. The series peak was 100 on 2025-04-05. No row carried a volume key.
get_time_series for chatgpt on source tiktok returned 30 daily points from 2026-08-22 through 2026-09-20. The field name on those rows was datatype tiktok, not source. Opening row: value 0.1, volume 13316322. Close: value 55.5, volume 21784795. Peak index 100.0 fell on 2026-09-14 at volume 28581034. On 2026-08-30 the index printed 0.0 while volume stayed 13297468. Index 0.0 is not a missing day.
| Keyword | YouTube close | YouTube 7D | YouTube points | TikTok close | TikTok 7D index | TikTok 7D volume | TikTok points |
|---|---|---|---|---|---|---|---|
| chatgpt | 57.0 on 2026-09-19 | -1.72% from 58.0 | 261 | 55.5 on 2026-09-20 | -26.1% from 75.1 | -12.1% from 24782939.0 | 30 |
| booktok | 59.0 on 2026-09-19 | +1.72% from 58.0 | 261 | 20.2 on 2026-09-22 | -54.09% from 44.0 | -5.57% from 72120600.0 | 30 |
| matcha | 65.0 on 2026-09-19 | -7.14% from 70.0 | 261 | 12.3 on 2026-09-22 | -44.34% from 22.1 | -6.21% from 11396455.0 | 30 |
| nfl | 86.0 on 2026-09-19 | +53.57% from 56.0 | 261 | 61.1 on 2026-09-22 | +0.83% from 60.6 | +0.6% from 357478984.0 | 30 |
Same string, different grain, different close dates. booktok rose 1.72% on YouTube the week TikTok index fell 54.09%. Quote both. Do not average them. TikTok index moves faster than TikTok volume. booktok volume only fell 5.57% that week. matcha 30D index fell 71.92% from 43.8 while volume fell 17.51% from 12956798.0. Prefer volume when it is present.
chatgpt 30D on TikTok printed index growth 55400.0% from baseline 0.1 on 2026-08-22, while volume grew 63.59% from 13316322.0 to 21784795.0. REST 1M printed that same 55400.0% window. Skip 55400.0 in a forecast. Quote 63.59% volume, or quote the 0.1 opening index as a floor, not as a multiplier. YouTube chatgpt 30D was +18.75% from 48.0 to 57.0, 12M +96.55% from 29.0, YTD +185.0% from 20.0 on 2026-01-03. TikTok 3M, 12M, and YTD all returned date_out_of_range with data_start 2026-08-22. Store 7D, 14D, or 30D on this source until the strip is longer.
Comma get_growth for chatgpt on youtube, tiktok returned sources_successful 2 and trend_analysis.uptrend_ratio 0/2. volume_weighted_growth printed -12.1 with weight_coverage 1/2 sources and total_volume 21784795.0. The only volume used was TikTok. YouTube contributed no weight. nfl did the same: uptrend_ratio 2/2, weighted growth 0.6, TikTok volume 359636870.0 at 100% of the weight. A comma call is not a blended index. It is two series plus a TikTok-only volume weight.
Keyword format is the second durable split. Source tiktok treats the string as a hashtag. Source youtube treats it as a search phrase. On September 25, 2026, #chatgpt on TikTok echoed search_term chatgpt and matched the unprefixed 7D and 30D rows exactly: 55.5 from 75.1, -26.1%, volume 21784795.0 from 24782939.0, 30 points. The hash was stripped before lookup.
#chatgpt on YouTube did not strip. It closed 41.0 on 2026-09-19, 7D -31.67% from 60.0, 261 points. Plain chatgpt closed 57.0, 7D -1.72% from 58.0. Those are two YouTube series. If the intent is the search phrase people type without a hash, send chatgpt to YouTube. If the intent is the hashtag, send chatgpt or #chatgpt to TikTok and expect the same row.
nfl is the join that works because the TikTok board prints hashtag strings. Omitting limit on type TikTok Trending Hashtags returned limit 25, count 25, offset 0, as_of_ts 2026-09-25T06:01:42.891667+00:00, rank 1 nfl. The same string on source tiktok closed 61.1 on 2026-09-22, and on source youtube closed 86.0 on 2026-09-19. Board rank 1 is not YouTube index 86.0. It is a hashtag that also exists as a search phrase. Rank 2 on that board was usa. Rank 5 was tiktokshop. Those strings are hashtags. They are not YouTube video titles.
Two strings, two tools. REST uses mode get_growth or get_top_trends. MCP uses the matching tool names. YouTube search history lives on the YouTube search data page. The hashtag-versus-board split is documented with TikTok search vs TikTok Trending Hashtags. Video search versus the live video board is YouTube search vs YouTube Trending. Window defaults live on get-growth.
{"mode": "get_growth", "source": "youtube, tiktok", "keyword": "chatgpt", "percent_growth": ["7D", "30D", "12M"]}
{"mode": "get_time_series", "source": "youtube", "keyword": "chatgpt"}
{"mode": "get_time_series", "source": "tiktok", "keyword": "chatgpt"}
{"mode": "get_top_trends", "type": "YouTube Trending"}
{"mode": "get_top_trends", "type": "TikTok Trending Hashtags"}
The MCP equivalents are get_growth(keyword="chatgpt", source="youtube, tiktok", percent_growth=["7D", "30D", "12M"]), get_time_series(keyword="chatgpt", source="youtube"), get_time_series(keyword="chatgpt", source="tiktok"), get_top_trends(type="YouTube Trending"), and get_top_trends(type="TikTok Trending Hashtags"). REST 1W matched 7D on YouTube chatgpt: 57.0 from 58.0, -1.72%, baseline 2026-09-12, 261 points. REST 1W matched 7D on TikTok chatgpt: 55.5 from 75.1, -26.1%. REST 2W matched 14D on TikTok: 55.5 from 31.0, +79.03%, volume 21784795.0 from 18033085.0, +20.8%, baseline 2026-09-06.
Omit percent_growth on TikTok chatgpt after the explicit-window success returned HTTP 400, error growth_calculation_failed, message No growth window could be calculated. The default window is 12M. That preset printed date_out_of_range against data_start 2026-08-22. Store 7D, 14D, or 30D. Source YouTube (capital Y) case-folded and returned HTTP 200 on the omitted-window call, echoing the chatgpt 12M row of 57.0 from 29.0, +96.55%. Store the lowercase source string in configs.
get_time_series on youtube, tiktok returned invalid_source with 16 names and no all. Multi-source strings belong on get_growth only. get_growth with source YouTube Trending and keyword chatgpt returned HTTP 400, error invalid_source, message 'youtube trending' is not a valid source., plus 16 valid sources and all. The handler lowercased the rejected type string. It did not map it to source youtube.
Omitting limit on type YouTube Trending returned limit 25, count 25, offset 0, and the same as_of_ts 2026-09-25T06:01:42.891667+00:00 as the TikTok hashtag board. Rank 1 was Remy Ma, Keke Wyatt - Why I Get Married?. Rank 2 was You Can See Everything | Official Trailer HD | A24. Rank 3 was a Roblox game video. Those rows are video titles. They are not search phrases and not hashtags. REST type youtube trending (lowercase) returned HTTP 200, echoed type YouTube Trending, and matched the first three titles. REST type tiktok trending hashtags echoed TikTok Trending Hashtags with rank 1 nfl. llms.txt still describes feed labels as case-sensitive. The live handler accepted both lowercase strings on September 25, 2026. Prefer the canonical spelling in stored configs.
get_top_trends with type youtube returned HTTP 400, error invalid_request, message Unknown type 'youtube', plus 24 valid feed labels that include YouTube Trending and TikTok Trending Hashtags. type tiktok returned the same 400 shape. Source youtube is not a feed type. Type YouTube Trending is not a growth source.
country GB with limit 3 on YouTube Trending returned HTTP 200, echoed country GB, and stamped as_of_ts 2026-09-25T06:15:50.111548+00:00. Rank 1 was Patient Zero. Rank 2 was Clayface | Final Trailer. Rank 3 was a Minecraft video. That stamp is later than the default board's 06:01:42 snapshot, and rank 1 is a different title. Country is supported on YouTube Trending. Omit country for the default board. Do not join a GB title list to the omitted-country snapshot as one chart.
REST omitting type is a different 400. POST https://api.trendsmcp.ai/api with mode get_top_trends and limit 5, no type, returned HTTP 200 with envelope statusCode 400, error invalid_request, message The 'type' parameter is required, then the same 24-name list. llms.txt still names that miss missing_parameter. Read statusCode inside the JSON, not only the HTTP line.
get_top_trends MCP pricing is 1 credit per 10 requested rows, max 10 credits per call. REST counts 1 request per call. Free boards still cap at the top 10. The 25-row pulls on this page are the paid default, which is also what the handler returns when limit is omitted on a paid key. Keyword follow-up stays on source youtube or source tiktok. The live boards stay on their type strings.
FAQ