Google Trends Scraper - Fast API, No Browser avatar

Google Trends Scraper - Fast API, No Browser

Pricing

$0.25 / 1,000 result rows

Go to Apify Store
Google Trends Scraper - Fast API, No Browser

Google Trends Scraper - Fast API, No Browser

Interest over time, interest by region, related queries and topics, and trending searches from Google Trends. HTTP-only, answers in seconds, charges only for rows delivered.

Pricing

$0.25 / 1,000 result rows

Rating

0.0

(0)

Developer

Lee Kung

Lee Kung

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

5 hours ago

Last modified

Categories

Share

Google Trends Scraper API - no browser, pay per row

Get Google Trends data as JSON, CSV or Excel without a Google API key: interest over time, interest by region, related queries (top + rising), related topics and trending searches. Give it keywords, a location and a time range; it returns one row per data point in a single dataset. It talks to Google Trends over plain HTTP, with no headless browser. For SEO and content planners, market researchers, analysts and AI agents.

  • One keyword, 138 rows. The default input ("moissanite ring", US, last 12 months) returned 53 weekly time points, 51 regions and 34 related queries in Apify run Q3mTG5iMIlGdqlCAq (2026-10-02 UTC), which finished about 11 seconds after it started.
  • Reliability, measured on our own runs: 196 of 201 runs in the last 30 days succeeded (our account's run history, read 2026-10-02). The 5 failures were on 2026-09-12 to 09-14, before a refused section was made to skip instead of failing the run. These are our own test and monitoring runs, not customer runs.
  • A refused section does not sink the run: it is skipped and the other sections are still delivered.
  • Pay per row delivered: $0.00025 per row ($0.25 per 1,000). A run that delivers nothing costs nothing.

What data you get

Every row has a type column with one of five values:

  • interest_over_time - per time point per keyword: date, period, timestamp (Unix seconds), value (0-100), is_partial.
  • interest_by_region - per region per keyword: geo_code, geo_name, value (0-100), resolution, has_data.
  • related_queries - query, rank_type (top / rising), value, formatted_value, link.
  • related_topics - topic_title, topic_type, topic_mid (Knowledge Graph id), rank_type, value, formatted_value, link.
  • trending_now - today's trending searches for a country, from the Google Trends RSS feed: query, approx_traffic, published, picture, news (title, url, source).

Keyword rows also carry keyword, geo and timeframe.

Use cases

  • SEO and content calendars: see when interest in a topic peaks and publish ahead of it.
  • Keyword discovery: pull rising related queries and their growth figures to find long-tail terms.
  • Product demand checks: read the 12-month or 5-year curve before you stock or build a product.
  • Market entry: rank states, countries, cities or US metro areas (DMA) by relative interest.
  • Brand comparison: Compare mode puts up to five terms on one scale.

How to use it (quick start)

  1. Open the Actor in Apify Console and go to the Input tab.
  2. Enter keywords, a location code (US, or empty for worldwide) and a time range, tick the sections you want, and click Start.
  3. When the run finishes, open the Dataset tab and export JSON, CSV or Excel.

For Python, JavaScript or cURL, see Use it from code.

Input

FieldWhat it doesDefault
keywordsSearch terms, each fetched on its own unless compare is on["moissanite ring"]
geoLocation code: empty = worldwide, US, GB, DE, US-CA, ...US
timeframenow 1-H ... now 7-d, today 1-m, today 3-m, today 12-m, today 5-y, all, or 2025-01-01 2025-06-30today 12-m
interestOverTime / interestByRegion / relatedQueriesSections to fetchtrue
relatedTopicsRelated topics, top + risingfalse
trendingNowToday's trending searches for the location; works with no keywordsfalse
compareUp to five keywords per request, values relative to each otherfalse
regionResolutionCOUNTRY, REGION, CITY or DMAREGION
categoryCategory id (0 = all; 18 = Shopping, 12 = Business & Industrial, 45 = Health)0
property"" (web), images, news, youtube, froogle (Google Shopping)""
language / timezoneOffsetLabel language (en-US, de, ...) / minutes behind UTCen-US / 0
maxRetriesFresh sessions to try when Google refuses (1-10)4
proxyConfigurationProxy settingsApify residential

Compare three brands worldwide over five years, by country:

{ "keywords": ["notion", "obsidian", "evernote"], "geo": "", "timeframe": "today 5-y", "compare": true, "regionResolution": "COUNTRY", "relatedQueries": false }

YouTube search interest by city in California, with related topics:

{ "keywords": ["air fryer recipes"], "geo": "US-CA", "timeframe": "today 3-m", "property": "youtube", "regionResolution": "CITY", "relatedTopics": true }

Only today's trending searches in Great Britain:

{ "keywords": [], "geo": "GB", "trendingNow": true }

Output

Real rows from run Q3mTG5iMIlGdqlCAq (default input), one of each type it returned:

[
{"type": "interest_over_time", "keyword": "moissanite ring", "geo": "US", "timeframe": "today 12-m",
"date": "Sep 28, 2025", "period": "Sep 28 – Oct 4, 2025", "timestamp": 1759017600, "value": 10, "is_partial": false},
{"type": "interest_by_region", "keyword": "moissanite ring", "geo": "US", "timeframe": "today 12-m",
"resolution": "REGION", "geo_code": "US-WY", "geo_name": "Wyoming", "value": 100, "has_data": true},
{"type": "related_queries", "keyword": "moissanite ring", "geo": "US", "timeframe": "today 12-m",
"rank_type": "rising", "value": 550, "formatted_value": "+550%", "query": "black moissanite ring",
"link": "https://trends.google.com/trends/explore?q=black+moissanite+ring&date=today+12-m&geo=US"}
]
FieldMeaning
value0-100 for time and region rows; top-list score or rising % for related rows
formatted_valueAs Google displays it, e.g. 100 or +550%
is_partialtrue while the period is still in progress
has_datafalse when Google marks the region as having no data
linkGoogle Trends page for that related query or topic

Each run also saves a SUMMARY record (key-value store): rows delivered, seconds, whether the spending limit was hit, and any sections skipped.

Use it with AI agents (MCP)

Add Apify's hosted MCP server with this Actor as a tool. URL: https://mcp.apify.com?tools=actors,docs,leekung125/google-trends-scraper, header Authorization: Bearer <YOUR_APIFY_TOKEN>:

{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=actors,docs,leekung125/google-trends-scraper", "headers": {"Authorization": "Bearer YOUR_APIFY_TOKEN"}}}}

Browser sign-in also works without a token (docs.apify.com/platform/integrations/mcp). Example prompt: "Compare 'matcha' and 'cold brew' on Google Trends in the US over 5 years. Which months peak?"

Use it from code

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("leekung125/google-trends-scraper").call(
run_input={"keywords": ["moissanite ring"], "geo": "US", "timeframe": "today 12-m"})
rows = client.dataset(run.default_dataset_id).list_items().items

JavaScript (npm i apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('leekung125/google-trends-scraper').call({
keywords: ['moissanite ring'], geo: 'US', timeframe: 'today 12-m',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

cURL:

curl -X POST "https://api.apify.com/v2/acts/leekung125~google-trends-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keywords": ["moissanite ring"], "geo": "US", "timeframe": "today 12-m"}'

Schedules, webhooks and integrations (Make, Zapier, n8n, Google Sheets) work as for any Apify Actor.

Pricing

$0.00025 per result row (the "Result row" event), i.e. $0.25 per 1,000 rows. You pay only that event price: no start fee and no separate compute charge on this Actor.

Billable rowsArithmeticCost
1,0001,000 x $0.00025$0.25
10,00010,000 x $0.00025$2.50
100,000100,000 x $0.00025$25.00

The default one-keyword run above delivered 138 rows and was charged for 138: 138 x $0.00025 = $0.0345.

Never charged: refused or skipped sections, keywords with no related data, and runs that deliver no rows. A row is charged as it is added to your dataset. With a spending limit set, the Actor delivers rows up to the limit, then stops cleanly.

Limits and honesty notes

  • Relative values, not search volumes. Google Trends scores interest 0-100 within each request; the Actor returns Google's numbers and does not estimate volumes.
  • Keywords are scaled separately unless compare is on. Compare mode holds five keywords per request; with more, they are split into groups of five, comparable only within a group.
  • Low-volume keywords may return no related queries or topics (zero rows, zero cost).
  • Skipped sections. Google Trends rate-limits heavily, especially datacenter IPs, so residential proxies are the default. If Google rate-limits a section, or it keeps returning server errors (tried 3 times), that section is skipped, the rest is delivered, and the skip is logged and listed in SUMMARY.
  • Fails loudly, never loops. If Google refuses the request or every section, the Actor retries with fresh sessions up to maxRetries (default 4, max 10), then fails with an error. Zero rows because sections were refused is a failed run, not a silent empty success.
  • Delivered rows stay delivered. If a later keyword fails, earlier keywords' rows are already in the dataset (and charged).
  • Worldwide breaks down by country only: with an empty geo, regionResolution switches to COUNTRY.
  • Trending now is per country: it reads the country part of geo (US-CA reads US, empty reads US) and ignores timeframe, category and property.
  • The latest time point is often partial (is_partial: true) and can still change.
  • Public Google Trends data only. No Google login, no personal data.

FAQ

Do I need a Google API key? No Google API key and no Google account. You do need an Apify account (and an API token to call it from code).

Is it legal to scrape Google Trends? It reads public, aggregated Google Trends data. You are responsible for lawful use and for following Google's terms. It collects no personal data, and we resell none.

Can I export to CSV or Excel? Yes, from the run's Dataset tab, or through the API.

Can I run it on a schedule? Yes, with an Apify schedule (for example weekly).

Can I use it from an AI agent / MCP? Yes, through Apify's hosted MCP server (see above).

Why did I get fewer rows than I expected? Low-volume keywords get fewer related rows, a section was skipped after a rate limit (see the log or SUMMARY), or your spending limit was hit.

What happens when Google rate-limits the run? A refused section is skipped and the rest delivered. If the whole request is refused, the Actor retries with fresh sessions up to maxRetries times, then fails with an error.

What is charged? Only rows added to your dataset, at $0.00025 each.

ActorWhat it does
YouTube Transcript ScraperTranscripts for a list of YouTube videos
YouTube Channel TranscriptsEvery video of a channel or playlist, with transcript
YouTube Search ScraperKeyword in, ranked YouTube video rows out
Google Play Reviews ScraperReviews of Android apps on Google Play
App Store Reviews ScraperReviews of apps on the Apple App Store

Support

Open an issue on the Issues tab with the run ID and your input; we read every issue.