Google Trends Scraper — Fast, No Browser Needed
Pricing
from $1.50 / 1,000 results
Google Trends Scraper — Fast, No Browser Needed
Browserless Google Trends scraper: interest over time, interest by region, related queries & topics, and daily trending searches. No Playwright, no browser — fast and cheap.
Scrape Google Trends data via Google's own internal JSON API — no browser, no Playwright, no CAPTCHAs. Get interest over time, interest by region, related queries and related topics for any keyword, geo and time range. A fast alternative to the official Google Trends UI and other browser-based scrapers.
Why this Actor
- Fast — hits Google's JSON API directly instead of rendering a browser. A typical keyword completes in seconds.
- Reliable — automatic retries with exponential backoff on rate limits (HTTP 429), a real cookie jar (NID, AEC, CONSENT, SOCS) that survives Google's EU consent redirects, and you're never charged for empty results. Optional Apify Proxy to escape IP soft-blocks.
- Clean output — structured records with typed values, ready for Excel, Looker Studio, or an LLM pipeline.
What you get
Per keyword (configurable via Data types):
| Data type | Description |
|---|---|
INTEREST_OVER_TIME | Search interest over the selected time range (0–100 scale) |
INTEREST_BY_REGION | Interest broken down by country / region |
RELATED_QUERIES | Top and rising related search queries with interest values |
RELATED_TOPICS | Top and rising related topics |
Input
| Field | Type | Description |
|---|---|---|
searchTerms | array | Keywords to analyze. Multiple keywords = comparison in one run. |
startUrls | array | Optional — paste Google Trends explore URLs (keyword, geo, date parsed automatically). Comparison URLs with comma-separated terms (?q=react,vue) are split into individual keywords. Overrides searchTerms when provided. |
geo | string | ISO country code (e.g. US, LT, DE, GB). Empty = Worldwide. |
timeRange | select | now 1-H … all (since 2004). Default: today 12-m. |
customTimeRange | string | Exact range as YYYY-MM-DD YYYY-MM-DD (takes precedence). |
category | integer | Google Trends category ID (0 = all). |
dataTypes | multi-select | Which datasets to return per keyword. |
maxItems | integer | Cap on output records (0 = unlimited). |
Example input
{"searchTerms": ["chatgpt", "claude"],"geo": "US","timeRange": "today 3-m","dataTypes": ["INTEREST_OVER_TIME", "RELATED_QUERIES"]}
Output
One record per (keyword × data type). Example:
{"type": "INTEREST_OVER_TIME","keyword": "chatgpt","geo": "US","timeRange": "today 3-m","comparisonGroup": "US|today 3-m|chunk-0","data": [{ "date": "May 7, 2026", "value": 95 },{ "date": "May 14, 2026", "value": 92 }]}
{"type": "RELATED_QUERIES","keyword": "chatgpt","geo": "US","timeRange": "today 3-m","comparisonGroup": "US|today 3-m|related:chatgpt","top": [{ "query": "openai chatgpt", "value": 100, "formattedValue": "100", "link": "/trends/explore?q=..." }],"rising": [{ "query": "chatgpt wrapper", "value": null, "formattedValue": "Breakout", "link": "/trends/explore?q=..." }]}
comparisonGroup identifies the explore request a record came from. Google normalizes interest to 0–100 per request, so only records with the same comparisonGroup are mutually comparable.
Export to CSV / JSON / XLSX from the dataset, schedule recurring runs, or call it via API for programmatic access.
Use cases
- SEO & content strategy — find rising queries before they peak
- Market research — compare brand interest across regions
- Trend monitoring — scheduled runs to track momentum over time
- AI/LLM pipelines — structured trend data as model input
Cost
Pay-per-result: $1.50 per 1,000 dataset records, plus $0.01 per Actor start. You are charged only for records pushed to the dataset — never for empty results. Run a small test first — a single keyword with all data types costs cents.
Notes
- Interest values are Google's normalized 0–100 scale.
- More than 5 terms? Values across chunks are NOT comparable. Google caps comparisons at 5 terms per explore, so larger groups are split into multiple requests — each normalized to 0–100 independently. A 95 in
chunk-0and a 60 inchunk-1are on different scales. Only compare records that share the samecomparisonGroup. RELATED_TOPICSmay return an empty list for some keyword/geo combinations — Google doesn't always have topic data.- The Actor uses Google's public Trends JSON endpoints. Usage falls under Google's Terms of Service for the Trends service.
Development
npm installapify run --input-file /tmp/input.json # test locallyapify push # deploy to Apify