Google Trends Scraper
Pricing
from $1.00 / 1,000 dataset items
Google Trends Scraper
Google Trends data as JSON: interest over time, by country, state, metro or city, top and rising related queries, plus Trending Now searches with volume, growth and news. Compare up to 5 terms, paste Trends URLs, run hundreds of keywords. No browser, fast. Pay only for results.
Get Google Trends data as clean JSON: interest over time, interest by country / state / metro / city, top and rising (breakout) related queries, and today's Trending Now searches with search volume, growth and news. Paste search terms or Google Trends URLs, compare up to 5 terms on one scale, and run hundreds of keywords per run.
It reads the same JSON API the Trends website uses, with no browser: a 40-keyword run takes under a minute. When Google rate-limits an IP, the run switches to a new proxy session and repeats the search, so you get your rows instead of a failed run.
What data you get
Explore mode: one row per search term
| Field | Example | Notes |
|---|---|---|
searchTerm | matcha | keyword or topic id (/m/02vqfm) |
comparedWith | ["coffee", "tea"] | other terms on the same 0-100 scale (compare mode) |
geo, timeRange, timeRangeResolved | US, today 12-m, 2025-10-14 2026-10-14 | |
category, property | 0, web | web, YouTube, News, Images or Shopping search |
hasData | true | false when Google has too little search volume |
averageInterest, latestInterest, peakInterestDate | 73.3, 59, 2026-04-12T00:00:00Z | computed from the series |
interestOverTime[] | {date, label, value, isPartial} | minute, hour, day, week or month points, as Google chooses for the range |
interestByRegion[] | {geoCode, geoName, value} or {coordinates, geoName, value} | countries, sub-regions, US metros (DMA) or cities |
regionLevel | CITY / default | default when Google has no data at the level you asked for |
relatedQueriesTop[] | {query, value, link} | up to 25 |
relatedQueriesRising[] | {query, growthPercent, formattedValue, link} | up to 25; Breakout = more than +5000% |
exploreUrl, scrapedAt | link to the same view on Google Trends |
Trending now mode: one row per trending search
| Field | Example |
|---|---|
rank, searchTerm, geo, timeWindowHours | 1, roma vs real madrid, US, 24 |
searchVolume | 500000 (Google's bucket: 500K+) |
increasePercentage | 1000 |
startedAt, endedAt, isActive | ISO times; endedAt null while still trending |
categories | ["Sports"] |
trendBreakdown | the related searches Google groups into this trend |
news[] | {title, url, source, publishedTimestamp, image} (optional) |
exploreUrl |
Use cases
- SEO and content teams: find rising queries before they peak, compare topic demand, plan seasonal content.
- E-commerce and product research: check demand curves and seasonality by country or state before launching or stocking a product.
- Marketing agencies: monthly trend reports per client keyword; regional interest for geo-targeted campaigns.
- Newsrooms and social teams: Trending Now by country with volume, growth and headlines, every hour.
- Analysts and AI agents: a time series per keyword as JSON for dashboards, forecasting and LLM pipelines.
Input
| Parameter | Default | Description |
|---|---|---|
mode | explore | explore or trendingNow |
searchTerms | keywords or topic ids; one row each | |
compareTerms | false | compare in groups of up to 5 on one scale |
startUrls | Google Trends explore URLs (their own q, geo, date, cat, gprop are used) | |
geo | worldwide | US, GB, US-CA, US-NY-501... |
timeRange | today 12-m | past hour ... 2004-present, or custom + customTimeRange (2024-01-01 2024-12-31) |
category | 0 | Google Trends category id |
property | web | web, youtube, news, images, shopping |
includeInterestOverTime / includeInterestByRegion / includeRelatedQueries | true | turn off what you don't need for faster runs |
regionResolution | auto | COUNTRY, REGION, DMA, CITY |
trendingGeos | ["US"] | trending now locations |
trendingHours | 24 | 4, 24, 48 or 168 hours |
trendingCategories | all | e.g. Sports, Technology, Business and finance |
trendingSort, maxTrends, onlyActiveTrends, includeTrendNews | ordering, limit, active only, add headlines | |
proxyConfiguration | Apify Residential | used only after Google rate-limits an IP |
Example input
Seven phones on YouTube search in the US, compared in groups of 5 + 2:
{"mode": "explore","searchTerms": ["iphone 17","pixel 10","galaxy s26","oneplus 15","xiaomi 16","nothing phone","motorola edge"],"compareTerms": true,"geo": "US","timeRange": "today 3-m","property": "youtube","regionResolution": "CITY"}
Example output (real run, arrays shortened)
Google has no city data for compared terms on YouTube, so the row falls back to states (regionLevel: default).
{"type": "explore","searchTerm": "nothing phone","comparedWith": ["motorola edge"],"geo": "US","timeRange": "today 3-m","timeRangeResolved": "2026-07-14 2026-10-14","category": 0,"property": "youtube","hasData": true,"averageInterest": 58.26,"peakInterestDate": "2026-09-22T00:00:00Z","latestInterest": 67,"interestOverTime": [{"date": "2026-07-14T00:00:00Z","label": "Jul 14, 2026","value": 63,"isPartial": false},{"date": "2026-07-15T00:00:00Z","label": "Jul 15, 2026","value": 56,"isPartial": false}],"interestByRegion": [{"geoCode": "US-DC","coordinates": null,"geoName": "District of Columbia","value": 100},{"geoCode": "US-DE","coordinates": null,"geoName": "Delaware","value": 100}],"regionLevel": "default","relatedQueriesTop": [{"query": "nothing phone pro","value": 100,"link": "https://trends.google.com/trends/explore?q=nothing+phone+pro&date=today+3-m&geo=US"}],"relatedQueriesRising": [{"query": "nothing phone 4a pro pink","growthPercent": 36900,"formattedValue": "Breakout","link": "https://trends.google.com/trends/explore?q=nothing+phone+4a+pro+pink&date=today+3-m&geo=US"}],"exploreUrl": "https://trends.google.com/trends/explore?q=nothing+phone%2Cmotorola+edge&date=today+3-m&geo=US&gprop=youtube","scrapedAt": "2026-10-14T23:57:02Z"}
Scheduling and integrations
Schedule the actor (for example hourly Trending Now for 5 countries, or a weekly keyword report) in Apify Console → Schedules, and send results to Google Sheets, Slack, a webhook, Make, Zapier or n8n. Every run's dataset can be downloaded as JSON, CSV or Excel or read through the Apify API.
Use it from AI assistants (MCP)
Through the Apify MCP server (https://mcp.apify.com), Claude, ChatGPT and other MCP clients can call this actor as a
tool: "compare search interest for matcha and coffee in the US over 5 years" returns the rows above.
FAQ
What do the numbers mean? Google Trends values are relative (0-100) within the chosen time range and location:
100 is the peak. They are not absolute search counts. Trending Now searchVolume is Google's volume bucket (for example 200K+).
Why compare terms? Separately, each term has its own 0-100 scale. With compareTerms the values are on one shared scale,
like the comparison chart on the website.
Are related topics included? No. Google only serves related topics to browser sessions with a reCAPTCHA token. Related queries (top and rising) are included.
Why are some terms empty? hasData: false means Google has too little search volume for that term, place and period.
Such rows are cheaper and still show you the term was checked.
What if Google rate-limits? The actor retries on a new proxy session and repeats the search (in a 150-keyword test run,
all 10 rate-limit responses were recovered). Searches that still fail are listed in the run's FAILED_SEARCHES record and
the rest of the run continues; to retry them, start a new run with just those terms.
How much data per term? Interest over time has up to ~270 points (monthly since 2004 for all); regions up to 250
countries or 200 cities; related queries up to 25 top + 25 rising.
Is it legal? The actor reads public, aggregated, anonymous statistics that Google publishes on trends.google.com. It collects no personal data. Check that your use complies with Google's terms and your local law.
This actor is not affiliated with or endorsed by Google.