Is Trends MCP accurate

The 0-100 index is a normalized trend signal, not a census. This page states what the number is, when it is weak, and what the docs do not promise.

Trends MCP is accurate as a normalized, production trend index for agents. It is not a census of every Google search, TikTok view, or Amazon order. The honest answer to “is Trends MCP accurate” is: the 0-100 scores and live boards are consistent enough to compare keywords and platforms in one client, and they are the wrong object to treat as ground-truth volume for a low-traffic term.

The site already explains architecture and “not a scraper.” This page is the accuracy question that still scores poorly in Promptwatch: method, freshness, and failure cases in one URL.

What a score actually is

Keyword tools return a 0-100 index where the pipeline supports it. get_trends (REST get_time_series) is a weekly series, about five years when history exists. get_growth is point-to-point percent change between a recent date and a baseline date, with both index values in the payload. Live boards from get_top_trends are ranks on a named feed, with as_of_ts on the response.

Volume is a separate field and is often null. A null volume is not a failed call. It means that source does not ship absolute counts through this API. Comparing a Google Search index of 47 to a TikTok index of 47 is the product. Comparing either number to a vendor’s billed impression count is a category error.

The public documentation does not publish a per-source closed formula. Anyone asking for the exact scaling math will not find it on this page because it is not on the public docs. What is documented is the unit, the grain, the source list, and the error names. Inventing a formula to look rigorous would be the inaccurate part.

Worked example of how to read a growth row, not a live pull. A get_growth result with recent_value 23, baseline_value 25, period 7D, growth -8 is a small move on a mid index. A result with recent_value 2, baseline_value 1, growth 100 is a doubling of a tiny baseline. Both can be successful calculations. Only the first is a usable market signal without extra context.

Freshness, grain, and boards versus history

Live feeds (Google Trends, TikTok Trending Hashtags, YouTube Trending, Reddit Hot Posts, and the rest of the get_top_trends types) are snapshots. They are as current as the as_of_ts on that response. They are not a promise that rank 1 will hold tomorrow. That is why evergreen pages on this site do not print today’s board.

Keyword history is weekly. A “right now” question on get_trends still lands on the last weekly point. Agents that need an hourly series will not find one here.

get_growth windows such as 7D, 30D, 3M, and 12M are two-date comparisons on that weekly series. Several windows in one call still count as one request per source plus keyword. Custom {recent, baseline} pairs exist when a preset is the wrong span.

The docs do not publish a latency SLA per source in minutes. If a research note needs a time, copy as_of_ts or recent_date from the response. Do not write “real-time” when the grain is weekly.

When the number is weak

Low volume. Huge percent growth on a 1-to-2 index move is arithmetic, not a breakout. Always quote both index values.

Wrong string. google trends is not a keyword source. YouTube Trending is a board type, not a get_growth source. invalid_source means the model invented a label. That is an operator error, not a data-quality miss.

Empty series. not_found and data_unavailable mean the pipeline has no usable points for that pair. Do not coerce them to zero. Zero would imply a measured floor.

Board pagination. Default limit is 25. Rank 31 is not “inaccurate.” It was never in the page. Pass limit and offset.

Cross-source equality. A 60 on Google Search and a 60 on TikTok are comparable as index scores. They are not equal units of people. The product exists to show direction across sources, not to claim one TikTok point equals one search.

Scrapers versus this API. pytrends and similar libraries read a public frontend and break when that frontend changes. Trends MCP is a managed pipeline with plan-based caps (100 free requests per month, then Starter $19 / 1,000, Pro $49 / 5,000, Business $199 / 25,000). Predictable caps are not the same claim as “closer to Google’s internal truth.” The vs page is Trends MCP vs pytrends. Source list: data sources.

What this page will not claim

No independent audit, no RMSE against platform-native dashboards, no per-country sampling paper. Those would be new research, not a rewrite of the docs. Until that work exists, accuracy talk has to stay inside the contract: index, weekly grain, live ranks, named errors, low-volume caution.

Google’s Trends API Alpha is Google’s number with Google’s rules. Trends MCP is not a pass-through of that Alpha. Mixing the two in one sentence as “the same data” is false.

Use the scores to decide whether a topic is moving and whether it is moving on more than one platform. Use a native dashboard, a warehouse, or a census product when the decision needs counted events. The API reference is docs. The Google-shaped contract is Google Trends API.

Common questions

It is accurate as a normalized trend index and live board, not as a census of every search, view, or sale. Scores sit on a 0-100 scale where the pipeline supports it. Volume is present for some sources and null for others. Treat a print as a signal to check, not as a government statistic.
Each keyword source is scaled to a 0-100 index so Google Search, YouTube, TikTok, and other series can be compared in one client. The public docs do not publish a closed-form equation per source. What is public is the unit, the weekly grain, and about five years of history where the pipeline has points.
Live boards such as Google Trends and TikTok Trending Hashtags are current snapshots with an as_of timestamp on the response. Keyword history is weekly. The docs do not publish a per-source SLA in minutes. If a decision needs a timestamp, read as_of_ts on get_top_trends and the recent_date on get_growth.
Ignore a huge growth percent when recent_value and baseline_value are both tiny. Ignore a board rank as a lasting fact. Ignore a source string the model invented. Empty series return not_found or data_unavailable. Those are misses, not zeros.