Google Keyword Trends avatar

Google Keyword Trends

Pricing

from $6.53 / 1,000 results

Go to Apify Store
Google Keyword Trends

Google Keyword Trends

Google Trends keyword data API: compare up to five keywords in one call and get 15 fields each — the interest timeline with the window and bucket size Google resolved, its own average interest, interest by geography, and top and rising related queries.

Pricing

from $6.53 / 1,000 results

Rating

0.0

(0)

Developer

AgentX

AgentX

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

0

Monthly active users

8 days ago

Last modified

Share

Google Keyword Trends is a Google Trends keyword data API that compares up to five terms on one classic Explore scale and returns an 18-field row for each publishable source term. The Dataset combines the resolved window, timeline, average interest, geographic interest, and top and rising related queries for SEO research, demand validation, launch timing, content planning, and market comparison.

Apify Users Apify Runs $0.00870 per keyword Compare 5 keywords API + MCP ready

  • Five keywords per request, scored against each other. Interest is normalized across the whole comparison, so 100 is the peak of the set — the numbers rank terms against one another instead of each one against its own history.
  • 18 fields per published keyword row, including the resolved window, timeline and geographic resolutions, average interest, regions, and related-query baseline.
  • 236 location options and 9 windows from the past hour to 2004-present, across 26 categories and 5 Google search surfaces.
  • Every interest measurement is Google's own. The Actor adds only the platform, processor, and processing-time provenance fields.

The smallest useful run is one keyword: one Actor Start plus one result, $0.01870 on the FREE tier. Billing is per published keyword row, so five published rows cost $0.05350.


Comparison-scaled interest, which is what makes the numbers decidable A single-keyword Google Trends reading normalizes against that keyword's own peak, so two separate readings cannot be compared. Putting up to five terms in one comparison places them on one 0-100 scale, which is the difference between "this term peaked in March" and "this term is a fifth the size of that one."

The resolved window, not the requested one Google restates the window, bucket size, geography, category and search surface in every response, and this Actor publishes what it restated. A Past 12 months row carries absolute date_start and date_end values with resolution: WEEK, so it remains interpretable without reconstructing when the run started.

Interest by geography at the right granularity Pick a country and the regions are its subregions with codes like US-WY. Pick Worldwide and they are countries with codes like CN. Rows Google marks as having no data are omitted rather than published as zeroes.

Top and rising related queries, with the breakout flag preserved Rising queries carry percentage growth — 13500 means +13500% — and is_breakout marks the terms Google labels "Breakout" instead of printing a number. Each related query also carries a link to its own Google Trends view.

Five independent search surfaces Web, Image, News, Shopping and YouTube are separate indexes with their own curves and their own related queries. A keyword can rank very differently between them, which is often the finding.


Quick Start Guide

Step 1: Configure your request

Open the Actor input and enter one to five keywords. Choose the location, time range, category and search type that match the question you are asking. All five inputs are required and all five are prefilled with a working example.

Step 2: Run the Actor

Click Start. Runtime depends on Google Trends availability and which panels need retries; the run status distinguishes returned, incomplete, source-empty, and temporarily unavailable keywords.

Step 3: Collect the results

Open the default Dataset, or call the Dataset API from your pipeline. A run produces up to one row per distinct keyword identity Google returns; source-empty terms are skipped and source-normalized duplicates are emitted once.


Input Parameters

The Actor takes five inputs, all required: one to five keywords, plus the geography, time window, category, and Google surface the measurement runs on.

ParameterTypeRequiredDescriptionExample
keywordsarrayYesOne to five keywords measured side by side. Interest is normalized across the comparison, so 100 is the peak of the whole set.["python", "javascript"]
locationstringYesOne of 236 schema values, including Worldwide. Interest is relative to total search volume in the selected geography, so separate locations are not comparable."United States"
time_rangestringYesThe research window. It also fixes the bucket size Google returns. One of nine values from Past hour to 2004 - present."Past 12 months"
categorystringYesOne of 26 Google Trends categories, so a term that means different things in different industries is measured in the one you care about."All Categories"
search_typestringYesWhich Google surface to measure: Web search, Image search, News search, Google Shopping or YouTube search."Web search"
{
"keywords": ["python", "javascript"],
"location": "United States",
"time_range": "Past 12 months",
"category": "All Categories",
"search_type": "Web search"
}

Time range and bucket size

The window you choose determines the bucket size Google returns; it is not separately selectable.

Time rangeResolutionPoints per series
Past hour, Past 4 hoursMINUTEPer-minute
Past dayEIGHT_MINUTEPer eight minutes
Past 7 daysHOUR169
Past 30 days, Past 90 daysDAYDaily
Past 12 monthsWEEK53
Past 5 years, 2004 - presentMONTH272 for the full archive

Output Data Schema

One Dataset row per publishable, distinct source keyword, with 18 fields.

Core fields

FieldTypeDescription
keywordstringThe search term this row measures, as Google echoed it back.
locationstringWhere the interest was measured, taken from the geography Google returns with the measurement. Values are only comparable within one geography.
categorystringThe Google Trends category the measurement was narrowed to.
search_typestringWhich Google surface was measured. Each is a separate index; values are not comparable across surfaces.
date_startstringFirst moment of the window Google actually resolved the request to. Sub-daily windows carry a time as well as a date.
date_endstringLast moment of the resolved window.
resolutionstringBucket size Google chose: MINUTE, EIGHT_MINUTE, HOUR, DAY, WEEK or MONTH.
geo_resolutionstringGeographic grain Google chose for regions: COUNTRY, REGION, or CITY.
rising_startstringStart of the previous source window used to calculate rising-query growth.
rising_endstringEnd of the previous source window used to calculate rising-query growth.
interest_averageintegerGoogle's own mean interest for this keyword across the window, on the same 0-100 scale. Google supplies it only for a comparison of two or more keywords, so a single-keyword run leaves it null rather than recomputing it.
platformstringSource platform label — Google Trends.
processorstringURL of the Actor that produced the row.
processed_atstringISO 8601 UTC timestamp recorded when the row was formatted.

Data fields

FieldTypeDescription
timelinearrayInterest over time, one entry per bucket with an ISO 8601 UTC timestamp and a 0-100 index value. The final entry carries is_partial while Google is still collecting that bucket, and an entry carries note where Google records a change to how it measured from that point on.
regionsarrayInterest by geography — name, Google's code, and the 0-100 index value. Entries Google marks as having no data are omitted.
queries_toparrayMost searched related queries, scored 0-100 against the top one, each with a link to its own Google Trends view.
queries_risingarrayFastest growing related queries. The value is percentage growth, so 13500 means +13500%; is_breakout marks the terms Google labels "Breakout" instead of printing that number.

An abbreviated example item — arrays are truncated here; a real Past 12 months run returns 53 timeline points:

{
"keyword": "python",
"location": "United States",
"category": "All Categories",
"search_type": "Web search",
"date_start": "2025-08-06",
"date_end": "2026-08-06",
"resolution": "WEEK",
"geo_resolution": "REGION",
"rising_start": "2024-08-06",
"rising_end": "2025-08-05",
"interest_average": 87,
"timeline": [
{ "time": "2025-08-10T00:00:00+00:00", "value": 82 },
{ "time": "2026-08-02T00:00:00+00:00", "value": 91, "is_partial": true }
],
"regions": [{ "name": "Wyoming", "code": "US-WY", "value": 100 }],
"queries_top": [
{
"query": "what is python",
"value": 100,
"url": "https://trends.google.com/trends/explore?q=what+is+python&date=today+12-m&geo=US"
}
],
"queries_rising": [
{
"query": "python tutorial",
"value": 13500,
"url": "https://trends.google.com/trends/explore?q=python+tutorial&date=today+12-m&geo=US",
"is_breakout": true
}
],
"platform": "Google Trends",
"processor": "https://apify.com/username/actor_name",
"processed_at": "2026-08-06T05:20:45+00:00"
}

Values Google does not supply stay empty rather than being filled in. A source no-data timeline bucket keeps its timestamp with value: null, while a measured value below one keeps value: 0 and value_text: "<1". A keyword with no publishable panel is skipped rather than billed as an empty row.

Export formats

  • JSON — the complete record with every field.
  • CSV — spreadsheet-compatible; timeline, regions, queries_top and queries_rising flatten, so expand them after export.
  • API — the Apify client SDKs and the Dataset REST API.

Integration Examples

Call agentx/google-keyword-trends from HTTP, Python, JavaScript, Make.com, n8n, or MCP — every example below uses the same two-keyword scenario.

Actor ID

M8PPOdVjaZKmpCxlC

Also addressable by name as agentx/google-keyword-trends — both forms work in the API, the SDKs, Make.com, and n8n.

HTTP

curl -X POST "https://api.apify.com/v2/acts/agentx~google-keyword-trends/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"keywords": ["python", "javascript"],
"location": "United States",
"time_range": "Past 12 months",
"category": "All Categories",
"search_type": "Web search"
}'

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("agentx/google-keyword-trends").call(run_input={
"keywords": ["python", "javascript"],
"location": "United States",
"time_range": "Past 12 months",
"category": "All Categories",
"search_type": "Web search",
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["keyword"], item["interest_average"], len(item["timeline"]))

JavaScript

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_API_TOKEN" });
const run = await client.actor("agentx/google-keyword-trends").call({
keywords: ["python", "javascript"],
location: "United States",
time_range: "Past 12 months",
category: "All Categories",
search_type: "Web search",
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => console.log(item.keyword, item.interest_average));

Make.com

  1. Add the module Run an Actor.
  2. Turn Map on, to the right of the Actor field.
  3. Paste the Actor ID M8PPOdVjaZKmpCxlC into the Actor field.
  4. Click ⟳ Refresh to the left of Map.
  5. Edit Input JSON with keywords, location, time_range, category, and search_type.
  6. Set Run synchronously to Yes.
  7. Add Get Dataset Items and select defaultDatasetId.

n8n

  1. Add Run an Actor and get dataset from the Apify node.
  2. Set ActorBy ID and paste M8PPOdVjaZKmpCxlC.
  3. Edit Input JSON with keywords, location, time_range, category, and search_type.

MCP

{
"mcpServers": {
"apify": {
"command": "npx",
"args": [
"-y",
"@apify/actors-mcp-server",
"--actors",
"agentx/google-keyword-trends"
],
"env": { "APIFY_TOKEN": "YOUR_TOKEN" }
}
}
}

Pricing

One keyword row costs $0.00870 on the FREE tier, plus a $0.01000 Actor Start per run — so the smallest useful run is $0.01870.

EventBilling unitFREEBRONZESILVERGOLD / PLATINUM / DIAMOND
ResultOne keyword row$0.00870$0.00783$0.00696$0.00653
Actor StartOne per GB of memory, minimum one$0.01000$0.01000$0.01000$0.01000

The Actor runs at 256 MB, so every run bills exactly one Actor Start.

  • One keyword: $0.01000 + $0.00870 = $0.01870
  • Five published keyword rows: $0.01000 + 5 × $0.00870 = $0.05350

Putting five keywords in one comparison is both cheaper and more useful than five separate runs: separate runs each pay their own Actor Start, and their interest values are normalized independently.

Prices can change; the pricing page is authoritative.


Use Cases

Keyword prioritization for SEO Put five candidate head terms in one comparison and read interest_average. The relative sizes tell you which cluster deserves the content budget; queries_top gives you the subtopics to cover inside it.

Demand validation before a launch Run the product term and its two closest substitutes over Past 5 years at MONTH resolution. A term whose timeline decays while its substitutes rise is a positioning answer, not a marketing one.

Seasonality and launch timing Past 5 years at monthly resolution shows the repeating shape; Past 12 months at weekly resolution shows this year against it. The note entries mark the points where Google changed how it measured, so you know not to read a step change as a market change.

Geographic rollout planning Run the term Worldwide to rank countries, then re-run inside the winning country to rank its subregions. Two runs, because values from different geographies are not comparable in a single reading.

Cross-surface intent research The same keyword on Web search and YouTube search returns two different curves and two different related-query sets. Where they disagree is usually where the content format should change.

Rising-query monitoring Schedule a Past 30 days run and watch queries_rising for is_breakout entries. Those are the terms Google could not express as a percentage because the growth was too large.


Alternatives

Reading trends.google.com by hand. For one keyword and one question, the web interface is fine and free. It stops working when you need the numbers in a pipeline, when you need many comparisons, or when you need the resolved window recorded alongside the values.

Google's own Trends API. Google's Trends API alpha provides consistently scaled data that can be joined across requests and compared across dozens of terms. Access is application-gated. This Actor reads the public classic Explore experience instead, so it accepts five terms and preserves the 0-100 scale within each comparison. If cross-request comparability is required and you have alpha access, use Google's API.

Broader search-data platforms. SEO suites bundle Trends-like signals with volume, difficulty and backlink data. They cost more and are billed by seat or subscription. Choose one if you need the whole suite; choose this if you need Trends data per row, in a pipeline, at a per-row price.

Choose something else if you need absolute search volumes (Google Trends publishes an index, never counts), if you need more than five terms on one scale, or if you need values that are comparable across separate requests.


Limits and Troubleshooting

  • A keyword returns no row. Google returns nothing at all for terms with too little search volume in the chosen geography, window and category. Widen the window, broaden the geography, or check the spelling. No row is published rather than billing for an empty answer.
  • interest_average is null. Google supplies the average only for comparisons of two or more keywords. Add a second keyword and it appears for both.
  • Two runs disagree about the same keyword. They will, if the comparison set differed. 100 is the peak of the set, not of the keyword — a term next to a much larger one scores lower than the same term measured alone. Keep the comparison set fixed when you want a series you can track.
  • The last timeline point is lower than expected. Check is_partial. Google flags the final bucket while it is still collecting it.
  • A long series has a visible step. Check the note entries. Google records where it changed geographical assignment or data collection; the series is not directly comparable across those points.
  • regions is shorter than the number of subregions. Entries Google marks as having no data are omitted. A published 0 is a real measurement; a missing region is one Google did not measure.

Report a problem through Issues with the run ID and the exact input.


Trust and Reliability

  • Runs on Apify cloud infrastructure with managed execution, storage, scheduling and run history.
  • Pay per keyword row, not per seat and not per month.
  • A documented Dataset contract — all 18 Dataset fields are declared in the Actor's dataset schema and visible in the Store's output preview.
  • Source values only — no locally computed average, rank or score is written into a row where it would look like one of Google's own figures.

Data rights and usage. Google Keyword Trends collects publicly accessible search-interest data made available through Google Trends interfaces. You are responsible for ensuring your use of exported data complies with applicable law, contractual obligations, and your own data-governance policy.

Privacy. The Actor does not collect private account data, personal profiles, or private user records. Rows contain aggregated keyword-interest signals and collection metadata. If you have GDPR or CCPA obligations, review how you combine this data with other sources.

Platform terms. Review Google's terms and the Apify platform terms before using collected data in production systems.


Frequently Asked Questions

Put all the keywords in one comparison — up to five — rather than running them separately. Terms compared together share one 0-100 scale; terms measured in separate runs do not.

Yes — this Actor is one. The timeline field is the interest-over-time series, one entry per bucket, with an ISO 8601 UTC timestamp and a 0-100 index value, plus the resolution and the absolute date_start/date_end Google resolved the request to.

Are the values actual search volumes?

No. Google Trends publishes a relative index, never a count — values are normalized to the time and location of the query, per Google's own documentation on Trends data. 100 is the peak of the comparison you sent, and every other value is a proportion of it.

Why can't I compare two runs against each other?

Because each request is normalized on its own. Different comparison sets, geographies, windows or search surfaces produce values that share a scale name but not a scale. Keep all four fixed if you want a series you can track over time.

What is the difference between queries_top and queries_rising?

queries_top is ranked by how much they are searched, scored 0-100 against the most searched one. queries_rising is ranked by growth, and its value is a percentage — 13500 means +13500%. Terms Google labels "Breakout" carry is_breakout: true.

Can I get worldwide data?

Yes. Set location to Worldwide. The regions field then returns countries with codes like CN instead of a single country's subregions.

How much does one test cost?

$0.01870 on the FREE tier: one Actor Start at $0.01000, plus one keyword row at $0.00870.

Not an open one. Google's Trends API alpha is gated behind an application. This Actor reads the public classic Explore experience and is pay-per-result rather than subscription-priced; the smallest run costs $0.01870, and Result events are charged only for rows saved to the Dataset.

How fresh is the data?

Freshness follows the selected window and Google's returned buckets. Recent windows can include a final timeline entry with is_partial: true while Google is still collecting that bucket; older windows return the historical interval Google resolved.

Can I schedule runs to monitor keywords over time?

Yes. Use Apify Schedules to run the Actor on a fixed cadence with the same input, and keep the comparison set, geography, window, and search type identical between runs so the values stay on one scale. Watching queries_rising for is_breakout entries on a monthly Past 30 days run is the cheapest early-warning setup.


AgentX publishes 77 Actors — the three closest to this one first, then the full catalog by category.

Closest to this Actor:

Business and Market Intelligence

Jobs and Hiring

Social Media

Video, Transcripts and Downloads

E-Commerce and Retail

Classifieds and Automotive

Real Estate


Support and Community

Ask about fields, runs, or billing in the AgentX community on Telegram; for a reproducible bug, open an Issue with the run ID and the exact input.

AgentX is an Arcyton brand — arcyton.com.

Last Updated: August 11, 2026