Google Trends Scraper (Keyless) avatar

Google Trends Scraper (Keyless)

Pricing

from $0.27 / 1,000 keyword trends bundles

Go to Apify Store
Google Trends Scraper (Keyless)

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

subimpact

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

12 hours ago

Last modified

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):

WidgetOutput rowsToggle (default)
Interest over timerecordType: "timeline" — one row per period, 0-100 interestincludeTimeseries (on)
Related queriesrecordType: "relatedQuery" — TOP + RISING lists with rankincludeRelatedQueries (off)
Related topicsrecordType: "relatedTopic" — TOP + RISING listsincludeRelatedTopics (off)
Interest by regionrecordType: "geo" — region code/name + 0-100 valueincludeGeoMap (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 = worldwide
  • timeRange: 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, froogle
  • includeTimeseries: emit interest-over-time rows (default true)
  • includeRelatedQueries: emit TOP + RISING related-query rows (default false)
  • includeRelatedTopics: emit related-topic rows, may be empty on some egress IPs (default false)
  • includeGeoMap: emit interest-by-region rows (default false)
  • 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:

PlanPrice per keyword bundlePer 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.

ActorPrice per 1,000 keyword bundlesPlatform 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

  1. GET https://trends.google.com/trends/ with a browser UA → harvest the NID cookie.
  2. 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.
  3. GET /trends/api/widgetdata/multiline|relatedsearches|comparedgeo with the widget's own request object (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 request verbatim with %20-encoded spaces. Do not do the extension-style space → + substitution before strict encoding: that produces %2B, which Google rejects with 400.
  • GEO_MAP uses the /widgetdata/comparedgeo endpoint (not multiline).
  • Timeline rows are dicts in the current format (value: [n] arrays, not arrays of arrays).
  • Related rankedList[0] = TOP, [1] = RISING (listName field is absent).
  • RELATED_TOPICS may 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 error row and sets a run status message instead of silently succeeding with an empty dataset.