Google Search Trends API: Working REST Calls

One POST returns 261 weekly Google Search points as a 0 to 100 index. Working curl and Python, the response envelope, parameters, and cost.

Trends API team Published Data as of 2026-11-06

Line chart of weekly Google Search interest for google search trends, 2021 to 2026, peaking at 100 in June 2026

The Google Search Trends API answers with one POST to https://api.trendsmcp.ai/api. The request names mode get_time_series, keyword google search trends, and source Google Search. A live call on 2026-11-06 returned 261 weekly points from 2021-11-06 to 2026-10-31, each a 0 to 100 index. Interest peaked at 100 in the weeks of 2026-06-06 and 2026-06-13, then fell to 12 by 2026-10-31, down 76 percent from a year earlier. The response arrives as an envelope with statusCode 200 and a body that is a JSON string, so parsing happens twice. Each call costs 1 request.

The request that works

One POST to https://api.trendsmcp.ai/api runs the whole job. The same endpoint serves all 5 tools, and the mode field picks the tool. Auth is a Bearer token in the Authorization header. The bare key works in place of the Bearer prefix.

curl -X POST https://api.trendsmcp.ai/api \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"mode": "get_time_series", "keyword": "google search trends", "source": "Google Search"}'

The same call in Python:

import json
import requests

response = requests.post(
    "https://api.trendsmcp.ai/api",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json",
    },
    json={
        "mode": "get_time_series",
        "keyword": "google search trends",
        "source": "Google Search",
    },
    timeout=60,
)
envelope = response.json()
if envelope["statusCode"] != 200:
    raise SystemExit(envelope["body"])
series = json.loads(envelope["body"])

The keyword is any name or phrase. The source must match one of the 14 keyword sources exactly, including the capital letters in Google Search. The docs cover key setup.

The body is a JSON string, so parse it twice

The response arrives as an envelope, and the body inside it is a JSON string. A direct check on 2026-11-06 returned HTTP 200 with two keys, statusCode and body, and statusCode 200. The body parsed as JSON gave the series. Code that reads envelope["body"] as a finished object gets a string, not a list.

{
  "statusCode": 200,
  "body": "[{\"date\": \"2026-10-31\", \"value\": 12, \"keyword\": \"google search trends\", \"source\": \"google search\"}]"
}

The parse page covers the envelope shape in full.

One call returns 261 weekly points

A single get_time_series call returned 261 weekly points for google search trends. The first point is 2021-11-06 at 13, and the last is 2026-10-31 at 12. The index runs 0 to 100, and 100 marks the peak week in the range returned.

Week Index
2021-11-06 13
2026-06-06 100
2026-06-13 100
2026-08-01 49
2026-10-31 12

Each point carried date, value, keyword, and source. No volume field came back for this keyword, even though the field exists where the source reports it. The default resolution is weekly and covers about five years.

Growth: down 76 percent in 12 months

Interest in google search trends fell 76.0 percent over the 12 months to 2026-10-31. Each get_growth window compares a baseline point with a recent point, and one call can carry several windows at the same price.

Window Baseline Recent Change
3M 49.0 on 2026-08-01 12.0 on 2026-10-31 -75.51%
12M 50.0 on 2025-11-01 12.0 on 2026-10-31 -76.0%

The drop follows a June peak: the index hit 100 in the weeks of 2026-06-06 and 2026-06-13. The numbers show what moved. They do not say why.

Four parameters change the answer

Keyword, source, country, and resolution decide what comes back.

Parameter Required What it does
keyword yes Any name or phrase
source yes Exactly one keyword source, such as Google Search
country no Two-letter country code; Google series default to worldwide
resolution no weekly (about 5 years) or daily (last 90 days)

The source must be exactly one of the 14 keyword sources. Google time series default to worldwide when no country is set. Daily resolution covers the last 90 days and is fetched live; weekly is the default and covers about five years. Growth windows are presets such as 3M and 12M, with 12M as the default, or a custom date range.

Each call costs 1 request

Every call on this page costs 1 request, and only successful calls count. Over REST, get_top_trends costs 1 request per call however many rows come back, and get_growth covers every window in the same call. Plans and quotas sit on the pricing page. A free key is enough to run the calls on this page.

Three things to build with it

The endpoint fits three builds: an alert, a dashboard feed, and a research pull. An alert calls get_growth on a schedule and flags a keyword when a window crosses a threshold, for example when the 12M window falls below -50 percent. A dashboard stores get_time_series points and charts the 0 to 100 index over five years. A research pull pairs get_context with the keyword's top-trends board to find the posts behind a move. The Python guide shows the same calls in a script.

Errors arrive in the envelope, not the HTTP status

A failed call still returns HTTP 200, with statusCode 400 inside the envelope. The body then holds an error code and a message instead of data.

Code Meaning
missing_parameter A required field is missing
invalid_source The source or type is not one the API serves
no_data Nothing matched the keyword on that source
invalid_api_key The key is missing, mistyped, or was regenerated
monthly_limit_reached The plan's monthly requests are used up

Failed calls are free. The errors page lists every code.

Questions

Does the API return absolute search volume for Google Search?

Sometimes. The response carries a volume field where the source reports it. The live call behind this page returned no volume field for google search trends, only the 0 to 100 index, so code that needs volume should treat the field as optional.

How fresh is the data?

The latest weekly point in the live call was 2026-10-31. Daily resolution covers the last 90 days for Google sources, and it is fetched live.