Google Trends API & Scraper - pytrends alternative
Pricing
from $0.50 / 1,000 results
Google Trends API & Scraper - pytrends alternative
Google Trends API and pytrends alternative without 429 errors: interest over time, by country, state, city and US metro, related queries and topics, Trending Now with search volume. Compare 50+ terms on one scale, daily data for years. From $0.50 per 1,000.
Google Trends Scraper & API
Get Google Trends data as JSON, CSV or Excel: interest over time, interest by country, state, city and US metro area (DMA), top & rising related queries, and the live Trending Now list with search volume, growth and news. Any search term, any country, any time range, from the past hour back to 2004. Compare up to 5 terms on one chart, or up to 50 terms on one common scale, get daily data for multi-year ranges, and measure Web, YouTube, News, Image or Shopping search.
✅ Finishes cleanly, no hanging runs. Rate limits are retried on fresh IPs automatically. If you set a short timeout, the run stops in time and keeps every result it collected. ✅ $1.50 per 1,000 results, compute and proxies included. No surprise platform-usage charges. ✅ Drop-in compatible with the most popular Google Trends scraper's input and output field names. ✅ Pytrends alternative that works in 2026: no 429 errors to handle, no cookies, no code needed.
What can you use Google Trends data for?
- SEO & content planning: find rising queries and seasonal peaks before you write.
- Local marketing: see which US metro areas (DMA) and cities search for your product most, and plan ads by region.
- E-commerce & product research: compare demand for products or brands over 5 years, per country.
- YouTube strategy: measure interest on YouTube search specifically, not just web search.
- Finance & research: track attention around brands, tickers, crypto and macro topics, daily or hourly.
- AI agents & dashboards: feed clean JSON to LLM workflows, Google Sheets, Looker Studio or your database.
Two modes
- Explore (default): the classic Google Trends chart for your search terms. Interest over time, by region, city and metro, plus related queries.
- Trending Now: what people are searching for right now, per country or US state. Every trending topic comes with its search volume, growth %, start time, whether it's still trending, category, related searches, and news articles for the top stories. Turn on "Only new trends since my last run" and schedule it hourly or daily to get alerts about new trends only.
What data does Google Trends Scraper extract?
| Field | What it is |
|---|---|
interestOverTime_timelineData | Interest 0-100 per hour/day/week/month for the selected range |
interestOverTime_averages | Average interest per term (comparisons) |
interestBy | Interest by country (Worldwide searches) |
interestBySubregion | Interest by state / region |
interestByCity | Interest by city |
interestByMetro | Interest by US metro area (DMA). Most Google Trends scrapers don't offer this. |
relatedQueries_top / relatedQueries_rising | Related searches with their score or growth; rising ones carry isBreakout (growth above +5,000%) |
summary | Per term: peakValue, peakDate, latestValue, latestDate, average, trendDirection (rising / falling / flat), trendChangePercent |
winner | The term with the highest average interest (comparisons) |
regionLeaders | Which term leads in each country / state (comparisons) |
normalization | Only for > 5 terms: anchor, groups, scale factors, precision flag |
dailyStitching, interestOverTime_coarse | Only with daily stitching: windows, scale factors, agreement with Google's own weekly series |
searchTerm, geo, timeRange, category, property, trendsUrl | The query, echoed for easy filtering |
Trending Now fields
| Field | What it is |
|---|---|
title, rank, geo | The trending search, its position and location |
searchVolume, searchVolumeFormatted | Searches in the window, e.g. 200000 / "200K+" |
increasePercentage | Growth vs normal, e.g. 1000 |
startedAt, endedAt, isActive | When it started trending and whether it still is |
categories | e.g. Sports, Health, Politics (19 categories) |
relatedQueries | Related searches that belong to the same trend |
news, picture | News articles and an image, for the top ~10 trends per location |
exploreUrl | Open the topic in Google Trends Explore |
{ "mode": "trendingNow", "trendingGeos": ["US", "GB", "US-CA"], "trendingHours": "24","trendingCategories": ["Sports", "Technology"], "trendingSort": "volume", "onlyNewSinceLastRun": true }
Ready-made answers: summary, winner, leaders per region
Every result comes with a small summary you don't have to compute yourself, at no extra cost:
"summary": [{ "term": "coffee", "peakValue": 100, "peakDate": "2026-04-12", "latestValue": 69, "latestDate": "2026-09-20","average": 75.4, "trendDirection": "flat", "trendChangePercent": 9.45 },{ "term": "matcha", "peakValue": 8, "peakDate": "2026-04-05", "latestValue": 5, "latestDate": "2026-09-20","average": 6.13, "trendDirection": "rising", "trendChangePercent": 30.65 }],"winner": "coffee","regionLeaders": [{ "geoCode": "US-WY", "geoName": "Wyoming", "leader": "coffee", "leaderValue": 54.3 }]
trendDirectioncompares the average of the last quarter of the period with the first quarter: rising or falling when it changed by at least 10% and 1 point, otherwise flat. An incomplete last period (Google'sisPartial) is left out, so a half-finished week doesn't look like a crash.winneris the term with the highest average;regionLeadersnames the leading term in every region of a comparison.
Compare more than 5 terms on one scale
Google Trends compares at most 5 terms, and each chart is scaled to its own peak, so two separate charts can't be
compared. Turn on "Compare more than 5 terms on one scale" (normalizeAcrossQueries) and all your terms (up to
50) come back on one 0-100 scale, as if Google drew one big chart:
{ "searchTerms": ["coffee", "tea", "matcha", "espresso", "latte", "cappuccino", "chai", "kombucha","hot chocolate", "green tea", "cold brew", "mocha"],"normalizeAcrossQueries": true, "anchorTerm": "coffee", "geo": "US" }
How it works: the terms are fetched in groups of 4 plus a shared anchor term (your first term by default). The
anchor's real interest is the same in every group, so the ratio of its values converts each group to the same scale;
finally everything is rescaled so the highest point is 100. Interest by state/country is rebuilt the same way, and
summary, winner and regionLeaders cover all terms. Each point keeps Google's original number in rawValue.
- Accuracy (measured): we compared the method with Google's own 5-term chart for the same terms. With the most
popular term as anchor the averages matched (0.0% difference for terms averaging 6+, within 0.02 points for terms
averaging 1 or less). With a weak anchor (average ~1) the error reached 8% for a mid-sized term and more for tiny
ones, because Google rounds to whole numbers. Such results are flagged
"lowPrecision": true. - Tip: use your most searched term as
anchorTerm. - One result per normalized comparison, plus $0.003 per extra group of 4 terms (see pricing). City and metro breakdowns are not included in this mode. Terms with different locations or time ranges (e.g. from different URLs) are normalized separately.
Daily data for years, not just 9 months
Google returns daily points only for ranges up to ~9 months; longer ranges come back weekly or monthly. Turn on
"Daily data for long ranges" (dailyStitching) with a custom range, Past 12 months or Past 5 years (up
to 10 years) and you get one continuous daily series, scaled 0-100:
{ "searchTerms": ["bitcoin"], "customTimeRange": "2023-10-01 2025-09-30", "dailyStitching": true }
The range is fetched as overlapping 250-day windows (40+ days of overlap); each window is rescaled so the overlap
matches, then the whole series is rescaled to a maximum of 100. Google's own weekly/monthly series for the full range
stays in interestOverTime_coarse, and dailyStitching.coarseCheck reports how well the daily series matches it for
every result: correlation, meanAbsError (points) and maxDriftPercent (how much the scale wanders across the
range; near 0 is best).
- Accuracy (measured): stitched from two windows, a 250-day series matched Google's direct daily answer with a mean error of 0.46 points (max 4). Over 2 years (10 terms, 4 windows each), the stitched series averaged per week was within ~0.9-1.8 points of Google's weekly series, with a scale drift of 1-4.5% across the range. Correlation is 0.97-0.996 for terms with real ups and downs; very flat terms (coffee, pizza) show ~0.945 purely from day-to-day noise.
- Small errors can add up over many windows, and days with very low interest carry Google's rounding (whole numbers).
- Comparisons (up to 5 terms) can be stitched too. Stitching and >5-term normalization can't be combined in one run.
Why this Google Trends scraper?
| This Actor | Typical browser-based Trends scrapers | |
|---|---|---|
| How it works | Lightweight HTTP, no browser | Headless Chrome |
| Speed | ~4 s per term at default settings (measured on 192 terms) | Slower: a full browser loads each page |
| Short timeouts | Stops in time and keeps its results | Can time out and lose the status |
| Price | $1.50 / 1,000, all-inclusive | Per-result price plus browser compute |
| City + US metro (DMA) data | ✅ | Rarely |
| YouTube / News / Images / Shopping search | ✅ | Usually web only |
| Rate-limit (429) handling | Automatic retry on a fresh IP + a second pass | Varies |
| Trending Now + "only new" monitoring | ✅ | Some |
| Flat CSV (one row per data point) at no extra cost | ✅ | Some, usually billed per row |
| More than 5 terms on one comparable scale | ✅ up to 50 | ❌ |
| Daily data for multi-year ranges | ✅ stitched and self-checked | ❌ weekly/monthly only |
| Summary: peak, trend direction, winner, leader per region | ✅ free | ❌ |
Every release is tested end to end on the Apify platform across 17 scenarios before it ships: worldwide, US, US states, non-Latin terms, comparisons, every time range, custom dates, all search types, 190+ terms at once, and short-timeout runs.
How much does it cost to scrape Google Trends?
From $0.50 per 1,000 results, and platform usage is included, so there's no extra charge for compute or proxies. One result = one search term or comparison with all its data, or one trending topic. You pay nothing for a term that failed.
The two advanced options need several Google comparisons for one result, so each extra comparison is billed as an extended query at $0.003, only when you turn them on:
- More than 5 terms on one scale: one extended query per extra group of 4 terms (12 terms = 3 groups = 2 extended queries = $0.006 on top of the result).
- Daily data for long ranges: one extended query per 250-day window (2 years = 4 windows = $0.012 on top of the result).
| Apify plan | Price per 1,000 results |
|---|---|
| Free | $1.50 |
| Starter (Bronze) | $1.00 |
| Scale (Silver) | $0.75 |
| Business (Gold) and above | $0.50 |
Examples on the Free plan: 20 keywords = $0.03; top 25 trending topics in 3 countries = $0.11; 200 keywords tracked daily for a month = 6,000 results = $9 (or $3 on Business).
Switching from another Google Trends scraper?
It takes one minute:
- Keep your existing input.
searchTerms,isMultiple,timeRange,geo,category,customTimeRange,startUrls,spreadsheetId,maxItemsandviewedFromwork the same way. - Change the Actor ID in your API call, schedule or integration to
alom/google-trends-scraper. - Your downstream code keeps working: output field names such as
interestOverTime_timelineData,interestBySubregion,interestByCityandrelatedQueries_topare identical.
What changes: no browser compute on your bill, no hanging runs, and extra data (US metro areas, YouTube/News/
Shopping search, Trending Now, a free flat CSV). Browser-only settings like pageLoadTimeoutSecs are accepted and
ignored.
How to use it
- Click Try for free.
- Enter search terms, or paste Google Trends URLs, or give a public Google Sheet ID.
- Pick the location, time range, category and search type.
- Click Start, then download the dataset as JSON, CSV, Excel or HTML, or read it via API.
Spreadsheet-ready CSV, free
Every run also saves RESULTS_FLAT.csv: one row per data point (timeline point, state, city, metro, related
query, or trending topic), ready for Excel, Google Sheets or pandas. Open it from the Output tab. It costs
nothing extra, and billing stays per search term.
Input example
{"searchTerms": ["web scraping", "tea, coffee"],"isMultiple": true,"geo": "US","timeRange": "today 3-m","property": "youtube"}
Output example (shortened)
{"inputUrlOrTerm": "web scraping","searchTerm": "web scraping","interestOverTime_timelineData": [{ "time": "1759017600", "formattedTime": "Sep 28 – Oct 4, 2025", "value": [66], "hasData": [true], "formattedValue": ["66"] }],"interestBySubregion": [{ "geoCode": "US-MD", "geoName": "Maryland", "value": [100], "formattedValue": ["100"] }],"interestByMetro": [{ "geoCode": "511", "geoName": "Washington DC (Hagerstown MD)", "value": [88] }],"relatedQueries_top": [{ "query": "ai web scraping", "value": 100, "formattedValue": "100", "link": "/trends/explore?q=ai+web+scraping" }],"geo": "US","timeRange": "today 12-m","trendsUrl": "https://trends.google.com/trends/explore?date=today+12-m&q=web+scraping&geo=US"}
Google Trends API in Python, JavaScript, Make, Zapier, n8n and AI agents
Run it from the Apify API with the Python or JavaScript client, schedule it daily, or connect it to Make, Zapier, n8n and Google Sheets. AI agents can call it through the Apify MCP server. See the API tab for ready-made code.
from apify_client import ApifyClient # pip install "apify-client>=3"client = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("alom/google-trends-scraper").call(run_input={"searchTerms": ["web scraping"], "geo": "US"})for item in client.dataset(run.default_dataset_id).iterate_items():print(item["searchTerm"], item["interestOverTime_timelineData"][-1])
Limitations
- Related topics are empty. Google shows them only to signed-in users, so every logged-out tool gets an empty
list. We return
[]rather than inventing data. Related queries are complete. - Rising queries are Google's own list and can look surprising (e.g. "pet care tips" rising for "coffee"). They match what the Google Trends website shows. We cross-check them on two independent sessions.
- Values are relative (0-100) within one query. To compare terms fairly, put them in the same comparison (up to 5), or turn on Compare more than 5 terms on one scale.
- Normalized (>5 terms) and stitched (daily) values are our computation from Google's whole-number answers, with the precision limits described above. Everything else is Google's data as returned.
FAQ
Is there an official Google Trends API? Google has announced an official Trends API in limited alpha, with access by application only. This Actor gives you the same data the Trends website shows, today, without an application.
Is pytrends still working? The pytrends library was archived in 2025 and often fails with 429 errors. This Actor handles rate limits for you and returns the same kinds of data.
Is it legal to scrape Google Trends? Google Trends publishes aggregated, anonymous statistics, with no personal data. You are responsible for how you use the data.
Can I track keywords every day? Yes. Create a schedule in Apify Console and get fresh data daily in your dataset, Google Sheet or webhook.
More scrapers from the same developer
- YouTube Scraper: videos, channels, Shorts, comments, subtitles and community posts without the API quota
- Threads Scraper: posts, profiles, replies and keyword search on Meta Threads, no login
- Bilibili Scraper: videos, creators, full comment threads and danmaku from B站, no login
- Google Hotels Scraper: hotel prices from every booking site across dates, room rates and reviews
- Google Ads Transparency Scraper: every Google ad a competitor runs, with the real ad copy
- Threads Account Finder: Threads accounts by keyword with followers, bio links and the contacts they list
- Threads Hashtag & Keyword Monitor: only the new posts for your keywords and #hashtags, for scheduled runs
Feedback
Missing a field, found a bug, or need a feature? Open an issue in the Issues tab and I'll take a look. If this Actor saved you time, a short review on the Store page helps other people find it.