Google Trends Scraper (Keyless)
Pricing
from $0.27 / 1,000 keyword trends bundles
Google Trends Scraper (Keyless)
Scrape Google Trends interest-over-time, related queries/topics, and per-region interest for keywords. No API key, no browser, no captcha. Up to 5 keywords compared per call. From $2.50 per 1,000 keywords (less on paid plans), charged only for delivered keywords.
Pricing
from $0.27 / 1,000 keyword trends bundles
Rating
0.0
(0)
Developer
subimpact
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
12 hours ago
Last modified
Categories
Share
Apify Actor that pulls Google Trends data with no API key, no browser, and no captcha solving — plain HTTP against Google's internal trends/api endpoints using the NID-cookie warm-up trick.
What it extracts
Per keyword batch (up to 5 keywords compared in one call):
| Widget | Output rows | Toggle (default) |
|---|---|---|
| Interest over time | recordType: "timeline" — one row per period, 0-100 interest | includeTimeseries (on) |
| Related queries | recordType: "relatedQuery" — TOP + RISING lists with rank | includeRelatedQueries (off) |
| Related topics | recordType: "relatedTopic" — TOP + RISING lists | includeRelatedTopics (off) |
| Interest by region | recordType: "geo" — region code/name + 0-100 value | includeGeoMap (off) |
Failed batches emit recordType: "error" rows with the reason instead of silently disappearing.
Input
{"keywords": ["coffee", "iced coffee"],"geo": "US","timeRange": "today 12-m","includeTimeseries": true,"includeRelatedQueries": true}
keywords(required): array of strings (max 100; up to 5 per comparison batch, more are split into batches)geo: 2-letter country code (US,MY, …) or""/ omit = worldwidetimeRange:now 1-H,now 4-H,now 1-d,now 7-d,today 1-m,today 3-m,today 12-m,today 5-y,all, or"YYYY-MM-DD YYYY-MM-DD"category: Google Trends category id (default 0 = all)property:""web search,images,news,youtube,froogleincludeTimeseries: emit interest-over-time rows (defaulttrue)includeRelatedQueries: emit TOP + RISING related-query rows (defaultfalse)includeRelatedTopics: emit related-topic rows, may be empty on some egress IPs (defaultfalse)includeGeoMap: emit interest-by-region rows (defaultfalse)batchSize: keywords compared per Trends call, 1-5 (default 5)maxRelatedItems: cap per TOP/RISING list (default 25)tzOffset: timezone offset in minutes (default 0; e.g. -480 for UTC+8)delaySeconds: politeness delay between requests in seconds (default 1.5)proxyConfiguration: Apify proxy config — pass{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}if datacenter IPs get throttled
Pricing
Pay-per-event, tiered by Apify subscription plan, per keyword bundle:
| Plan | Price per keyword bundle | Per 1,000 bundles |
|---|---|---|
| FREE | $0.0025 | $2.50 |
| BRONZE | $0.0009 | $0.90 |
| SILVER | $0.00045 | $0.45 |
| GOLD and above | $0.00027 | $0.27 |
You are charged only for keywords whose data was actually delivered; failed batches are not charged. One bundle = interest-over-time + related queries/topics + interest-by-region for one keyword. Platform usage (compute) is paid by you on top of the event price.
How this compares
The actor needs no API key, no browser and no captcha: it runs plain HTTP against Google's internal trends/api endpoints, so the compute you pay for stays small. On the Free plan a keyword bundle costs $2.50 per 1,000, below apify/google-trends-scraper, khadinakbar/google-trends-scraper and agenscrape/google-trends-scraper; the tiered price then falls to $0.90 (BRONZE), $0.45 (SILVER) and $0.27 (GOLD and above) per 1,000. data_xplorer/google-trends-fast-scraper lists a lower Free-plan price of $2.00 per 1,000. Competitor events below are billed per dataset item, not per keyword bundle.
| Actor | Price per 1,000 keyword bundles | Platform usage |
|---|---|---|
| subimpact/google-trends-scraper-keyless | $2.50 Free, $0.90 BRONZE, $0.45 SILVER, $0.27 GOLD+ | paid by you |
| apify/google-trends-scraper | $3.00 (per 1,000 dataset items) | see listing |
| data_xplorer/google-trends-fast-scraper | $2.00 (per 1,000 dataset items) | see listing |
| khadinakbar/google-trends-scraper | $5.00 (per 1,000 result items) | see listing |
| agenscrape/google-trends-scraper | $25.00 (per 1,000 dataset items) | see listing |
Prices are Apify Store list prices on the Free plan, checked 24 October 2026. Competitor prices can change; check their listings.
How the keyless trick works
GET https://trends.google.com/trends/with a browser UA → harvest theNIDcookie.GET /trends/api/explore?hl=en-US&tz=<tz>&req=<urlencoded compact JSON>→ XSSI-prefix-stripped JSON → pick widgets by id (TIMESERIES,RELATED_QUERIES,RELATED_TOPICS,GEO_MAP) — each carries a token.GET /trends/api/widgetdata/multiline|relatedsearches|comparedgeowith the widget's ownrequestobject (sent verbatim) + token.
429s trigger warm-up + retry (5s / 10s); persistent 429 means the egress IP is throttled — add a proxy or back off.
Gotchas baked in (all verified against the live API 2026-09-25):
- The XSSI prefix is
)]}'followed by a newline in current responses — naive)]}',startswith checks fail. - Send the widget
requestverbatim with%20-encoded spaces. Do not do the extension-stylespace → +substitution before strict encoding: that produces%2B, which Google rejects with 400. GEO_MAPuses the/widgetdata/comparedgeoendpoint (notmultiline).- Timeline rows are dicts in the current format (
value: [n]arrays, not arrays of arrays). - Related
rankedList[0]= TOP,[1]= RISING (listNamefield is absent). RELATED_TOPICSmay come back empty from some egress IPs — treated as no-data, not an error.- If a run collects no data at all (every batch failed/throttled), it emits an explained uncharged
errorrow and sets a run status message instead of silently succeeding with an empty dataset.