Google Trends hub

Google Trends Interest Over Time API

One to five terms as a time series, relative to the peak in the request, with the resolution and notes that explain it.

GET /v1/google-trends/interest-over-time

1 credit Failed requests are free

About this endpoint

GET /v1/google-trends/interest-over-time takes query (one to five terms, comma-separated or repeated), geo, time, and optional category, source and language. A term is plain text or id:/m/... from the suggestions route. time is one named range, a custom range, or two comma-separated ranges for a single term.

data.points[] is oldest first. Each point has time in ISO 8601 UTC, label as written on the axis, values[] and hasData[] with one entry per term, isPartial (false except the last point of a live range), and a period (0 or 1) in a two-period answer or null for one range. Values are 0 to 100 relative to the peak inside this request, so they are not comparable across requests. data.resolution says the granularity, data.averages carries one average per term or period, and data.notes carries data-change notes. When no point has data, lookupStatus is no_data; the rows are still returned with their false hasData flags.

Google Trends Interest Over Time API FAQ

How do I compare two periods?

Send one term and two time ranges, for example query=coffee&time=2024-01-01 2024-03-01,2025-01-01 2025-03-01. Every point carries period 0 or 1. Two named ranges are accepted only when they are the same length and the two ranges differ; use custom date ranges to compare periods of different lengths. Two ranges with more than one term are refused, and a range that ends before January 2004 is refused because Google Trends has no data there.

Can I compare different request values?

No. Values are normalised inside each request. Compare shapes and order within one response, not the number from one request with the number from another.

What does hasData mean?

hasData has one boolean per term at each point. A false entry means there was no figure for that term at that point; the value is still present so the arrays stay aligned.

What are resolution and notes?

resolution is the granularity the answer used, such as MINUTE, HOUR, DAY, WEEK or MONTH. notes holds any data-change text the answer carried, up to ten entries.

What does no_data mean here?

The request was valid but no point carries data, for example for a tiny place or a term with no series. HTTP is 200 and lookupStatus is no_data; the rows are kept with false hasData flags.

How much does an interest lookup cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth.