Google Trends Scraper (Reliable, Drop-in)
Pricing
$4.00 / 1,000 keyword reports
Google Trends Scraper (Reliable, Drop-in)
Google Trends interest over time, by region and city, plus related queries. Same input as apify/google-trends-scraper. No browser, hard per-term timeout, failed terms free.
Pricing
$4.00 / 1,000 keyword reports
Rating
0.0
(0)
Developer
Fifty50 Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Get Google Trends data for your keywords: interest over time, interest by region and city, and related queries. The input uses the same field names as apify/google-trends-scraper, so you can switch by changing only the Actor ID in your API call, schedule, Zapier/Make step or MCP tool.
What makes it different
- No browser. It calls the JSON endpoints the Google Trends page itself loads, and runs at 256 MB of memory.
- Hard timeout per term. Each term has a time limit (
timeoutPerTermSecs, default 60 s). When it is reached, the Actor saves what it already has and moves to the next term. A run never waits forever on one keyword. - Results saved as they arrive. Each report is written to the dataset as soon as it is done, so an aborted run still keeps the finished terms.
- Failed terms are free. You pay only for reports that contain interest-over-time data (
status=okorpartial). Failed terms and terms with too little search volume are saved as rows with a reason, at no charge. - No start fee. There is no per-run charge.
- Bounded retries. On HTTP 429 or 5xx it waits 2, 4, 8, then 16 seconds, always within the term's time limit, then marks the term
failedwith the reason. - No CAPTCHA solving, no proxies. If Google shows a CAPTCHA page, the term is marked failed. After 3 in a row, the remaining terms are marked "not attempted" so the run ends quickly instead of burning time.
How to switch from apify/google-trends-scraper
Keep your input JSON. Change the Actor ID:
apify/google-trends-scraper → fifty50labs/google-trends-scraper-reliable
Supported input fields: searchTerms, isMultiple, timeRange, customTimeRange, geo, category, startUrls, spreadsheetId, maxItems, maxConcurrency, maxRequestRetries, pageLoadTimeoutSecs, viewedFrom, skipDebugScreen.
Differences you should know about:
| Field | Behaviour here |
|---|---|
viewedFrom | Accepted, no effect (this Actor uses no proxies). |
skipDebugScreen | Accepted, no effect (no browser, so no snapshots). |
maxConcurrency | Capped at 3; 1 (default) is the most reliable with Google's rate limits. |
maxRequestRetries | Capped at 6. |
pageLoadTimeoutSecs | Used as the per-request HTTP timeout, capped at 30 s. |
isMultiple | Also accepts the strings "true"/"false" in code. |
New optional fields: timeoutPerTermSecs (15–300, default 60), property (images, news, froogle, youtube) and hl (label language, default en-US).
Input example
{"searchTerms": ["web scraping", "electric cars"],"geo": "US","timeRange": "today 3-m"}
Compare up to 5 terms in one chart:
{ "searchTerms": ["iphone, samsung galaxy"], "isMultiple": true }
Or paste Google Trends URLs (the q, geo, date, cat and gprop parameters are read from the URL):
{ "startUrls": [{ "url": "https://trends.google.com/trends/explore?q=coffee&geo=GB&date=today%203-m" }] }
Output
One dataset item per term (or per comparison row). Field names follow apify/google-trends-scraper:
| Field | Content |
|---|---|
inputUrlOrTerm, searchTerm | What you asked for |
interestOverTime_timelineData | [{time, formattedTime, formattedAxisTime, value[], hasData[], formattedValue[], isPartial?}] |
interestOverTime_averages | Averages (filled for comparisons) |
interestBy | Worldwide: interest by country |
interestBySubregion, interestByCity | Country geo: interest by region and by city |
interestByMetro | When Google returns metro-level data (e.g. US state URLs) |
relatedQueries_top, relatedQueries_rising | [{query, value, formattedValue, link}] |
relatedTopics_top, relatedTopics_rising | [{topic: {mid, title, type}, value, formattedValue, link}] (see limits) |
status | ok, partial, no_data or failed |
error, missingSections | Why a report is not ok, and which sections are missing |
geo, timeRange, durationSecs, scrapedAt | Run details |
In comparisons, each related query also carries the searchTerm it belongs to.
Pricing
Pay per event:
| Event | Price |
|---|---|
Keyword report (status ok or partial) | $0.004 |
| Failed term, no-data term, run start | $0 |
Platform usage is included in the event price; you are not billed for compute separately.
Limits (read before relying on it)
- Related topics are often empty. As of October 2026, Google returns an empty related-topics list to clients that are not a full browser. Related queries, interest over time and interest by region are returned normally. If Google changes this, the fields fill in without any change on your side.
- Google rate-limits. There is no official public Google Trends API, and Google throttles automated traffic. Without proxies, very large batches can get HTTP 429 responses. Those terms come back as
failed(free) with the reason; re-run them later. For large lists, keepmaxConcurrencyat 1. - No uptime guarantee. Google can change these endpoints at any time. The Actor is built to fail fast and visibly (an error row, not a hung run) when that happens.
Our test runs
Measured on the Apify platform on 12 October 2026, 256 MB memory, no proxy:
| Test | Result |
|---|---|
5 terms, US, past 12 months (web scraping, bitcoin, electric cars, taylor swift, chatgpt) plus one blank row | 5/5 ok, blank row skipped, 104 s total |
Comparison (iphone, samsung galaxy), Google Trends URL (coffee, GB, 3 months), custom range 2025, and one nonsense term | 2/2 ok; nonsense term no_data (not charged) |
Charging check: solar panels, pizza, a nonsense term, and a US-CA Google Trends URL (hiking) | 3 reports charged, nonsense term no_data and not charged; US-CA returned interestByMetro |
| Forced hang in one section (local test) | Term saved as partial with missingSections at the 20 s limit |
These are small test runs, not a long-term success rate.
Is it legal?
The Actor reads public, aggregated, non-personal Google Trends data, the data shown on the Google Trends website. Google's terms discourage automated access, so check that your use fits your own legal requirements.
Feedback
Found a term that fails or a field that differs from what you expected? Open an issue on the Issues tab with the input you used.