Google Trends Scraper | Keyword Data API avatar

Google Trends Scraper | Keyword Data API

Pricing

from $0.25 / 1,000 results

Go to Apify Store
Google Trends Scraper | Keyword Data API

Google Trends Scraper | Keyword Data API

Export Google Trends timelines, regional interest, related queries and Trending Now results. Compare keywords with explicit value scales; download JSON or CSV. With comparison off, export large keyword lists (tested at 100), each keyword on its own scale; with it on, groups of up to 5 share a scale.

Pricing

from $0.25 / 1,000 results

Rating

0.0

(0)

Developer

Eli J

Eli J

Maintained by Community

Actor stats

0

Bookmarked

24

Total users

13

Monthly active users

2 days ago

Last modified

Share

What you can export

Use this Google Trends scraper and data API for bulk keyword research: export interest over time, interest by region and related queries for a list of keywords, or the Trending Now board for a country. Download the rows as JSON or CSV, or read them through the Apify API.

It is built for repeat batch jobs:

  • Large keyword lists in one run. With comparison off, each keyword gets its own 0–100 scale. A 100-keyword test run completed all 100 keywords.
  • Only the datasets you pick. You pay per result row, so leaving out a dataset leaves out its rows.
  • A cost ceiling. Set a maximum cost for the run and it stops once that cost is reached.
  • Incomplete output is reported. The run's SUMMARY record says whether every requested keyword and dataset was read.

Every row carries its dataType, and keyword rows carry a valueScale, so you can tell a 0–100 index from a search volume or a growth percentage.

Try it

The input form opens with two sample keywords, air fryer and espresso machine. Run it unchanged for a first look at all three keyword datasets, worldwide, over the past 12 months.

Or start from a published task:

Input

In keyword mode, only keywords is required (or a Trends URL in startUrls). In trending mode nothing is required; geo defaults to US.

FieldDefaultWhat it does
modekeywordskeywords (research) or trending (the Trending Now board).
keywords—Search terms, or Google Trends topic IDs such as /m/0k8z.
startUrls—Trends explore URLs; q, geo, date and cat are read from them. Keywords from several URLs are pooled; geo, date and category come from the first URL.
geoWorldwideUS, GB, DE, or a sub-region such as US-CA.
timeRangetoday 12-mA preset (now 1-d, today 3-m, today 5-y, all, …) or a custom range like 2024-01-01 2024-12-31.
dataTypesall threeinterest_over_time, interest_by_region, related_queries.
compareKeywordsfalseOne scale per keyword, or a shared scale (below).
includeKeywordInsightsfalseOpt-in add-on; see Keyword insights.
maxItems—Cap on result rows.
maxRunSeconds3600Stop starting new batches after this long. 0 disables.
proxyConfigurationApify Proxy onLeave it enabled.

Trending mode adds trendingHours (4, 24, 48 or 168), trendingCategories and trendStatus (all, active or ended). It ignores timeRange, dataTypes, category, searchType, compareKeywords, includeKeywordInsights, language, timezoneOffsetMinutes and maxRunSeconds. The Input tab describes the remaining fields: search type, category, language, retries, proxy rotation and timezone offset.

One scale per keyword, or a shared scale

With compareKeywords off, each keyword is fetched on its own and scored 0–100 against itself. You can pass any number of keywords. With it on, up to 5 keywords share one scale and are directly comparable; more than 5 are split into groups of 5, and keywords in different groups are not comparable to each other.

Output

One flat row per data point. Split the datasets by dataType.

Selected fields from an interest-over-time row of a September 25, 2026 run; values are a snapshot:

{
"keyword": "air fryer",
"dataType": "interest_over_time",
"date": "2025-09-21T00:00:00+00:00",
"dateLabel": "Sep 21, 2025",
"value": 53,
"valueScale": "index_0_100",
"hasData": true,
"geo": "Worldwide",
"timeRange": "today 12-m"
}
  • Interest by region rows carry geoCode, geoName, value and hasData. Regions where Google has no signal are still written (and billed) with hasData: false and value: 0, so the region list stays complete; filter on hasData to drop them.
  • Related queries rows carry rankType, query, value and link. TOP values are a 0–100 index; RISING values are growth percentages.
  • Trending Now rows carry term, searchVolume, growthPercent, isActive, categoryIds, breakdownQueries and trendsUrl.

Keyword-mode values are relative popularity, not search volumes. With comparison on, region values become each keyword's percentage share (comparison_share_percent). Only Trending Now's searchVolume is an absolute figure, and it is Google's bucketed lower bound; treat it and growthPercent as floors.

Keyword insights (add-on)

In keyword mode, turn on includeKeywordInsights to get one summary per keyword with at least four emitted interest_over_time points whose hasData is not false. Each summary includes latest and mean values, minimum and maximum values with their dates, slope, percentage change between the means of the first and last quarters of the emitted series, rising-query count and a coverage flag. It is computed from rows the run already delivered and makes no extra Google requests. Insights go to the KEYWORD_INSIGHTS key-value record, not the dataset.

Pricing

You pay per result row, plus Apify's Actor Start event. Prices depend on your Apify plan:

PlanPer result rowPer keyword insight (add-on)
Free$0.0015$0.01
Bronze$0.0008$0.0053
Silver$0.0004$0.0027
Gold, Platinum, Diamond$0.00025$0.0017

Actor Start is $0.00005 per event, charged once per GB of allocated memory (minimum one). The 100-keyword test run returned 5,300 rows: $7.95 at the Free rate or $1.325 at the Gold rate, plus the start event and, for that task, residential proxy traffic.

  • Maximum cost per run. Once the cost you set is reached, the run requests no more data, stores no more rows and ends normally; SUMMARY lists charge_limit under limits.
  • maxItems caps emitted rows, not upstream requests or the start charge. Selecting fewer datasets or a narrower range can reduce output; actual row counts depend on Google.
  • Not charged: a run that returns no rows adds no result charge, and SUMMARY and ERRORS add no result or event charge.
  • Keyword insight: charged once per insight written, only when includeKeywordInsights is on and the keyword has at least four emitted interest_over_time points whose hasData is not false. If the record write fails after the charge, ERRORS reports it as keywordInsightWrite.

Apify storage and dataset traffic can still incur charges under your plan.

Reliability and limits

A run writes a SUMMARY record to its key-value store. Its status is no_work when no work was selected and invalid_input for handled input rejection. Otherwise, it is complete when all requested work was processed with no failures, skips or observed row omissions, and incomplete otherwise. Completion does not prove Google supplied every possible data point. That status is separate from Apify's run status, so a SUCCEEDED run can still have incomplete output.

SUMMARY lists each work item's state (completed, failed or skipped; failures and skips include a reason) and reports rowsEmitted. rowsOmitted counts fetched rows withheld by maxItems or the run's maximum cost. limits names any limit reached (max_items, max_run_seconds or charge_limit). ERRORS lists the request failures the run handled; results from other work stay available.

When Google throttles requests, the run retries (maxRetriesPerRequest, default 8) and rotates proxy identities (rotateAfterRequests, default 24). In keyword mode, maxRunSeconds stops the run from starting new batches during a long outage.

SUMMARY and ERRORS can be missing after an abort, a timeout, an uncaught exception or a storage failure; a missing record does not mean the output is complete.

Limits:

  • The Related topics widget is not offered.
  • Long ranges return coarser buckets: 5 years is weekly, all is monthly. That is Google's own resolution.
  • Trending Now is country-level: a sub-region code is read as its country, with a warning in the log.
  • The Actor collects public, aggregated, non-personal statistics only.

FAQ

Paste the list into keywords and leave compareKeywords off, so each keyword is scored on its own scale. Pick only the dataTypes you need and set a maximum cost for the run. The 100-keyword task is a working setup.

Include related_queries in dataTypes and keep the rows whose rankType is RISING. Their value is a growth percentage (valueScale: "growth_percent"), not a 0–100 index.

Set compareKeywords: true. Up to 5 keywords are fetched together; interest-over-time rows carry valueScale: "comparison_index_0_100".

Set mode to trending and geo to a country code; trendingHours sets the window.

No. It is an independent Actor that reads public Google Trends data and returns it as rows you can download or fetch through the Apify API.

No. Interest-over-time and region values represent relative popularity, not search volumes. They use 0–100 indices except for comparison-mode region values, which are percentage shares. Related-query TOP values are 0–100 indices and RISING values are growth percentages; check valueScale before comparing numbers.

ActorWhat it exports
Kalshi Weather Markets | Price History APIHourly or daily price candles for Kalshi weather markets
UFCStats Scraper | Fight & Round StatisticsUFC fight and round statistics as flat rows
Tennis Abstract Scraper | Match History APIATP and WTA player match histories
Clutch Agency Scraper | B2B Directory ExportAgency listings from Clutch.co directories
Google Ads Transparency Scraper & ArchiveAdvertiser ad records from Google's Ads Transparency Center

Support

Found a bug or need a dataset that isn't here? Open an issue on the Actor's Issues tab and I'll take a look.