Reliable Google Trends API
Pricing
from $2.00 / 1,000 trend results
Reliable Google Trends API
Google Trends scraper & pytrends alternative without 429 errors: interest over time, by region, related & rising queries for up to 5 keywords; web, YouTube, News, Images, Shopping. Proxy rotation, retries, ok/partial/failed status. Failed & invalid queries free. MCP-ready.
Reliable Google Trends API: Google Trends Scraper & pytrends Alternative (No 429 Errors)
Reliable Google Trends API gets Google Trends data without the 429 errors: interest over time, interest by region, related queries and related topics for up to 5 compared keywords per query. It covers Web Search, YouTube, Google News, Images and Shopping. Use it as a drop-in pytrends alternative or a Google Trends scraper from Python, Node.js, cURL, n8n, Make or Zapier. Every query comes back with an explicit ok / partial / failed status, never a silent empty row, and failed queries are free.
What does Reliable Google Trends API do?
- Interest over time: 0–100 timeline for 1–5 keywords, for any timeframe (
now 7-d,today 12-m,today 5-y,all, or2024-01-01 2024-12-31). - Interest by region: country, region (state), metro (DMA) or city breakdown.
- Related queries: top and rising (breakout) searches for each keyword.
- Related topics: optional. Google often withholds these from automated sessions, so they're off by default, and the row is marked
partialif they're missing. - Comparisons and filters: geo (
US,GB,US-CA…), category, and property (web / youtube / news / images / froogle). - Bulk keywords: send hundreds of queries in one run. Each one is retried independently.
Why is it more reliable?
pytrends is archived and often fails with 429 Too Many Requests. This Actor handles that for you with:
- Cookie warmup and token refresh
- Rotating Apify Proxy sessions, with a new session after each block
- Per-widget retries with backoff
- Automatic residential-proxy fallback when datacenter IPs keep getting blocked
Measured results (34-query gate runs on the Apify platform, including repeated queries):
| Mode | Success | Platform cost per run |
|---|---|---|
| Datacenter proxy only | 34/34 (100%) | $0.0017 |
| Datacenter + residential fallback (default) | 34/34 (100%) | $0.0013 |
| Residential forced | 34/34 (100%) | ~$0.0067 |
Local testing also passed: 70 of 70 queries. Every run writes a RUN_SUMMARY record to the key-value store with the success rate and the counts of blocks and retries.
Pricing (pay per event)
- $0.02 per run start at the default 1 GB memory (Apify charges the start event per GB of memory)
- $0.002 per successful trend result. One result is one query with every section you asked for, covering up to 5 compared keywords. That works out to $2 per 1,000 queries.
- Failed queries cost $0.
You pay only for data you receive. Platform usage is included.
Quick start
Input:
{"searchTerms": ["coffee", "chatgpt, claude, gemini"],"geo": "US","timeframe": "today 12-m","property": "web","interestOverTime": true,"interestByRegion": true,"relatedQueries": true}
Each searchTerms entry is one query; separate keywords with commas to compare up to 5. To set different options for each query, use customQueries:
{ "customQueries": [ { "keywords": "bitcoin, ethereum", "geo": "GB", "timeframe": "today 5-y", "property": "news" } ] }
Output example
{"row_type": "result","status": "ok","keywords": ["coffee"],"query": { "geo": "", "timeframe": "today 12-m", "category": 0, "property": "web" },"interest_over_time": [{ "time": "2025-10-12T00:00:00+00:00", "values": { "coffee": 60 }, "is_partial": false }],"interest_by_region": [{ "geo_code": "SG", "geo_name": "Singapore", "values": { "coffee": 100 } }],"related_queries": {"coffee": {"top": [ { "query": "best coffee", "value": 100 } ],"rising": [ { "query": "...", "formatted_value": "+2,400%" } ]}},"errors": []}
You can export the data as JSON, CSV, Excel, XML or RSS, or pull it through the API.
API & integration examples
Python
from apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("eligible_fame/reliable-google-trends").call(run_input={"searchTerms": ["air fryer, instant pot"], "geo": "US", "timeframe": "today 5-y"})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["status"], row["keywords"], len(row.get("interest_over_time", [])))
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('eligible_fame/reliable-google-trends').call({ searchTerms: ['coffee'], geo: 'GB' });const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0].interest_over_time);
cURL (synchronous run that returns dataset items)
curl -X POST "https://api.apify.com/v2/acts/eligible_fame~reliable-google-trends/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchTerms":["coffee, tea"],"geo":"US","timeframe":"today 3-m"}'
No-code: use the Apify app in n8n, Make or Zapier: Run Actor, then Get dataset items. You can also schedule a daily run in Apify Schedules and use a webhook to send the results to Google Sheets, Slack or your database.
Use it from AI agents and MCP clients (Claude, Cursor, ChatGPT, n8n AI Agent)
Give an LLM agent fresh Google Trends data through Apify's MCP server (https://mcp.apify.com). The agent passes keywords, gets back the timeline, regions and rising queries as JSON, and can then reason over them: "is interest in 'air fryer' still growing in the UK?"
Add only this Actor as an MCP tool (Claude Desktop, Cursor, VS Code, Windsurf):
{"mcpServers": {"google-trends": { "url": "https://mcp.apify.com?tools=eligible_fame/reliable-google-trends" }}}
On first connection the client opens an Apify sign-in (OAuth). Alternatively add the header "Authorization": "Bearer <APIFY_TOKEN>". With the default server the agent can also find it with search-actors ("google trends") and run it via call-actor.
Prompt examples for an agent
- "Use reliable-google-trends to compare 'chatgpt, claude, gemini' worldwide over today 12-m and summarise who is gaining."
- "Get rising related queries for 'protein coffee' in US over now 7-d and suggest 5 blog titles."
Tips for agents
- One query = up to 5 comma-separated keywords. Values are relative (0–100) within that query.
- Switch off sections you don't need (
interestByRegion: false) for faster runs; the price per successful query stays the same. - Each row has
status(ok/partial/failed) and anerrorslist.failedrows anderrorrows are free. - Set
maxTotalChargeUsdin the MCPcallOptionsto cap spend. Pay-per-event pricing also supports Apify agentic payments (e.g. Skyfire).
Input validation (what you are and aren't charged for)
- Invalid queries (unknown timeframe like "last week", geo written out as "United States", an empty line, a non-object in
customQueries) produce a freerow_type: "error"row (status: "invalid") with codeINVALID_QUERYand a fix-it message. Valid queries in the same run still run. - If no query is usable, or every output section is switched off, the run stops with
INVALID_INPUTbefore any result is charged. - Common mistakes are fixed automatically:
searchTermssent as one text block, more than 5 terms (the first 5 are kept), numbers sent as strings,keywordsused instead ofsearchTerms.
Use cases
- SEO and content: find keyword seasonality and rising queries.
- E-commerce and dropshipping: validate products and compare demand across countries.
- Market research and investing: track brand demand and compare competitors.
- Data science: build time-series features for forecasting.
- AI agents: give an LLM fresh Trends data through the API or MCP.
FAQ
Is this an official Google Trends API? No. Google's official Trends API is in invite-only alpha. This Actor reads the same public data you see at trends.google.com.
Why are values 0–100 and not search volumes? Google Trends only publishes relative interest. 100 is the peak inside your query's time and geo window. Only compare keywords that were in the same query.
What happens when Google blocks a request? The Actor rotates to a new proxy session, refreshes tokens and retries. If retries keep failing, it falls back to residential proxies. If a query still fails, it's marked failed and you aren't charged.
Can I migrate from pytrends? Yes. build_payload + interest_over_time() becomes searchTerms + interestOverTime. The timeframe, geo and category (cat) values use the same format.
Does it use captcha solving? No. It only uses normal proxy rotation and retries.
Is scraping Google Trends legal? The Actor collects publicly available, aggregated, non-personal data. You're responsible for how you use it under Google's terms and the laws that apply to you.