~/business/google-trends-scraper

Google Trends Scraper — Keywords, Related Searches & Category Rankings

Google Trends for any keyword — interest over time, top and rising related searches, and interest by region — and the top and rising searches of any of Google's 928 categories, in any country, region, or US metro area, over any of Google's time ranges.

search trends TypeScript Global
proooxy/google-trends-scraper — spec
categorybusiness / search trends
languageTypeScript
stackTypeScript
marketsGlobal
outputclean, RAG-ready JSON

key features

Keyword lookups: interest over time, top and rising related searches with Breakouts marked, and interest by region or city, in one row

Category rankings: the top and rising searches of any of Google's 928 categories, down to the third level, or of all of them

Any place: a country, a region inside one (US-CA, GB-SCT), a US metro area (US-CA-807), or worldwide

Every time range Google offers, from the past hour to everything since 2004, several in one run

Keywords looked up within a category, to tell one meaning from another: jaguar the car

Each lookup and each ranked search keeps its key from run to run, so scheduled runs add up to a history

A run summary that tells 'no data' from 'failed'; what Google refuses is tried again at the end of the run

use cases

  • SEO and content planning: the rising searches around a topic, and the regions where it draws most
  • Product and market research: whether interest in a product, a brand, or a category grows, stalls, or comes back every season
  • Category watch: what people search for in Shopping, Travel, or any niche, month after month
  • Data pipelines and dashboards: scheduled lookups across keywords, markets, and time ranges
  • Giving AI agents Google Trends data through Apify's MCP server

input parameters

ParameterTypeRequiredDescription
keywordsarrayoptionalSearches to look up, each on its own, in every place and time range
keywordCategorystringoptionalLook the keywords up within one category: its id, name, or path
categoriesarrayoptionalCategories whose top and rising searches to read: a name, a path, an id, or 0 for all categories together
subcategoriesbooleanoptionalRank each category's subcategories too, down to the third level
allCategoriesbooleanoptionalRank all 928 categories: about an hour and a half for each place and time range
countriesarrayoptionalA country code, a region (US-CA), a US metro area (US-CA-807), or worldwide
windowsarrayoptional1h, 4h, 24h, 7d, 30d, 90d, 12m, 5y, or all since 2004; the past 12 months by default
maxItemsPerListnumberoptionalAt most this many searches from each top or rising list
maxItemsnumberoptionalStop after this many results in the whole run
proxyobjectoptionalUsed for every request; Apify's residential proxy by default

Output Example

A keyword lookup, bitcoin in the United States over the past 12 months:

 1{
 2  "recordType": "lookup",
 3  "itemKey": "google|lookup|US|12m|all|bitcoin",
 4  "keyword": "bitcoin",
 5  "geo": "US",
 6  "geoScope": "country",
 7  "window": "12m",
 8  "category": null,
 9  "status": "ok",
10  "reason": null,
11  "points": [
12    { "time": "2025-10-05T00:00:00.000Z", "value": 37, "hasData": true, "partial": false },
13    { "time": "2025-10-12T00:00:00.000Z", "value": 40, "hasData": true, "partial": false },
14    { "time": "2026-09-27T00:00:00.000Z", "value": 16, "hasData": true, "partial": false },
15    { "time": "2026-10-04T00:00:00.000Z", "value": 17, "hasData": true, "partial": true }
16  ],
17  "relatedQueries": {
18    "top": [
19      { "query": "bitcoin price", "value": 100, "label": "100", "breakout": false },
20      { "query": "bitcoin stock", "value": 18, "label": "18", "breakout": false }
21    ],
22    "rising": [
23      { "query": "spcx stock", "value": 14250, "label": "Breakout", "breakout": true },
24      { "query": "spcx stock price", "value": 12750, "label": "Breakout", "breakout": true }
25    ]
26  },
27  "regions": [
28    { "code": "US-WY", "name": "Wyoming", "value": 100 },
29    { "code": "US-NV", "name": "Nevada", "value": 51 }
30  ],
31  "observedAt": "2026-10-09T07:32:28.150Z",
32  "url": "https://trends.google.com/trends/explore?date=today+12-m&geo=US&q=bitcoin"
33}

Trimmed for length: the row also carries platform and geoRequested, and the full row had a point for every week, 25 top and 25 rising searches, and every state. A category ranking is one row per search instead, with list set to explore_top or explore_rising: on 9 October 2026, quince led Shopping’s rising searches in the United States over 12 months, at +80%.

Tips

  • Give an every-category run a timeout of two hours or more. All 929 rankings in one place over one time range take about an hour and a half; a run close to its time limit stops by itself and marks the rest not_reached.
  • A lookup Google has no data for is still a row, with status: "not_available" and Google’s reason, and it costs nothing.
  • Separate meanings with a keyword category: jaguar in Autos & Vehicles is the car, not the animal.
  • Read the run’s SUMMARY record to tell a keyword without data from a lookup that could not be read.

faq

Why is the highest point always 100?
Google scales each lookup to its own highest point, so the numbers are relative interest, not search counts. Two lookups are not on the same scale.
What is a Breakout?
Google's mark, in place of a percentage, for a related search that grew by more than 5,000%. Its value is the rise Google gives with it, such as 14250.
Which time ranges have category rankings?
Only the past 7 days, 30 days, 90 days, and 12 months, and only down to the third level of Google's category tree. A ranking asked for over another range is listed in the run summary as not_available and costs nothing.
Are related topics included?
No: Google returns them empty to automated requests. Related searches are included, top and rising.

related in ~/business

Run Google Trends Scraper — Keywords, Related Searches & Category Rankings, or get a custom build

Start extracting on Apify in minutes, or hire me to build a bespoke scraper and RAG pipeline for your exact source and schema.

run on Apify get custom data