Google Trends Scraper avatar

Google Trends Scraper

Try for free

7 days trial then $20.00/month - No credit card required now

View all Actors
Google Trends Scraper

Google Trends Scraper

emastra/google-trends-scraper
Try for free

7 days trial then $20.00/month - No credit card required now

Scrape data from Google Trends by search terms or URLs. Specify locations, define time ranges, select categories to get interest by subregion and over time, related queries and topics, and more. Export scraped data, run the scraper via API, schedule and monitor runs, or integrate with other tools.

Do you want to learn more about this Actor?

Get a demo

Our Google Trends Scraper crawls specified search queries and Google Trends URLs, and extracts data from Google Trends pages in structured formats such as JSON, CSV, XML, or Excel. With this Google Trends API, you will be able to extract the following Google trends data:

🔍 Search term🏙 Interest by city
🌍 Interest by subregion🗺 Geo code and Geo name
📊 Average interest over time📆 Timeline of the interest over time
🔺 Rising related queries🔝 Top related queries
⬆️ Rising related topics⭐️ Top related topics

Google Trends Scraper is designed to be user-friendly, even for those who have never extracted data from the web before. Here’s how you can use Google Trends Scraper to extract data from Google trends:

  1. Create an Apify account
  2. Open Google Trends Scraper.
  3. Enter your search term, location, and time range. Or use a Google Trends URL with applied filters instead.
  4. Click the “Start” button and wait for the data to be extracted.
  5. Download your data in JSON, CSV, Excel, XML or HTML.

If you need guidance on how to run the scraper, you can read our step-by-step guide to scraping Google Trends, it includes use cases, screenshots, and examples. Or watch a short video tutorial ▷ on YouTube.

🔍 Back up your market research by tracking the popularity of search terms and identifying trending topics

📊 Find business insights by comparing the popularity of multiple search terms and see how they relate to each other

📍 Generate content ideas by exploring regional interest and see which areas are searching for specific topics the most

💡 Discover related queries and topics to gain a deeper understanding of user interests

🕒 Improve your SEO game by analyzing search trends over time to identify seasonal patterns or long-term changes in user behavior

⬇️ Input example

You can scrape Google Trends either by search query or by a Google Trends URL. For a full explanation of input including an example in JSON, head over to the input tab.

You can set up the input programmatically or use the fields in scraper’s interface:

⬆️ Output example

The scraped Google Trends data will be shown as a dataset which you can find in the Output tab. Note that the output is organized as a table for viewing convenience:

You can preview all the fields and choose in which format to download Google Trends data you’ve extracted: JSON, Excel, HTML table, CSV, or XML. Here below is the same dataset in JSON:

1{
2  "inputUrlOrTerm": "web scraping",
3  "searchTerm": "web scraping",
4  "interestOverTime_timelineData": [
5    {
6      "time": "1673136000",
7      "formattedTime": "Jan 8 – 14, 2023",
8      "formattedAxisTime": "Jan 8, 2023",
9      "value": [
10        99
11      ],
12      "hasData": [
13        true
14      ],
15      "formattedValue": [
16        "99"
17      ]
18    },
19    {
20      "time": "1673740800",
21      "formattedTime": "Jan 15 – 21, 2023",
22      "formattedAxisTime": "Jan 15, 2023",
23      "value": [
24        96
25      ],
26      "hasData": [
27        true
28      ],
29      "formattedValue": [
30        "96"
31      ]
32    },
33    {
34      "time": "1674345600",
35      "formattedTime": "Jan 22 – 28, 2023",
36      "formattedAxisTime": "Jan 22, 2023",
37      "value": [
38        99
39      ],
40      "hasData": [
41        true
42      ],
43      "formattedValue": [
44        "99"
45      ]
46    },
47    {
48      "time": "1674950400",
49      "formattedTime": "Jan 29 – Feb 4, 2023",
50      "formattedAxisTime": "Jan 29, 2023",
51      "value": [
52        98
53      ],
54      "hasData": [
55        true
56      ],
57      "formattedValue": [
58        "98"
59      ]
60    },
61    {
62      "time": "1675555200",
63      "formattedTime": "Feb 5 – 11, 2023",
64      "formattedAxisTime": "Feb 5, 2023",
65      "value": [
66        100
67      ],
68      "hasData": [
69        true
70      ],
71      "formattedValue": [
72        "100"
73      ]
74    },
75    {
76      "time": "1676160000",
77      "formattedTime": "Feb 12 – 18, 2023",
78      "formattedAxisTime": "Feb 12, 2023",
79      "value": [
80        91
81      ],
82      "hasData": [
83        true
84      ],
85      "formattedValue": [
86        "91"
87      ]
88    },
89    {
90      "time": "1676764800",
91      "formattedTime": "Feb 19 – 25, 2023",
92      "formattedAxisTime": "Feb 19, 2023",
93      "value": [
94        98
95      ],
96      "hasData": [
97        true
98      ],
99      "formattedValue": [
100        "98"
101      ]
102    },
103{
104      "time": "1703376000",
105      "formattedTime": "Dec 24 – 30, 2023",
106      "formattedAxisTime": "Dec 24, 2023",
107      "value": [
108        80
109      ],
110      "hasData": [
111        true
112      ],
113      "formattedValue": [
114        "80"
115      ]
116    },
117    {
118      "time": "1703980800",
119      "formattedTime": "Dec 31, 2023 – Jan 6, 2024",
120      "formattedAxisTime": "Dec 31, 2023",
121      "value": [
122        81
123      ],
124      "hasData": [
125        true
126      ],
127      "formattedValue": [
128        "81"
129      ]
130    },
131    {
132      "time": "1704585600",
133      "formattedTime": "Jan 7 – 13, 2024",
134      "formattedAxisTime": "Jan 7, 2024",
135      "value": [
136        91
137      ],
138      "hasData": [
139        true
140      ],
141      "formattedValue": [
142        "91"
143      ],
144      "isPartial": true
145    }
146  ],
147  "interestOverTime_averages": [],
148  "interestBySubregion": [],
149  "interestByCity": [],
150  "relatedTopics_top": [
151    {
152      "topic": {
153        "mid": "/m/07ykbs",
154        "title": "Web scraping",
155        "type": "Topic"
156      },
157      "value": 100,
158      "formattedValue": "100",
159      "hasData": true,
160      "link": "/trends/explore?q=/m/07ykbs&date=today+12-m"
161    },
162    {
163      "topic": {
164        "mid": "/m/0828v",
165        "title": "World Wide Web",
166        "type": "Topic"
167      },
168      "value": 97,
169      "formattedValue": "97",
170      "hasData": true,
171      "link": "/trends/explore?q=/m/0828v&date=today+12-m"
172    },
173    {
174      "topic": {
175        "mid": "/m/05z1_",
176        "title": "Python",
177        "type": "Programming language"
178      },
179      "value": 29,
180      "formattedValue": "29",
181      "hasData": true,
182      "link": "/trends/explore?q=/m/05z1_&date=today+12-m"
183    },
184    {
185      "topic": {
186        "mid": "/m/026sq",
187        "title": "Data",
188        "type": "Topic"
189      },
190      "value": 14,
191      "formattedValue": "14",
192      "hasData": true,
193      "link": "/trends/explore?q=/m/026sq&date=today+12-m"
194    },
195    {
196      "topic": {
197        "mid": "/m/085n4",
198        "title": "Website",
199        "type": "Topic"
200      },
201      "value": 9,
202      "formattedValue": "9",
203      "hasData": true,
204      "link": "/trends/explore?q=/m/085n4&date=today+12-m"
205    },
206    {
207      "topic": {
208        "mid": "/m/0c828v",
209        "title": "Selenium",
210        "type": "Software"
211      },
212      "value": 5,
213      "formattedValue": "5",
214      "hasData": true,
215      "link": "/trends/explore?q=/m/0c828v&date=today+12-m"
216    },
217    {
218      "topic": {
219        "mid": "/m/0z5n",
220        "title": "Application programming interface",
221        "type": "Type of software"
222      },
223      "value": 5,
224      "formattedValue": "5",
225      "hasData": true,
226      "link": "/trends/explore?q=/m/0z5n&date=today+12-m"
227    },
228    {
229      "topic": {
230        "mid": "/m/022qrc8",
231        "title": "Beautiful Soup",
232        "type": "HTML parser"
233      },
234      "value": 5,
235      "formattedValue": "5",
236      "hasData": true,
237      "link": "/trends/explore?q=/m/022qrc8&date=today+12-m"
238    },
239    {
240      "topic": {
241        "mid": "/m/07k1x",
242        "title": "Tool",
243        "type": "Topic"
244      },
245      "value": 5,
246      "formattedValue": "5",
247      "hasData": true,
248      "link": "/trends/explore?q=/m/07k1x&date=today+12-m"
249    },
250    {
251      "topic": {
252        "mid": "/m/086nh",
253        "title": "Web page",
254        "type": "Topic"
255      },
256      "value": 5,
257      "formattedValue": "5",
258      "hasData": true,
259      "link": "/trends/explore?q=/m/086nh&date=today+12-m"
260    },
261{
262      "topic": {
263        "mid": "/m/0g57xn",
264        "title": "Sentiment analysis",
265        "type": "Field of study"
266      },
267      "value": 50,
268      "formattedValue": "+50%",
269      "link": "/trends/explore?q=/m/0g57xn&date=today+12-m"
270    }
271  ],
272  "relatedQueries_top": [
273    {
274      "query": "python scraping",
275      "value": 100,
276      "formattedValue": "100",
277      "hasData": true,
278      "link": "/trends/explore?q=python+scraping&date=today+12-m"
279    },
280    {
281      "query": "python",
282      "value": 96,
283      "formattedValue": "96",
284      "hasData": true,
285      "link": "/trends/explore?q=python&date=today+12-m"
286    },
287    {
288      "query": "web scraping python",
289      "value": 94,
290      "formattedValue": "94",
291      "hasData": true,
292      "link": "/trends/explore?q=web+scraping+python&date=today+12-m"
293    },
294    {
295      "query": "web data scraping",
296      "value": 39,
297      "formattedValue": "39",
298      "hasData": true,
299      "link": "/trends/explore?q=web+data+scraping&date=today+12-m"
300    },
301    {
302      "query": "data scraping",
303      "value": 38,
304      "formattedValue": "38",
305      "hasData": true,
306      "link": "/trends/explore?q=data+scraping&date=today+12-m"
307    },
308    {
309      "query": "web scraping in python",
310      "value": 18,
311      "formattedValue": "18",
312      "hasData": true,
313      "link": "/trends/explore?q=web+scraping+in+python&date=today+12-m"
314    },
315    {
316      "query": "what is web scraping",
317      "value": 17,
318      "formattedValue": "17",
319      "hasData": true,
320      "link": "/trends/explore?q=what+is+web+scraping&date=today+12-m"
321    },
322    {
323      "query": "selenium web scraping",
324      "value": 17,
325      "formattedValue": "17",
326      "hasData": true,
327      "link": "/trends/explore?q=selenium+web+scraping&date=today+12-m"
328    },
329    {
330      "query": "selenium",
331      "value": 16,
332      "formattedValue": "16",
333      "hasData": true,
334      "link": "/trends/explore?q=selenium&date=today+12-m"
335    },
336    {
337      "query": "web scraping google",
338      "value": 16,
339      "formattedValue": "16",
340      "hasData": true,
341      "link": "/trends/explore?q=web+scraping+google&date=today+12-m"
342    },
343    {
344      "query": "api",
345      "value": 16,
346      "formattedValue": "16",
347      "hasData": true,
348      "link": "/trends/explore?q=api&date=today+12-m"
349    },
350    {
351      "query": "website scraping",
352      "value": 16,
353      "formattedValue": "16",
354      "hasData": true,
355      "link": "/trends/explore?q=website+scraping&date=today+12-m"
356    },
357    {
358      "query": "web scraping api",
359      "value": 16,
360      "formattedValue": "16",
361      "hasData": true,
362      "link": "/trends/explore?q=web+scraping+api&date=today+12-m"
363    },
364    {
365      "query": "web scraping using python",
366      "value": 15,
367      "formattedValue": "15",
368      "hasData": true,
369      "link": "/trends/explore?q=web+scraping+using+python&date=today+12-m"
370    },
371    {
372      "query": "web scraping with python",
373      "value": 14,
374      "formattedValue": "14",
375      "hasData": true,
376      "link": "/trends/explore?q=web+scraping+with+python&date=today+12-m"
377    },
378    {
379      "query": "web scraping tools",
380      "value": 12,
381      "formattedValue": "12",
382      "hasData": true,
383      "link": "/trends/explore?q=web+scraping+tools&date=today+12-m"
384    },
385    {
386      "query": "beautifulsoup",
387      "value": 11,
388      "formattedValue": "11",
389      "hasData": true,
390      "link": "/trends/explore?q=beautifulsoup&date=today+12-m"
391    },
392    {
393      "query": "beautifulsoup web scraping",
394      "value": 11,
395      "formattedValue": "11",
396      "hasData": true,
397      "link": "/trends/explore?q=beautifulsoup+web+scraping&date=today+12-m"
398    },
399    {
400      "query": "web scraping free",
401      "value": 11,
402      "formattedValue": "11",
403      "hasData": true,
404      "link": "/trends/explore?q=web+scraping+free&date=today+12-m"
405    },
406    {
407      "query": "web scraper",
408      "value": 11,
409      "formattedValue": "11",
410      "hasData": true,
411      "link": "/trends/explore?q=web+scraper&date=today+12-m"
412    },
413    {
414      "query": "scraper",
415      "value": 11,
416      "formattedValue": "11",
417      "hasData": true,
418      "link": "/trends/explore?q=scraper&date=today+12-m"
419    },
420    {
421      "query": "scrape",
422      "value": 11,
423      "formattedValue": "11",
424      "hasData": true,
425      "link": "/trends/explore?q=scrape&date=today+12-m"
426    },
427    {
428      "query": "web scrape",
429      "value": 11,
430      "formattedValue": "11",
431      "hasData": true,
432      "link": "/trends/explore?q=web+scrape&date=today+12-m"
433    },
434    {
435      "query": "python selenium web scraping",
436      "value": 11,
437      "formattedValue": "11",
438      "hasData": true,
439      "link": "/trends/explore?q=python+selenium+web+scraping&date=today+12-m"
440    },
441    {
442      "query": "python selenium",
443      "value": 11,
444      "formattedValue": "11",
445      "hasData": true,
446      "link": "/trends/explore?q=python+selenium&date=today+12-m"
447    }
448  ],
449  "relatedQueries_rising": [
450    {
451      "query": "chatgpt web scraping",
452      "value": 4250,
453      "formattedValue": "+4,250%",
454      "link": "/trends/explore?q=chatgpt+web+scraping&date=today+12-m"
455    },
456    {
457      "query": "analisis data adalah",
458      "value": 1150,
459      "formattedValue": "+1,150%",
460      "link": "/trends/explore?q=analisis+data+adalah&date=today+12-m"
461    },
462    {
463      "query": "analisis data",
464      "value": 750,
465      "formattedValue": "+750%",
466      "link": "/trends/explore?q=analisis+data&date=today+12-m"
467    },
468{
469      "query": "playwright",
470      "value": 50,
471      "formattedValue": "+50%",
472      "link": "/trends/explore?q=playwright&date=today+12-m"
473    },
474    {
475      "query": "web scraping tool free",
476      "value": 50,
477      "formattedValue": "+50%",
478      "link": "/trends/explore?q=web+scraping+tool+free&date=today+12-m"
479    }
480  ],
481  "interestBy": [
482    {
483      "geoCode": "SH",
484      "geoName": "St. Helena",
485      "value": [
486        100
487      ],
488      "formattedValue": [
489        "100"
490      ],
491      "maxValueIndex": 0,
492      "hasData": [
493        true
494      ]
495    },
496    {
497      "geoCode": "TN",
498      "geoName": "Tunisia",
499      "value": [
500        60
501      ],
502      "formattedValue": [
503        "60"
504      ],
505      "maxValueIndex": 0,
506      "hasData": [
507        true
508      ]
509    },
510    {
511      "geoCode": "SG",
512      "geoName": "Singapore",
513      "value": [
514        56
515      ],
516      "formattedValue": [
517        "56"
518      ],
519      "maxValueIndex": 0,
520      "hasData": [
521        true
522      ]
523    },
524    {
525      "geoCode": "PK",
526      "geoName": "Pakistan",
527      "value": [
528        46
529      ],
530      "formattedValue": [
531        "46"
532      ],
533      "maxValueIndex": 0,
534      "hasData": [
535        true
536      ]
537    },
538{
539      "geoCode": "KM",
540      "geoName": "Comoros",
541      "value": [
542        0
543      ],
544      "formattedValue": [
545        ""
546      ],
547      "maxValueIndex": 0,
548      "hasData": [
549        false
550      ]
551    },
552    {
553      "geoCode": "IO",
554      "geoName": "British Indian Ocean Territory",
555      "value": [
556        0
557      ],
558      "formattedValue": [
559        ""
560      ],
561      "maxValueIndex": 0,
562      "hasData": [
563        false
564      ]
565    }
566  ]
567}]

📍 Want to try other Google scrapers?

Use the dedicated scrapers below if you want to scrape specific public data from Google services. Each of them is built particularly for the relevant scraping case be it Google places, images, Google trending searches or Google SERP data. Feel free to browse them:

🔍 Google Search Results Scraper👁 Google Lens Scraper
📍 Google Maps Scraper📩 Google Maps Email Extractor
📉 Google Trending Searches📰 Google News Scraper
⭐️Google Maps Reviews Scraper🤖 AI Text Analyzer for Google Reviews
💼 Google Jobs Scraper🎮 Google Play Scraper

❓FAQ

Google Trends does not offer an official API for public use. This means there isn't a dedicated Application Programming Interface provided by Google specifically for Google Trends data. But you can use scrapers and crawlers as a stand-in for a web scraping API, e.g. 📈📉Google Trends Scraper.

Yes, you can do so by using Apify API. It gives you programmatic access to the Apify platform. The API is organized around RESTful HTTP endpoints that enable you to manage, schedule, and run Apify Actors such as this one. The API also lets you access any datasets, monitor actor performance, fetch results, create and update versions, and more.

To access the API using Node.js, use the apify-client NPM package. To access the API using Python, use the apify-client PyPI package.

Check out the Apify API reference docs for full details or click on the API tab for code examples and API Endpoints.

Yes. Google Trends Scraper can be connected with almost any cloud service or web app thanks to integrations on the Apify platform. You can integrate with Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, LangChain and more.

Or you can use webhooks to carry out an action whenever an event occurs, e.g. get a notification whenever Google Trends Scraper successfully finishes a run.

Yes, by using Apify API. To access the Google Trends API using Python, use the apify-client PyPI package. You can find more details about the client in our Docs.

It is legal to scrape publicly available data from Google Trends. However, you should always review and comply with Google's terms of service and any applicable laws and regulations regarding web scraping. Additionally, be mindful of any rate limits or restrictions imposed by Google to avoid potential issues.

Not your cup of tea? Build your own scraper.

Google Trends Scraper doesn’t exactly do what you need? You can always build one of your own! We have various scraper templates in Python, JavaScript, and TypeScript to get you started. Alternatively, you can write it from scratch using our open-source library Crawlee. You can keep the scraper to yourself or make it public by adding it to Apify Store (and find users for it).

Your feedback

We’re always working on improving the performance of our Actors. So if you’ve got any technical feedback for Google Trends Scraper or simply found a bug, please create an issue on the Actor’s Issues tab in Apify Console.

Developer
Maintained by Apify

Actor Metrics

  • 105 monthly users

  • 38 stars

  • 99% runs succeeded

  • 5.5 hours response time

  • Created in Jan 2020

  • Modified 2 days ago