Google Trends API & Scraper - No 429 Errors avatar

Google Trends API & Scraper - No 429 Errors

Pricing

$3.00 / 1,000 search term results

Go to Apify Store
Google Trends API & Scraper - No 429 Errors

Google Trends API & Scraper - No 429 Errors

Google Trends API: interest over time, interest by region (country/state/city/DMA) and top + rising related queries for any keyword. Compare up to 5 terms. Reliable pytrends alternative with automatic retries on 429. $0.003 per term, pay only for results. Works via API and MCP.

Pricing

$3.00 / 1,000 search term results

Rating

0.0

(0)

Developer

Signalmine

Signalmine

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

2

Monthly active users

17 days ago

Last modified

Share

Google Trends API & Scraper — reliable, no 429 errors

Google Trends Scraper is a pay-per-result API that returns Google Trends data for any keyword: interest over time, interest by region (country, state, city, metro/DMA) and related queries (top and rising, including Breakout terms). Compare up to 5 keywords in one request, choose any location, time range, category or search type (web, images, news, Google Shopping, YouTube), and get clean JSON, CSV or Excel.

In short

  • What it is: a Google Trends API alternative to pytrends and to fragile DIY scripts, which keep failing with 429 Too Many Requests.
  • Best for: SEO and content research, product and market demand validation, seasonality analysis, brand comparison, data pipelines and AI agents.
  • Reliability: every search term runs in its own warmed-up session and is retried automatically on a fresh session and IP if Google rate-limits it. In our tests on the Apify platform (September 2026), 100 of 100 search terms succeeded, with zero retries needed, in 59 seconds.
  • Price: $0.003 per search term that returns data. Failed terms are never charged.
  • Works with AI agents: callable via REST API, Python and JavaScript clients, and as an MCP tool in Claude, Cursor, VS Code and other MCP clients.

What data does it return?

SectionFields
Interest over timetimestamp, date, 0–100 interest per keyword, partial-data flag, period averages
Interest by regionregion code and name, 0–100 interest per keyword, sorted from highest to lowest
Related queriestop and rising queries with value, +X% growth or Breakout, and a Google Trends link
Request contextkeywords, location, time range, category, search type and timestamp

How to use it

1. In Apify Console (no code)

Enter your keywords, pick a location and time range, and click Start. Download the results as JSON, CSV, Excel or HTML.

2. Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("signalmine/google-trends-scraper").call(run_input={
"searchTerms": ["chatgpt", "claude ai", "gemini"],
"compareTerms": True,
"geo": "US",
"timeRange": "past_12_months",
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["searchTerm"], item["averages"])

3. JavaScript / Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('signalmine/google-trends-scraper').call({
searchTerms: ['air fryer', 'rice cooker'],
geo: 'GB',
timeRange: 'past_5_years',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

4. REST API (one call, results in the response)

curl -X POST "https://api.apify.com/v2/acts/signalmine~google-trends-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchTerms": ["bitcoin"], "geo": "US", "timeRange": "past_90_days"}'

5. AI agents via MCP (Claude, Cursor, VS Code)

Add the Apify MCP server with this Actor as a tool:

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

Then ask your assistant things like "Compare Google search interest for Notion, Obsidian and Evernote in the US over the last 5 years" or "Which US states search most for pickleball, and what related queries are rising?"

Migrating from pytrends

If you already have pytrends code, each call maps to an input field or an output section of this Actor:

pytrendsThis Actor
build_payload(kw_list=[...])searchTerms (+ compareTerms: true to keep up to 5 terms on the same 0–100 scale)
build_payload(geo="US-CA")geo
build_payload(cat=71)category
build_payload(gprop="youtube")searchProperty (images, news, froogle, youtube)
timeframe="today 3-m"timeRange: "past_90_days" (today 12-m → past_12_months, today 5-y → past_5_years, now 7-d → past_7_days, all → all_time)
timeframe="2024-01-01 2024-06-30"customStartDate: "2024-01-01", customEndDate: "2024-06-30"
interest_over_time()interestOverTime
interest_by_region(resolution="CITY")interestByRegion with regionResolution: "CITY"
related_queries()relatedQueries (top and rising)
related_topics()Not available (see FAQ)

One run can hold hundreds of keywords: you send the whole list once instead of looping with sleep() between requests.

Input

FieldDescription
searchTermsKeywords, e.g. ["chatgpt", "claude ai"]
compareTermstrue groups terms in batches of 5 so values are relative to each other
geoLocation code: US, GB, DE, US-CA, AU-NSW… Empty = worldwide
timeRangepast_hour, past_4_hours, past_day, past_7_days, past_30_days, past_90_days, past_12_months, past_5_years, all_time
customStartDate / customEndDateOptional YYYY-MM-DD range; overrides timeRange
categoryGoogle Trends category ID (0 = all categories)
searchProperty"" web, images, news, froogle (Google Shopping), youtube
includeInterestOverTime / includeInterestByRegion / includeRelatedQueriesToggle each section
regionResolutionCOUNTRY, REGION, CITY, DMA
languageInterface language for dates and labels, e.g. en-US, es-ES

Output example

A real result (trimmed) for bitcoin, ethereum and solana, compared in the US over the past 90 days:

{
"searchTerm": "bitcoin vs ethereum vs solana",
"searchTerms": ["bitcoin", "ethereum", "solana"],
"geo": "US",
"timeRange": "today 3-m",
"averages": { "bitcoin": 53, "ethereum": 8, "solana": 8 },
"interestOverTime": [
{ "time": 1782172800, "date": "Jun 23", "formattedTime": "Jun 23, 2026", "isPartial": false,
"bitcoin": 86, "ethereum": 15, "solana": 15 }
],
"interestByRegion": [
{ "geoCode": "US-SD", "geoName": "South Dakota", "bitcoin": 87, "ethereum": 6, "solana": 7 }
],
"relatedQueries": {
"bitcoin": {
"top": [{ "query": "bitcoin price", "value": 100, "formattedValue": "100",
"link": "https://trends.google.com/trends/explore?q=bitcoin+price&date=today+3-m&geo=US" }],
"rising": [{ "query": "british man recovers lost bitcoin", "value": 10150, "formattedValue": "Breakout", "breakout": true }]
}
},
"scrapedAt": "2026-09-23T10:00:00+00:00"
}

Use cases

  • SEO & content marketing: find rising queries early, plan content around seasonality and pick the keyword variant people actually search.
  • E-commerce & product research: validate demand for a product or niche before launching, by country or state.
  • Market & investment research: track interest in brands, tickers, categories or technologies over months or years.
  • Brand monitoring & competitive analysis: compare your brand against competitors in each market.
  • Journalism & academic research: reproducible Google Trends datasets for any period since 2004.
  • Dashboards & AI agents: schedule daily runs and feed Looker Studio, Sheets, BigQuery or an LLM agent.

Pricing

Pay per event: $0.003 per search term (or comparison group of up to 5 terms) that returns data. All sections are included.

VolumeCost
100 search terms$0.30
1,000 search terms$3.00
10,000 search terms$30.00

Terms that fail are free. Apify platform usage is included in the price.

FAQ

How do I get Google Trends data through an API? Call this Actor with your keywords through the Apify API, the Python or JavaScript client, or the MCP server (examples above). You get interest over time, interest by region and related queries as JSON.

Why does pytrends return "429 Too Many Requests"? Google Trends rate-limits clients without a proper session and requests coming from the same IP. This Actor opens a browser-like session for every term and automatically retries rate-limited terms on a fresh session and residential IP, so you do not have to manage cookies, delays or proxies.

Is this a good pytrends alternative? Yes, if you need data you can rely on: no local setup, no proxy management, automatic retries, and you only pay for results. pytrends is free but you run it yourself and handle the rate limits.

What do the 0–100 values mean? Google Trends values are relative: 100 is the peak interest within that request (keywords, location and time range). To compare keywords against each other, enable Compare terms so they share the same scale.

Can I get data for a specific state or city? Yes. Use a location code such as US-CA or GB-ENG, and set regionResolution to REGION, CITY or DMA for the breakdown.

Does it return related topics? No. Google only serves related topics to sessions that pass an interactive reCAPTCHA check, which this Actor deliberately does not bypass. Related queries (top and rising) are included.

Can AI assistants use it? Yes. It works as an MCP tool in Claude, Cursor, VS Code and any MCP-compatible client through https://mcp.apify.com?tools=signalmine/google-trends-scraper.

Is scraping Google Trends legal? This Actor collects only publicly available, aggregated and anonymous data. It does not collect personal data. You are responsible for using the data in line with applicable laws and Google's terms.

Something not working or a feature missing? Open an issue on the Issues tab and it will be looked at quickly.

  • Google Hotels Scraper: hotel prices in any currency, deals, ratings, review topics, amenities and location for any destination and dates.