Google Trends Lookup & Search Interest Tracker avatar

Google Trends Lookup & Search Interest Tracker

Pricing

Pay per usage

Go to Apify Store
Google Trends Lookup & Search Interest Tracker

Google Trends Lookup & Search Interest Tracker

Bulk Google Trends lookup and search-interest tracker: interest over time, rising and top related queries for any list of search terms or keywords, read directly from Trends' own JSON endpoints instead of a headless browser.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Catalyst

Catalyst

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

Share

Give it a list of search terms or keywords. Each one comes back with search interest over time and its top and rising related queries, read straight from Google Trends' own JSON endpoints. No headless browser.

Use it to track how interest in a keyword moves over the last hour through the last five years, to compare a list of terms against each other, or to pull the rising queries around a topic for keyword research.

That matters because the market leader times out on close to a quarter of its runs while doing this with a full browser at 4 GB of memory. This Actor reads the same data with one HTTP request per term plus one per requested output, at 512 MB, typically finishing in a few seconds. Every row also reports its own fetch time and status, so you can see reliability without opening a single result.

Run it on Apify: https://apify.com/catalyst_prime/google-trends

Free to run, no setup. You only use your own Apify account's included usage.

Input

Give it one or more terms via searchTerms (a JSON array, a single string, or a comma or newline separated list). If you're switching from another Trends tool, this Actor also accepts whichever of these field names your existing input already uses: terms, keywords, queries, term. Supply terms in any one of them, or mix several; they are combined and deduplicated.

FieldTypeDefaultDescription
searchTermsarray of stringsnoneTerms to look up. Supply this or any one alias below.
termsarraynoneAlias of searchTerms.
keywordsarraynoneAlias of searchTerms.
queriesarraynoneAlias of searchTerms. Accepts plain strings or {"query": "..."} objects.
termstringnoneAlias of searchTerms for a single term.
timeRangeenumpast12MonthsOne of pastHour, past4Hours, pastDay, past7Days, past30Days, past90Days, past12Months, past5Years.
categoryinteger0Google's numeric category ID. 0 means all categories.
outputsarray of enumbothWhich datasets to return per term: interestOverTime, relatedQueries.
timeoutSecondsinteger20Per-request timeout, clamped to 5 to 60 seconds.

Worldwide only. This version does not accept a geo parameter, on purpose: per country breakdowns need a wider IP footprint than a datacenter proxy reliably provides, and worldwide results are what most buyers pulling trend data actually want. Say so plainly here rather than leaving it to be discovered.

Output

One dataset item per (search term x output type), so a run over 3 terms with both outputs produces 6 rows.

{
"term": "coffee",
"outputType": "interestOverTime",
"timeRange": "past12Months",
"category": 0,
"status": "ok",
"fetchMs": 118,
"charged": false,
"data": [
{ "time": "1758758400", "formattedTime": "Sep 25, 2026", "value": [42], "hasData": [true] }
]
}

status is ok (data returned), no_data (Google Trends had nothing for this term, time range and category, a normal outcome, not a failure) or error (the request itself failed). error carries a plain-language reason whenever status is not ok. A term that cannot be reached at all still gets one row per output type, each with its own status and error, rather than being silently dropped. The only way a run fails outright is zero usable search terms in the input.

data's shape depends on outputType:

  • interestOverTime: a list of {time, formattedTime, value, hasData} points across the requested time range.
  • relatedQueries: a ranked list of related search queries as Google Trends returns them, each with a value, a formatted value, whether it had data, and a ranking field of "top" or "rising": both of Google's lists are included, not just the top one.

charged reports whether this row's lookup was billed (see Pricing). A no_data row is never charged, since it can't deliver anything to bill for.

relatedTopics was removed 2026-09-26. Google's own related-topics widget returned a genuinely empty result, {"default":{"rankedList":[]}}, for every term we tested, including large well known ones ("coffee", "nike", "bitcoin", "tesla") and worldwide and per-country queries alike. That's Google's current response, not a bug in this Actor, but it means the output never had anything to offer, so it isn't listed as an option any more rather than being kept around not working. relatedQueries has no such gap.

Pricing

Free. This Actor has no price set, so a run costs you only your own Apify platform usage. The charged field in each output row stays false while the Actor is free.

The code does support pay-per-event billing on a single trends-lookup event, priced per successfully processed row, if a price is ever set on the Apify Console. Nothing is hardcoded in the Actor: it reads its own current price from the platform at startup and runs unmetered when there isn't one.

A note on reliability

Google Trends throttles by recent request volume from a source, not by a per-run cap. A single run of a normal size (a handful of terms) is well within what this Actor has tested reliably. If you run this Actor very frequently back to back, you may occasionally see a batch of rows come back with status: "error"; that's Google's own rate limit, not a bug, and it clears on its own after a few minutes.

Other Actors from Catalyst Prime

Example tasks

Saved, pre-configured runs you can try without writing any input: