Google Trends Scraper avatar

Google Trends Scraper

Pricing

from $2.80 / 1,000 search term results

Go to Apify Store
Google Trends Scraper

Google Trends Scraper

Get Google Trends interest over time, interest by region and related queries for any list of keywords. Compare more than 5 terms on one 0-100 scale with an anchor term. Smart retries on rate limits; failed terms are never charged.

Pricing

from $2.80 / 1,000 search term results

Rating

0.0

(0)

Developer

Cairnware

Cairnware

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 days ago

Last modified

Share

Get Google Trends data for any list of keywords: interest over time, interest by region, related queries (top and rising) and related topics. Every search term becomes one clean row in your dataset, ready for JSON, CSV, Excel, Google Sheets or the Apify API.

Built for runs you do not have to babysit:

  • Smart retries. Google Trends rate-limits busy IP addresses (HTTP 429). Each failed request is retried with exponential backoff and jitter, on a fresh residential IP every time.
  • No silent failures. Every term you enter appears in the output. If a term still fails after all retries, you get a row with status: "error" and the reason, and you are not charged for it. The run itself still finishes, with a summary such as "9 of 10 results delivered; 1 failed after retries and was not charged".
  • Clean output. One row per term (or per comparison group), with dates in ISO format and a link to the same chart on trends.google.com.
  • Compare more than 5 terms. Give an anchor term and every term lands on one 0-100 scale, even 50 of them (see below). The combined row is free.
  • Respects your budget. The Actor stops scraping when your maximum cost per run is reached and lists the remaining terms as free, unscraped rows.

What data you get

SectionWhat it containsDefault
Interest over timeRelative interest 0-100 per week / day / hour, with a flag for the current, incomplete periodOn
Interest by regionRelative interest 0-100 per country, state/province, US metro (DMA) or cityOn
Related queriesTop and rising searches related to the term ("Breakout" included)On
Related topicsTop and rising topics (entities) related to the term. Google currently returns these for few searches (see Limitations)Off

Use cases

  • SEO and content planning: spot rising queries before they peak and plan content around seasonality.
  • E-commerce and inventory: see when demand for a product starts climbing each year, and where.
  • Market and brand research: compare 5 brands or products on one scale by region, or any number of them over time with an anchor term.
  • Dashboards and data pipelines: schedule daily or weekly runs and send results to Google Sheets, BigQuery, Make, n8n or Zapier with Apify integrations.
  • Research and journalism: pull consistent time series of public interest in a topic.

How to use

  1. Enter one or more search terms, or paste the link of a chart you made on trends.google.com (Explore page): its terms, location, time range, category and search type are taken over.
  2. Pick a location (for example US, GB, US-CA, or leave empty for worldwide) and a time range.
  3. Click Start. Download the results as JSON, CSV, Excel or HTML, or read them through the Apify API.

Want the terms on one shared scale, like typing coffee, tea on trends.google.com? Turn on Compare terms together (up to 5 terms per comparison).

Compare more than 5 terms on one scale (anchor term)

Google Trends compares at most 5 terms at once, and each chart is scaled so its own peak is 100. So tea in one chart and milk in another can't be compared directly. Fill in Anchor term with one term that is about as popular as yours (for drinks, coffee):

  1. The anchor is added to every comparison group of 4 terms.
  2. Each group is rescaled by how big the anchor is in it, so all groups share the first group's scale.
  3. The result is scaled so the overall peak is 100 again.

You get the usual one row per group, plus one extra row, combined: ..., with the interest over time of every term on one 0-100 scale (one decimal). That row is free. Ratios between terms are kept exactly: in our test run (US, past 90 days, tea, juice, soda, water, milk, anchor coffee) milk was 0.438 times coffee in its own chart and 0.438 times coffee in the combined row.

Choose the anchor well. If it is tiny next to a group's terms (it peaks below 10 in that group), Google's whole-number rounding makes the rescaling coarse, and the combined row gets a "Low precision" warning. If it is 0 in a group, that group is left out with a warning. The combined row covers interest over time only: regional values in comparisons are shares of each region, so they can't be rescaled this way.

{ "searchTerms": ["tea", "juice", "soda", "water", "milk"], "anchorTerm": "coffee", "geo": "US", "timeRange": "today 3-m" }

Input example

{
"searchTerms": ["coffee", "matcha", "cold brew"],
"geo": "US",
"timeRange": "today 12-m",
"category": 0,
"property": "",
"compareTogether": false,
"includeInterestOverTime": true,
"includeInterestByRegion": true,
"regionResolution": "AUTO",
"includeRelatedQueries": true,
"includeRelatedTopics": false,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
FieldNotes
searchTermsRequired. Duplicates and empty lines are removed.
geo2-letter country (US), region (US-CA, GB-ENG) or US metro (US-CA-807). Empty = worldwide.
timeRangenow 1-H, now 4-H, now 1-d, now 7-d, today 1-m, today 3-m, today 12-m, today 5-y, all (2004 to now).
customTimeRangeOptional exact period, "2024-01-01 2024-12-31". Overrides timeRange.
categoryGoogle Trends category ID, 0 = all. Useful to separate meanings, for example apple in Food & Drink (71).
property"" web search, news, images, youtube or froogle (Google Shopping).
compareTogetherPut terms on one chart (max 5 per group; longer lists are split into groups of 5).
anchorTermOptional. Compare any number of terms on one scale: groups of 4 + the anchor, plus a free combined row (see above). Turns on compareTogether.
regionResolutionAUTO, COUNTRY, REGION, DMA (US only) or CITY.
maxRetriesRetries per request before a term is marked error (default 8).
maxConcurrencyTerms scraped in parallel (default 3).

Output example

Real output for coffee, US, past 12 months, collected on 2026-10-03 (arrays shortened; the full row has 53 weekly points, 51 regions and 25 top + 25 rising queries):

{
"searchTerm": "coffee",
"searchTerms": [
"coffee"
],
"status": "ok",
"geo": "US",
"timeRange": "today 12-m",
"category": 0,
"property": "",
"interestOverTime": [
{
"date": "2025-09-28",
"timestamp": 1759017600,
"value": 64,
"isPartial": false,
"formattedTime": "Sep 28 – Oct 4, 2025"
},
{
"date": "2025-10-05",
"timestamp": 1759622400,
"value": 57,
"isPartial": false,
"formattedTime": "Oct 5 – 11, 2025"
},
{
"date": "2026-09-27",
"timestamp": 1790467200,
"value": 63,
"isPartial": true,
"formattedTime": "Sep 27 – Oct 3, 2026"
}
],
"interestByRegion": [
{
"geoCode": "US-WY",
"geoName": "Wyoming",
"value": 100
},
{
"geoCode": "US-HI",
"geoName": "Hawaii",
"value": 46
},
{
"geoCode": "US-DC",
"geoName": "District of Columbia",
"value": 41
}
],
"regionResolution": "REGION",
"relatedQueries": {
"top": [
{
"query": "coffee near me",
"value": 100,
"link": "https://trends.google.com/trends/explore?q=coffee+near+me&date=today+12-m&geo=US"
},
{
"query": "coffee table",
"value": 84,
"link": "https://trends.google.com/trends/explore?q=coffee+table&date=today+12-m&geo=US"
}
],
"rising": [
{
"query": "pet care tips",
"value": 5300,
"formattedValue": "Breakout",
"link": "https://trends.google.com/trends/explore?q=pet+care+tips&date=today+12-m&geo=US"
},
{
"query": "how to remove coffee stain from carpet",
"value": 5000,
"formattedValue": "+5,000%",
"link": "https://trends.google.com/trends/explore?q=how+to+remove+coffee+stain+from+carpet&date=today+12-m&geo=US"
}
]
},
"relatedTopics": null,
"warnings": [],
"errorMessage": null,
"trendsUrl": "https://trends.google.com/trends/explore?date=today%2012-m&q=coffee&geo=US",
"scrapedAt": "2026-10-03T08:06:41Z"
}

For comparison rows (compareTogether: true), searchTerm is "coffee vs tea", each time point and region has values (term → number) instead of value, and each related query or topic has a searchTerm field. Real example: {"date": "2025-09-28", "values": {"coffee": 64, "tea": 30}, ...}. In comparison rows, region values are each term's share of that region, so they add up to 100 (for example Wyoming: coffee 70, tea 30).

The status field

StatusMeaningCharged?
okData delivered.Yes
no_dataGoogle Trends has too little search volume for this term, location and period (it shows "Hmm, your search doesn't have enough data" on the website).Yes
errorThe term failed after all retries, or was not scraped because your maximum cost per run was reached. errorMessage says which.No

A section is null when you did not request it, and an empty list when Google returned nothing for it.

Pricing

$4 per 1,000 search terms ($0.004 per result). No start fee. Failed terms are free.

  • You pay once per delivered row with status ok or no_data.
  • A comparison group of up to 5 terms is one row, so it costs the same as one term.
  • With an anchor term, 20 terms = 5 groups = 5 paid rows ($0.02), and the combined row is free.
  • Residential proxy traffic is included in the price.
  • Set a maximum cost per run in the run options; the Actor never goes over it.

Example: 250 keywords every week ≈ 1,000 results a month ≈ $4.

FAQ

Why do I see "HTTP 429" in the log? Google Trends limits how many requests one IP address can make. A 429 means "too many requests from this IP". The Actor waits a short, randomised time and retries on a new residential IP, up to maxRetries times. Seeing some 429 retries in the log is normal; you are only affected if a term still fails after all retries, in which case it is returned as a free error row.

Why is a residential proxy the default? Google rate-limits datacenter IP ranges much more aggressively. Residential IPs, with a new IP on every retry, are what keeps the failure rate low. You can switch to a datacenter proxy or your own proxy URLs in Proxy configuration, but expect more retries and errors.

Are the numbers search volumes? No. Like the Google Trends website, values are relative, from 0 to 100. 100 is the peak popularity of the term within the chosen location and period; 50 means half as popular. Values from different runs are not on the same scale. To compare terms on one scale, use Compare terms together.

How do I compare more than 5 keywords in Google Trends? Use an anchor term: one keyword that appears in every group of 5 links the groups together. Fill in Anchor term and the Actor does the grouping and the math, and returns one combined row with all your terms on one 0-100 scale. By hand you would download one CSV per group from trends.google.com, divide each group by its anchor column and multiply by the anchor from the first group. For a one-off, our free Google Trends comparison page does that math in your browser for CSVs you already downloaded.

Why can the numbers differ slightly from the website or from an earlier run? Google Trends computes values from a sample of searches, so values can shift by a few points between requests or days. The most recent period is often incomplete; those points have isPartial: true.

What time zone are the dates in? UTC. Daily and weekly data use YYYY-MM-DD (the start of the period); hourly and minute data use full timestamps like 2026-10-03T14:00:00Z. Each point also has a Unix timestamp and Google's own formattedTime label.

Can I schedule it or call it from code? Yes. Use Apify Schedules for recurring runs, and the API tab of this Actor for ready-made examples in Python, JavaScript and cURL. Integrations exist for Google Sheets, Make, n8n, Zapier and webhooks.

Limitations

  • Values are relative (0-100), not absolute search volumes. Google does not publish absolute numbers in Trends.
  • Google compares at most 5 terms at once. Values are only comparable within one comparison group, except in the combined row of an anchor-term run (interest over time only).
  • Very rare terms return no_data; related queries are often empty for small terms or small regions.
  • Related topics: in our October 2026 tests Google returned an empty related-topics list even for "coffee" in the US, and does not offer them at all in comparisons. The option is kept for searches where Google still provides them; when it does not, the row gets a warning and the result costs the same as without topics.
  • The time granularity is chosen by Google: typically minutes for the past hours, hourly for 7 days, daily up to 90 days, weekly up to 5 years, monthly for 2004 to now.
  • "Trending now" / daily trending searches are not included; this Actor looks up the terms you provide.
  • The Actor uses the same public endpoints as the Google Trends website. If Google changes them, results may break until the Actor is updated. Please report it and we will fix it.
  • It reads only aggregated, anonymous statistics that Google Trends shows publicly; it does not collect personal data. You are responsible for using the data in line with Google's terms and the laws that apply to you.

Support

Questions, bugs or feature requests: open an issue on the Issues tab or email hello@cairnware.com. Please include the run ID if something went wrong. Support replies may be AI-assisted.

Made by Cairnware, small tools that keep working.