Google Trends Scraper — All Trends Data API avatar

Google Trends Scraper — All Trends Data API

Pricing

from $1.50 / 1,000 trend reports

Go to Apify Store
Google Trends Scraper — All Trends Data API

Google Trends Scraper — All Trends Data API

All working Google Trends data in one reliable scraper: interest over time, multi-keyword compare (up to 5), related queries, interest by region, trending now. Schema-stable JSON, fail-fast errors, no charge for empty or failed results. No start fee. API + MCP ready. CSV/JSON export.

Pricing

from $1.50 / 1,000 trend reports

Rating

0.0

(0)

Developer

Steadyfetch Team

Steadyfetch Team

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

Categories

Share

Scrape Google Trends data as clean, schema-stable JSON — a reliable Google Trends API for marketers, SEO tools, and data/AI teams. One actor covers every Trends surface that actually returns data in 2026: interest over time, multi-keyword compare, related queries, interest by region, and trending now. Works with a single keyword or up to 5 in compare mode.

SurfaceWhat you getSample field
Interest over timeFull 0–100 timeline for any keyword, geo, and time rangedata.points[].value
Multi-keyword compare2–5 keywords scored on one shared scale, like the Trends UIcomparedWith, sharedScale: true
Related queriesTop + rising queries with values and % growthdata.rising[].formattedValue
Interest by regionPer-state/country breakdown for the keyworddata.regions[].geoCode
Trending nowCurrent trending searches per country with traffic estimate + news linksdata.approxTraffic, data.news[]
  • Fail-fast, never hang. Every request has a hard timeout and a bounded retry budget over rotating residential sessions. A run either returns data or stops with an explicit reason — no infinite loops, no zombie runs, no surprise usage bills.
  • You are never charged for empty results. Google Trends has a degraded mode where it returns HTTP 200 with an empty payload. This actor detects it, retries on a fresh session, and if a fetch ultimately fails it is reported in the run's ERRORS record and never billed.
  • Schema-stable JSON. Every item carries schemaVersion, and every field is always present — explicit null over silent omission. Your pipeline never breaks on a missing key.
  • Honest scope. Related topics is intentionally not offered: Google's topics feed currently returns empty data platform-wide (verified June 2026 from multiple networks). Actors that still sell it deliver empty rows. We'll ship the surface the day it returns real data.
  • Clean exits, honest partials. If a run hits your max-cost ceiling or its timeout, it stops cleanly, tells you exactly how many units are left, and how to get the rest.
  1. Click Try for free — the form is prefilled with a working example (bitcoin, all surfaces).
  2. Add your keywords and pick surfaces, location, and time range.
  3. Click Start. The first results usually land in the dataset within a minute.
  4. Export as JSON, CSV, or Excel — or schedule the run to repeat daily/weekly.

Google Trends scraper input form

Input example

{
"searchTerms": ["bitcoin", "ethereum"],
"compare": true,
"geo": "US",
"timeRange": "today 12-m",
"includeTrendingNow": true,
"trendingNowGeo": "US"
}

Output examples

See real output before you run anythinglive sample dataset (actual results, every surface), or a 4-keyword compare run (chatgpt vs claude vs gemini vs copilot on one shared scale).

Google Trends multi-keyword compare output table

One dataset item = one keyword × one surface. Every item shares the same envelope:

{
"schemaVersion": 1,
"surface": "interestOverTime",
"keyword": "bitcoin",
"geo": "US",
"timeRange": "today 12-m",
"category": 0,
"property": "",
"comparedWith": ["ethereum"],
"sharedScale": true,
"fetchedAt": "2026-06-10T16:55:01.000Z",
"data": {
"points": [
{ "date": "2025-06-08T00:00:00.000Z", "timestamp": 1749340800, "formattedTime": "Jun 8 – 14, 2025", "value": 29, "isPartial": false }
]
}
}
{
"surface": "relatedQueries",
"keyword": "bitcoin",
"data": {
"top": [ { "query": "bitcoin price", "value": 100, "formattedValue": "100", "link": "https://trends.google.com/trends/explore?q=bitcoin+price" } ],
"rising": [ { "query": "bitcoin etf", "value": 850, "formattedValue": "+850%" } ]
}
}
{
"surface": "trendingNow",
"geo": "US",
"data": {
"title": "simone ashley",
"approxTraffic": "200+",
"pubDate": "Tue, 10 Jun 2026 15:00:00 -0700",
"news": [ { "title": "…", "url": "https://…", "source": "…" } ]
}
}

Note: Google typically surfaces ~10–20 trending searches per country per pull; some days fewer. Trends values are a relative 0–100 index with sampling variance — small differences vs the Trends UI are normal and documented in the FAQ.

1 result = one keyword × one surface payload. A full 12-month timeline is one result. A complete related-queries set (top + rising) is one result. One trending-now row is one result.

No start fee, no subscription — you pay only for delivered results. Failed or empty fetches are never charged.

What you runResultsApprox. cost*
1 keyword, all 3 keyword surfaces3~$0.01
Track 100 keywords' interest weekly430/mo~$1.30/mo
Track 250 keywords daily7,500/mo~$22.50/mo
Trending now for 3 countries, daily~900/mo~$2.70/mo

*At the FREE-tier event price. Platform usage (compute + residential proxy) is billed separately at cost — typically $1–3 per 1,000 results, depending on how many retries your keywords need. Apify's free plan ($5 monthly credit) covers roughly 1,000 trend reports — enough to evaluate seriously before paying anything.

There is no generally available official Google Trends API: Google's announced API is in closed alpha (waitlist, no trending-now surface). The popular Python library pytrends is unmaintained, with long-broken endpoints. This actor is a stable HTTP/JSON alternative: callable from any language, schedulable, monitored, exportable to CSV/Sheets — with reliability engineering (residential proxy rotation, consistent browser fingerprints per session, fail-fast retries) that one-off scripts and unmaintained libraries can't sustain.

Use it via API, MCP, and integrations

curl "https://api.apify.com/v2/acts/steadyfetch~google-trends-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-X POST -H 'Content-Type: application/json' \
-d '{"searchTerms":["bitcoin"],"geo":"US","timeRange":"today 3-m"}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("steadyfetch/google-trends-scraper").call(run_input={
"searchTerms": ["bitcoin", "ethereum"], "compare": True, "geo": "US",
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["keyword"], item["surface"])

Connect from any MCP client (Claude, Cursor, …) in one step — add this server to your MCP config:

{
"mcpServers": {
"google-trends": {
"url": "https://mcp.apify.com/?actors=steadyfetch/google-trends-scraper",
"headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
}
}
}

MCP-ready, including multi-keyword compare (verified end-to-end, June 2026): every input works identically from the UI, the REST API, and MCP clients — the input is one flat JSON schema with no hidden flags. Quick calls (trending now, single keyword) return results inside the tool call; bigger jobs hand back a run you can poll with the bundled dataset tools. Scheduling, monitoring, webhooks, and Make/Zapier connections come with the Apify platform.

FAQ

Google announced one, but it remains alpha/waitlist-only and does not cover trending now. This actor exists to fill that gap today.

This actor only collects public, non-personal, aggregated data — the same anonymized index anyone sees at trends.google.com. Courts have repeatedly held that scraping publicly accessible data is lawful (e.g., hiQ v. LinkedIn, Meta v. Bright Data). Still, consult your counsel for your specific use.

Trends is a sampled, relative 0–100 index; Google itself returns slightly different values across sessions. Differences of a few points are inherent to the source, not a scraper defect.

What happens when Google blocks a request?

The session is discarded and a fresh residential session (new IP, new fingerprint, fresh tokens) retries — up to 5 attempts with cooldowns. If all fail, the fetch is recorded in ERRORS with the exact reason, and you are not charged for it.

Can I compare 5 keywords?

Yes — set compare: true with 2–5 searchTerms to get them on one shared scale. Related queries are per-keyword, so fetch them in a second run without compare.

Google's topics feed currently returns empty data platform-wide (verified June 2026). We don't sell empty rows. The surface ships the day Google's data returns.

Feedback & support

Found an issue or missing a feature? Open it on the Issues tab — issues get a response within one business day, and fixes land in the changelog. If this actor saves you time, a review helps other buyers find it.