Google Trends Scraper — Reliable, Cheap, No Blocks
Pricing
from $1.50 / 1,000 trend results
Google Trends Scraper — Reliable, Cheap, No Blocks
Google Trends Scraper that actually finishes: interest over time, interest by region, related queries and topics for up to 5 compared terms, plus the trending-now feed. Automatic proxy fallback and retry on rate limits. Pay per result, no subscription.
Pull Google Trends data as clean JSON: interest over time, interest by region, related queries, related topics and the trending now feed. Built around one goal: runs that actually finish. Google rate-limits Trends aggressively (HTTP 429); this Actor warms up a cookie session, paces requests, retries on fresh IPs and automatically climbs from datacenter to residential proxies when needed.
You pay per trend record saved, with compute and proxy included. See How much does it cost below.
What you get
| Output | Record contains |
|---|---|
timeline | ISO date, label, value (0-100), isPartial for every point, plus the average |
byRegion | geoCode, geoName, value for each country / state / city / metro |
relatedQueries | query, value, formattedValue, type (top or rising) |
relatedTopics | topic, topicType, value, formattedValue, type (top or rising) — only returned when Google serves them (see FAQ) |
trendingNow | search term, approximate traffic, publish time, headlines |
One record = one search term x one output. Empty outputs are skipped and never billed.
Who it is for
- SEO and content teams checking seasonality and rising queries before planning articles or campaigns.
- E-commerce and product managers comparing demand for products, brands or features across countries and states.
- Analysts and investors who want Google search interest as a time series next to sales, prices or other signals.
- Newsrooms and social media teams watching what is trending right now in several countries.
- Developers and AI agents that need Trends data as JSON without maintaining their own anti-429 logic.
Key features
- Explore mode for any list of terms: interest over time, interest by region, related queries and related topics.
- Compare mode (
compareTerms: true): terms are grouped in batches of up to 5 and share one 0-100 scale, exactly like Google's compare view. With it off, each term gets its own scale. - Any geography: worldwide, a country (
US,DE,BR) or a sub-region (US-CA,GB-ENG). Region detail can be country, region/state, city or US metro area (regionResolution). - Any period: past hour, 4 hours, day, 7 days, 30 days, 90 days, 12 months, 5 years, since 2004, or custom dates.
- Five Google properties: web, news, images, YouTube and Google Shopping search.
- Trending now for one or several countries, with approximate traffic and related news headlines.
- Built for reliability: cookie warm-up per session, jittered pacing, retries per widget and per group, and an automatic datacenter → residential proxy ladder that stays on the rung that works.
- Clear failures: invalid input (bad geo, missing custom dates) fails immediately with a readable message, and a run that collects nothing fails instead of returning silent empties. A
SUMMARYrecord in the key-value store lists empty outputs skipped, the proxy rung used and any failed groups.
Input
{"searchTerms": ["bitcoin", "ethereum"],"compareTerms": false,"geo": "US","timeRange": "today 12-m","property": "web","outputs": ["timeline", "byRegion", "relatedQueries"],"maxItems": 50}
- searchTerms - any number of terms. With
compareTerms: truethey are grouped in batches of 5 and share one 0-100 scale; otherwise each term is analysed on its own. - geo -
US,DE,BR... or a sub-region such asUS-CA; empty = worldwide. - timeRange -
now 1-H,now 4-H,now 1-d,now 7-d,today 1-m,today 3-m,today 12-m,today 5-y,all, orcustomwithdateFrom/dateTo(YYYY-MM-DD). - category - Google Trends category id (0 = all).
- property -
web,news,images,youtube,shopping. - language - interface language (
en-US,es,de...); affects labels and the language of related queries. - regionResolution -
AUTO,COUNTRY,REGION,CITYorDMA(US metro areas). - mode -
exploreortrendingNow(settrendingGeos, e.g.["US","GB"]). - maxItems - stop after this many records (term x output).
- maxConcurrency - parallel request groups (1-5, default 2). Keep it low for reliability.
- proxyConfiguration - default is Apify datacenter with automatic RESIDENTIAL fallback.
More input examples
Compare two products over 12 months on one scale (the "Compare search interest over 12 months" example task):
{"mode": "explore","searchTerms": ["electric car", "hybrid car"],"compareTerms": true,"timeRange": "today 12-m","outputs": ["timeline", "byRegion", "relatedQueries"]}
Interest by state in Brazil over the last 90 days:
{"mode": "explore","searchTerms": ["futebol"],"geo": "BR","timeRange": "today 3-m","regionResolution": "REGION","outputs": ["timeline", "byRegion", "relatedQueries"]}
What the US and UK are searching right now:
{ "mode": "trendingNow", "trendingGeos": ["US", "GB"], "maxItems": 50 }
Output example
{"type": "timeline","searchTerm": "bitcoin","geo": "WORLDWIDE","timeRange": "today 12-m","property": "web","averageValue": 43.1,"points": [{ "date": "2025-10-12T00:00:00.000Z", "label": "Oct 12 – 18, 2025", "value": 62, "isPartial": false }]}
{"type": "relatedQueries","searchTerm": "bitcoin","related": [{ "type": "top", "query": "bitcoin price", "value": 100, "formattedValue": "100" },{ "type": "rising", "query": "bitcoin etf", "value": 250, "formattedValue": "+250%" }]}
Output fields
| Field | In record types | Description |
|---|---|---|
id | all | Stable key: type, term, geo, time range, property and category. |
type | all | timeline, byRegion, relatedQueries, relatedTopics or trendingNow. |
searchTerm | all | The term (or the trending search). |
comparedWith | explore | Other terms in the same compare group, or null. |
geo | all | Country / region code, or WORLDWIDE. |
timeRange, category, property | explore | The settings used for the request. |
averageValue | timeline | Average of the complete (non-partial) points. |
points | timeline | date, label, value (0-100), isPartial. |
regionLevel | byRegion | Requested region detail. |
regions | byRegion | geoCode, geoName, value, sorted from highest; regions with no data are left out. |
related | relatedQueries / relatedTopics | Top and rising entries with value and formattedValue (e.g. +250%, Breakout). |
rank | trendingNow | Position in the country's feed. |
approxTraffic, approxTrafficMin | trendingNow | Google's traffic label (e.g. 200K+) and its numeric lower bound. |
publishedAt | trendingNow | When the trend was published. |
newsItems | trendingNow | Related headlines: title, url, source. |
pictureUrl | trendingNow | Image Google shows for the trend. |
scrapedAt | all | When the record was collected. |
How much does it cost to scrape Google Trends?
| Event | When it is charged |
|---|---|
trend-result | One term x one output, or one trending search |
| Actor start | Once per run (a fraction of a cent) |
From 30 October 2026, 1,000 trend records cost US$4 on the Apify Free plan; paid Apify plans pay less per record — see the Pricing tab for your plan's rate. Compute and residential proxy are included in the event price, and empty outputs are never billed.
Example: 10 terms x 3 outputs (timeline, byRegion, relatedQueries) = at most 30 records.
FAQ
Why does it stay reliable? Cookie warm-up per session, jittered pacing, widget-level retries, whole-group retries on a fresh session and IP, and an automatic datacenter -> residential ladder that remembers the rung that works. If Google still refuses, the run fails with a clear message instead of returning silent empties.
Why are related topics sometimes missing? Google currently returns empty topic lists to automated clients for many queries. Those outputs are skipped and not billed. Related queries are unaffected.
Are values absolute search counts? No. Google Trends gives relative interest (0-100); that is how the source works.
Trending now size? Google's public feed lists about 10 current searches per country; use several trendingGeos.
Can I compare more than 5 terms on one scale? Google compares at most 5 terms per request. With compareTerms: true the actor makes groups of 5; values are comparable inside each group but not across groups. A common trick is to include one anchor term in every group.
Why do my numbers differ slightly from the Google Trends website? Google samples searches, so the same query can return slightly different values on different days or from different sessions. The most recent point is often marked isPartial: true because the period is not complete yet.
How do I get daily data for a whole year? Google picks the granularity from the period: daily up to about 9 months, weekly for 12 months and 5 years, monthly for longer ranges. For daily points over a year, run several custom date ranges.
Can I run it every day? Yes. Save your input as a task and schedule it; each run produces a fresh dataset you can append to a spreadsheet or database through an integration.
Use cases
SEO and keyword research, seasonality analysis, content planning, market and product research, news monitoring, regional demand comparison.
Is it legal to scrape Google Trends?
Google Trends shows aggregated, anonymised search interest to any visitor, and this actor only collects what is publicly visible on Google Trends without logging in. It does not collect data about individual users. Trending-now records can include news headlines and links, which belong to their publishers. You are responsible for using the data lawfully, including data-protection laws such as the EU GDPR, Chile's Ley 21.719 or the California CCPA if you combine it with personal data, and for respecting Google's terms of service. This is general information, not legal advice.
Integrations
Call the Google Trends Scraper through the Apify API or the JavaScript and Python clients, react to finished runs with webhooks, or schedule it in Apify Console for daily or weekly snapshots. It connects to n8n, Make and Zapier, and to LangChain and LlamaIndex through their Apify integrations. AI agents in Claude, ChatGPT, Cursor and other MCP clients can find and run it through Apify's MCP server. Export results as JSON, CSV or Excel, or read them from the dataset API.
Use with AI agents
Use this actor when you need Google Trends data: relative search interest over time or by region, related and rising queries for one or more terms, or what a country is searching right now.
{ "searchTerms": ["solar panels"], "geo": "US", "timeRange": "today 12-m", "outputs": ["timeline", "relatedQueries"] }
Main output fields: type, searchTerm, geo, points (date, value 0-100), averageValue, regions, related (top and rising queries), and for trending searches rank, approxTraffic, newsItems. It is pay-per-event: an agent pays a small start fee plus a fixed price per record saved, not for compute time.
Related actors
- Google News Scraper — the articles behind a spike in search interest.
- YouTube Scraper — videos and channels for a trending topic.
- Google Maps Scraper — businesses in the places where interest is highest.
- Google Ads Transparency Scraper — which advertisers are bidding on a topic.
Ready-made examples
- Trending searches in the US right now
- Compare search interest over 12 months
- Search interest by state in Brazil
Changelog
- 2026-10-16 — README expanded: more input examples, output field table, FAQ, legal notes, integrations and example tasks.
- 2026-10-15 — Build 0.1.4: README included in the build; published on the Apify Store. Tiered pricing announced, effective 2026-10-30 (lower per-record price on paid Apify plans).
- 2026-10-13 — Builds 0.1.1–0.1.3: initial release (explore and trending-now modes); more retries per widget and per group after a failed compare test; default memory 512 MB.
En español
Extrae datos de Google Trends en JSON: interés en el tiempo, por región, consultas y temas relacionados y tendencias del momento. Reintentos automáticos, calentamiento de cookies y cambio automático de proxy datacenter a residencial para evitar bloqueos 429. Se cobra por registro guardado; el precio vigente para tu plan está en la pestaña Pricing.