Google Trends Scraper - Fast API, No Browser
Pricing
$0.25 / 1,000 result rows
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.
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)
- Open the Actor in Apify Console and go to the Input tab.
- Enter keywords, a location code (
US, or empty for worldwide) and a time range, tick the sections you want, and click Start. - 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
| Field | What it does | Default |
|---|---|---|
keywords | Search terms, each fetched on its own unless compare is on | ["moissanite ring"] |
geo | Location code: empty = worldwide, US, GB, DE, US-CA, ... | US |
timeframe | now 1-H ... now 7-d, today 1-m, today 3-m, today 12-m, today 5-y, all, or 2025-01-01 2025-06-30 | today 12-m |
interestOverTime / interestByRegion / relatedQueries | Sections to fetch | true |
relatedTopics | Related topics, top + rising | false |
trendingNow | Today's trending searches for the location; works with no keywords | false |
compare | Up to five keywords per request, values relative to each other | false |
regionResolution | COUNTRY, REGION, CITY or DMA | REGION |
category | Category id (0 = all; 18 = Shopping, 12 = Business & Industrial, 45 = Health) | 0 |
property | "" (web), images, news, youtube, froogle (Google Shopping) | "" |
language / timezoneOffset | Label language (en-US, de, ...) / minutes behind UTC | en-US / 0 |
maxRetries | Fresh sessions to try when Google refuses (1-10) | 4 |
proxyConfiguration | Proxy settings | Apify 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"}]
| Field | Meaning |
|---|---|
value | 0-100 for time and region rows; top-list score or rising % for related rows |
formatted_value | As Google displays it, e.g. 100 or +550% |
is_partial | true while the period is still in progress |
has_data | false when Google marks the region as having no data |
link | Google 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 ApifyClientclient = 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 rows | Arithmetic | Cost |
|---|---|---|
| 1,000 | 1,000 x $0.00025 | $0.25 |
| 10,000 | 10,000 x $0.00025 | $2.50 |
| 100,000 | 100,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
compareis 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,regionResolutionswitches toCOUNTRY. - Trending now is per country: it reads the country part of
geo(US-CAreadsUS, empty readsUS) and ignorestimeframe,categoryandproperty. - 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.
Related Actors
| Actor | What it does |
|---|---|
| YouTube Transcript Scraper | Transcripts for a list of YouTube videos |
| YouTube Channel Transcripts | Every video of a channel or playlist, with transcript |
| YouTube Search Scraper | Keyword in, ranked YouTube video rows out |
| Google Play Reviews Scraper | Reviews of Android apps on Google Play |
| App Store Reviews Scraper | Reviews 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.