Google Trends Scraper
Under maintenancePricing
$1.00 / 1,000 results
Google Trends Scraper
Under maintenanceCollect current trending searches with volume, growth, related queries, and location. Explore keyword history, regional interest, and related searches when the public Explore endpoint is available.
Pricing
$1.00 / 1,000 results
Rating
0.0
(0)
Developer
MLG Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape Google Trends current searches into structured records containing search volume, growth, start time, location, and related phrases. Export Google Trends data to JSON, CSV, or a spreadsheet for monitoring search demand; keyword history and regional comparisons are also supported when the public Explore endpoint responds.
The default run collects current searches for one country. Supplying search terms or an Explore link switches the run to keyword research. The two modes return different record types, so check recordType before combining results from separate runs. Current searches are the verified collection path; Explore requests are currently subject to a rate limit that may prevent historical results from being collected.
What data can you extract from Google Trends?
The current-search mode emits one record for each search appearing on the public trending page. The Explore mode emits one record per search term, with arrays of observations and related items when the endpoint is available. The table lists every output field; a blank field means it does not apply to that record type or was absent in the source response.
| Field | Description | Example |
|---|---|---|
recordType | Identifies the output shape. | trending |
inputUrlOrTerm | Original query, URL, or current search name. | coffee |
searchTerm | Search phrase associated with the record. | coffee |
geoCode | Country or geographic code used in the request. | US |
startedAt | UTC start time of a current trend. | 2026-09-26T20:00:00+00:00 |
searchVolume | Approximate current-search volume shown by the source. | 100000 |
growthPercent | Approximate percentage increase for a current search. | 1000 |
relatedQueries | Phrases grouped with a current search. | ["penn state football"] |
categoryIds | Numeric category identifiers supplied with a current search. | [17] |
exploreUrl | Link to inspect a term with the selected location. | https://trends.google.com/trends/explore?q=coffee&geo=US |
timeRange | Time window used for a historical Explore request. | today 12-m |
categoryId | Category filter used for Explore. | 0 |
interestOverTime_timelineData | Dated normalized interest observations. | [{"time":"...","value":[42]}] |
interestOverTime_averages | Average normalized interest for the term. | [42] |
interestBy | Geographic interest observations at country level. | [{"geoCode":"US","value":[42]}] |
interestBySubregion | Geographic interest observations for regions. | [{"geoCode":"US-CA","value":[42]}] |
interestByCity | Geographic interest observations for cities. | [{"geoName":"Seattle","value":[42]}] |
relatedTopics_top | Top related topics from Explore. | [{"topic":{"title":"Coffee"}}] |
relatedTopics_rising | Rising related topics from Explore. | [{"topic":{"title":"Coffee"}}] |
relatedQueries_top | Top related search phrases from Explore. | [{"query":"coffee beans"}] |
relatedQueries_rising | Rising related search phrases from Explore. | [{"query":"cold brew"}] |
Current-search volume is a rounded estimate, not an exact count. Growth is a percentage estimate associated with the source's current trend window. Historical interest values are normalized to a scale within the requested comparison; 100 indicates the peak for that comparison, not a number of searches. Compare values only when the terms, location, date range, category, and search property are aligned. The page may omit fields where there is too little data.
How to scrape Google Trends
- Leave the input empty to collect current trending searches in the default country. Set
geoto another country code to change the location. - Set
maxItemsto control how many records are delivered. The default is 100, and0removes the cap. - To request historical keyword interest, enter one or more
searchTermsor paste a Trends Explore link intostartUrls. Choose a time range, country, and optional category. - Start the run and inspect its log and dataset. If Explore is rate limited, the run reports an error instead of returning an empty success.
- Download the dataset as JSON or CSV, or use the dataset link in a scheduled workflow.
For a first run, use current searches. It is a live snapshot that can change throughout the day. Schedule it at a consistent interval if you want to compare successive snapshots. Use the timestamp, country, and search term together when deduplicating records across runs, because the same phrase can become active again later.
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | auto | auto selects Explore when terms or URLs are present, otherwise current trends. Choose trending or explore explicitly to override. |
searchTerms | string array | empty | Explore keywords, or text filters for current searches when mode is trending. |
startUrls | URL array | empty | Explore links containing q; their country, dates, category, and search property take precedence. |
geo | string | US | Two-letter country code. |
timeRange | string | today 12-m | Predefined historical window for Explore. |
customTimeRange | string | empty | Historical range in YYYY-MM-DD YYYY-MM-DD form; takes precedence over timeRange. |
category | integer | 0 | Explore category identifier; 0 means all categories. |
maxItems | integer | 100 | Maximum records across the run; 0 removes the cap. |
proxyConfiguration | object | enabled | Proxy settings for public page and endpoint requests. |
A reliable current-search input is:
{"mode": "trending","geo": "US","maxItems": 50}
To filter the current list, set mode to trending and supply phrases in searchTerms. Matching is case insensitive and searches within each trend name. A filter can return fewer than the requested maximum, including zero when no active trend matches. In that case, the run fails with a clear message instead of producing a blank dataset. Filtering does not search historical Trends data.
An Explore input for one term is:
{"mode": "explore","searchTerms": ["coffee"],"geo": "US","timeRange": "today 12-m","category": 0,"maxItems": 1}
Explore accepts at most five terms in a single comparison. If you supply more than five terms, the actor divides them into groups of five. Values from different groups have separate normalization and should not be compared as if they came from one chart. An Explore URL can set a custom query and filters. When URLs are supplied, the actor processes those URLs instead of the separate searchTerms list. The country code on a URL takes precedence over the input country.
Output example
This is a shortened record from a successful current-search run that returned 50 records. The source grouped more related phrases with this search; the array below is trimmed for readability.
{"recordType": "trending","inputUrlOrTerm": "wisconsin vs penn state","searchTerm": "wisconsin vs penn state","geoCode": "US","startedAt": "2026-09-26T20:00:00+00:00","searchVolume": 100000,"growthPercent": 1000,"relatedQueries": ["wisconsin vs penn state","penn state football","wisconsin football","penn state score"],"categoryIds": [17],"exploreUrl": "https://trends.google.com/trends/explore?q=wisconsin+vs+penn+state&geo=US"}
The data is a snapshot. The first record and its figures may change between runs. A result's startedAt time refers to the reported start of the trend, not the time the actor ran. The dataset does not add a collection timestamp, so retain the run time from your scheduler if you need a precise audit trail. Values are delivered as numbers to make filtering and aggregation easier; format them for display in your downstream application.
Use cases
- Editorial planning: Watch current searches in a target country and decide which topics need timely coverage. Use
relatedQueriesto see the phrases grouped with the main search rather than making a decision from the headline alone. - Demand monitoring: Capture regular snapshots and flag searches whose estimated volume or growth crosses your team's threshold. Keep the country code in every alert so an increase in one market is not mistaken for a global increase.
- Regional research: When Explore is available, request a term by country and inspect interest by country, subregion, or city. The arrays reflect normalized interest, so pair them with other evidence before estimating market size.
- Seasonal analysis: Request the same term over several time windows and examine the time series. A one-month chart and a five-year chart can answer different questions; record the chosen window alongside each result.
- Search phrase discovery: Inspect top and rising related queries and topics from an Explore result. Treat rising percentages as signals for investigation, especially when the underlying search base may be small.
- Market watchlists: Run current searches for several countries on separate schedules and consolidate the records using
searchTerm,geoCode, andstartedAt. This avoids treating repeated snapshots as distinct events.
How much does it cost to scrape Google Trends?
The configured result price is $1.00 per 1,000 delivered dataset records, or $0.001 per record. A run capped at 50 records therefore has a result charge of $0.05. A run delivering 500 records has a result charge of $0.50, and 5,000 delivered records would cost $5.00 in result charges. The platform may also display usage charges according to your account and run settings; check the run's billing summary for the final amount.
The number of source requests is different from the number of delivered records. Current-search mode fetches one trending page and can extract hundreds of records from it, but charges follow delivered dataset records. Explore mode may need multiple endpoint requests for a term's time series, geography, and related items while delivering one summary record per term. Set maxItems before large scheduled runs if you need a strict result cap. A blocked Explore request delivers no record and should not be interpreted as a zero-interest result.
Tips for best results
Choose trending explicitly when you want to filter the current list with searchTerms. With auto, supplying a term selects Explore keyword history. Use uppercase two-letter country codes to make run inputs easy to compare. Current-search availability differs by country and time, so small countries or narrow text filters may produce few matches. Start with a broad country and no filter when validating a schedule.
For historical research, use one to five terms per comparison. A term's interest values are normalized within the comparison and time period; adding or removing a comparison term may change the scale. If you need stable comparisons over time, preserve the complete input, including terms, country, date range, category, and property. Use customTimeRange for a fixed calendar interval so an automated run does not silently shift its window every day.
When an Explore request fails with a rate limit, retry after a longer interval. Repeating requests immediately can extend the block. Current-search mode uses a different page and may still work while Explore is unavailable. The actor reports failures directly and does not substitute current trends for a historical query. If your workflow requires history, verify one small Explore run before scheduling a large batch.
For recurring current-trend snapshots, choose a collection interval that matches your business question. Hourly runs can catch short-lived searches; daily runs produce fewer records and a simpler history. Deduplicate overlapping snapshots downstream. Related queries can be numerous, so store them as an array or expand them into a separate table after export. Do not interpret a related query's position in the array as a measured rank unless your own analysis establishes one.
Limits
Explore pages and their JSON endpoints returned rate-limit responses during source discovery, including with residential network routing. The current-search page responded and passed an on-platform run of 50 records. Historical time series, geographic interest, and related topics are implemented from the public Explore widget structure, but they have not passed a live golden run. Treat those fields as unavailable until the endpoint responds again and a live run verifies them. The current-search mode is the dependable option at present.
The public current-search page is a moving window, not a complete archive. It returned several hundred structured entries for a large country during testing, but the count and ordering are not fixed. The page can change its embedded data format without notice. Approximate volume and growth should be used for prioritization, not as audited counts. Some trends have no meaningful category or related phrase, and a country can expose fewer records than another.
Explore produces one record per term, even though one record can contain many time points or regions. maxItems caps records, not observations inside an array. The current-search mode produces one record per active search. If you combine the two modes in one storage, use recordType to select the appropriate fields. Explore comparisons are limited to five terms at a time by the service interface; larger term lists are split into separate comparisons.
Use with automated clients
A client with access to the actor input and dataset can request a live snapshot using: “Collect 100 current searches in the US and return the 20 with the greatest reported growth, including related phrases.” Another useful instruction is: “Collect current searches in GB every morning and compare the new records with yesterday's snapshot by search term and start time.” These examples use the verified current-search mode. A client requesting a historical chart should check the run status before interpreting a missing result.
Describe the intended country, mode, and maximum in a request so the client can form a predictable input. The output schema lists all possible fields, while recordType tells the client which are relevant to each record. If a downstream system requires only scalar columns, expand arrays such as relatedQueries or the Explore time series after reading the dataset. Keep the original record so the relationship between a term and its observations is not lost.
FAQ
Is it legal to use this data?
The actor reads public Trends information. Check the site's terms and the rules that apply in your jurisdiction before using or redistributing data. The dataset does not require an account and does not seek private information. Avoid using trend signals to infer sensitive facts about individuals or small groups.
Do I need a proxy?
The actor uses the configured proxy by default. Current-search collection passed using the standard configuration. Explore requests were rate limited during testing even after a different routing group was tried. Changing routing is not a guarantee that historical results will become available.
How fast is a run?
The 50-record current-search golden run finished in about nine seconds after startup. Actual duration depends on page response time, the number of records pushed, and platform queueing. Explore mode can take longer because it requests several data widgets per comparison.
Can I schedule and monitor runs?
Yes. Schedule the actor at a chosen interval and inspect each run's status, log, and dataset. For current trends, store the run time alongside exported records so you can tell when each snapshot was taken. Alert on failed runs instead of treating them as days with no search activity.
Can I export to a spreadsheet?
Yes. Download the dataset as CSV or use its dataset endpoint in a spreadsheet import or data pipeline. Current-search records have straightforward scalar fields plus two arrays. Expand relatedQueries and categoryIds if the destination expects one value per cell.
What does an empty field mean?
A field may belong to the other mode, may not be supplied for a particular search, or may be empty because the source has insufficient data. A failed Explore run means the endpoint was unavailable; it does not mean the term had zero interest. Use the run status and recordType before interpreting missing values.
Can I compare search volume across countries?
Current-search searchVolume is an approximate count shown for each active trend. Explore interest uses a normalized scale rather than raw search counts. Do not mix the two measures. For comparable Explore charts, keep the same terms and filters and interpret the normalization within each comparison.
Integrations
Use the dataset endpoint to feed a reporting workflow, a webhook to react to completed runs, or a scheduler to collect regular snapshots. Export JSON for applications that preserve arrays and CSV for tabular review. A separate processing step can expand related phrases and historical observations into their own tables. Store the input and run status with each export so analysts can reproduce filters and distinguish valid empty results from endpoint errors.
Support
Open an issue on the Issues tab; we reply within 24h and add fields on request. Include the mode, country, time range, run status, and a short description of the missing field or unexpected result. For Explore rate limits, include the response status from the run log and avoid posting private account information.