Google Trends Planner: Seasonality, Regions & Rising Searches
Pricing
from $2.50 / 1,000 keyword analyseds
Google Trends Planner: Seasonality, Regions & Rising Searches
Google Trends for media buyers: up to thousands of keywords per run on one comparable scale, with seasonality by month, YoY and 3-month change, top regions and rising searches as flat rows. Fails loudly, never returns a silent empty dataset.
Pricing
from $2.50 / 1,000 keyword analyseds
Rating
0.0
(0)
Developer
Trends Planner Tools
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Security
Limited permissionsShare
Google Trends data built for people who spend media budgets. Give it a list of keywords; get back one summary row per keyword with the numbers you plan with (peak month, low month, a 12-month seasonality index, year-over-year and 3-month change, top regions, breakout searches), plus flat timeline, region and related-search rows you can pivot in a spreadsheet.
$2.50 per 1,000 keywords analysed. No start fee. Up to 120 timeline, region and related rows per keyword are included (the defaults stay inside that). Keywords Google has no data for are free.
What you can use it for
- Budget pacing and flighting:
seasonJan…seasonDecis an index (100 = average month). A category at 160 in November and 70 in February tells you where to weight spend. - Geo-targeting and bid adjustments: interest by country, state, US metro area (DMA) or city.
- New keywords and negatives: "rising" related searches flag breakout terms (
isBreakout) before they show volume in your keyword tools, plus the junk queries to exclude. - Share of search vs competitors: with Add share of search on, every keyword is also put on one
common scale (
shareOfSearch,shareOfSearchAvg), even past Google's 5-term comparison limit. - Shopping and YouTube demand: switch Search type to Google Shopping (the closest proxy for purchase intent) or YouTube.
Input
| Field | What it does |
|---|---|
keywords | Search terms or Trends topic ids (/m/...). With share of search on, put your main term first: it anchors the scale. |
geo | Empty = worldwide; US, GB, TH…; or a subregion such as US-CA. |
timeRange | Preset (default: past 5 years, needed for YoY and a stable seasonality index), or set startDate/endDate. |
searchProperty | Web (default), Google Shopping, YouTube, Images, News. |
category | Optional Trends category id to disambiguate ("apple" in Food vs Computers). |
regionResolution | AUTO, COUNTRY, REGION (states), DMA (US metros), CITY. |
includeTimeline, timelineGranularity | Timeline rows; AUTO gives monthly rows for ranges over a year (60 rows for 5 years), NATIVE gives every weekly/daily point. |
includeRegions, maxRegions | Region rows, highest interest first (default top 25). |
includeRelatedQueries, maxRelatedPerKeyword | Top and rising searches (default 10 per list). |
maxKeywords | Hard cap on keywords per run; your cost ceiling. |
Output
Every row has recordType, keyword, geo, timeRange, searchProperty, category. Use the
dataset views (Summary, Timeline, Regions, Related) or filter on recordType:
- SUMMARY (one per keyword):
status(OK / NO_DATA / ERROR),dataQuality(GOOD / SPARSE),averageValue,latestValue,peakValue/peakDate,lowValue/lowDate,change3mPct,changeYoYPct,peakMonth,lowMonth,seasonJan…seasonDec,shareOfSearchAvg,topRegions,topQueries,risingQueries,message, andtrendsUrlto check it in Google Trends. - TIMELINE:
granularity,date(YYYY-MMwhen monthly),value(0-100 for this keyword),shareOfSearch,isPartial(the current, still-filling period; excluded from the summary maths). - REGION:
regionResolution,regionCode,regionName,latitude/longitude(cities),value. - RELATED_QUERY:
listType(TOP / RISING),query,value,formattedValue(Breakout,+250%),isBreakout.
Example summary row (US, past 5 years, web search):
{"recordType": "SUMMARY", "keyword": "nike", "status": "OK", "dataQuality": "GOOD","averageValue": 49.6, "latestValue": 40, "peakDate": "2026-04-12", "changeYoYPct": 6.1,"change3mPct": -24.5, "peakMonth": "Dec", "lowMonth": "Sep", "seasonNov": 121, "seasonDec": 124,"risingQueries": "nike mind 001 (Breakout), nike vomero plus (Breakout), ...","trendsUrl": "https://trends.google.com/trends/explore?q=nike&date=today%205-y&geo=US"}
Honest about failures
- No silent empty datasets. A keyword with too little volume gets a
NO_DATArow saying so (not charged). A keyword Google refuses after all retries gets anERRORrow with the reason (not charged). If every keyword fails, the run is marked Failed with the reason in the status message. - Sparse data is flagged. If fewer than half the periods have data,
dataQualityisSPARSEand seasonality/change figures are withheld rather than computed from noise. - No timeouts that eat your results. About 450 keywords an hour (requests are deliberately paced). The default run timeout is 4 hours; if a run nears its timeout it stops cleanly, saves everything done so far and lists the keywords it did not reach.
- Polite by design. Requests are sequential and spaced out; on HTTP 429 the actor backs off
(honouring
Retry-After) and retries with a fresh session. ARUN_REPORTrecord in the key-value store lists requests made, rate-limit hits, failures and duration.
Things to know about Google Trends data
- Values are relative (0-100 within the request), not search volumes. Pair them with a keyword volume tool when you need absolute numbers.
- Region scores are normalised by each region's total searches, so small regions (Wyoming, small US metros) can top a list on modest absolute volume. Use them for bid adjustments, not volume forecasts.
- Related topics are off by default: in October 2026 Google returns empty topic lists. Related queries are unaffected.
- Data comes from Google Trends' public web interface, the same data you see at trends.google.com. No login and no Google account are used.
Pricing
Pay per event:
| Event | Price | When |
|---|---|---|
keyword-analyzed | $0.0025 | One keyword with data: its summary row plus up to 120 detail rows |
extra-row | $0.00001 | Each detail row beyond 120 for a keyword (only with NATIVE timelines, all metros, etc.) |
1,000 keywords on default settings = $2.50. NO_DATA and ERROR keywords cost nothing. Set a maximum charge per run in Apify; the actor stops cleanly at it.
Measured on Apify (31 Oct 2026): 50 keywords, US, 5 years, all row types, finished 50/50 in 6.6 minutes, recovering on its own from the 3 rate-limit responses it met.