Google Trends Scraper & API: Bulk Trend Summaries avatar

Google Trends Scraper & API: Bulk Trend Summaries

Pricing

$5.00 / 1,000 keyword lookups

Go to Apify Store
Google Trends Scraper & API: Bulk Trend Summaries

Google Trends Scraper & API: Bulk Trend Summaries

Bulk Google Trends API and pytrends alternative. Each keyword lookup returns interest over time, interest by region, rising related searches and a plain-English summary: rising or falling, year on year, peak, seasonality. $5 per 1,000 keyword lookups; failed lookups are free.

Pricing

$5.00 / 1,000 keyword lookups

Rating

0.0

(0)

Developer

Meridian Labs

Meridian Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 hours ago

Last modified

Share

Google Trends Scraper looks up Google Trends for hundreds of keywords in one run and gives you the full data plus a plain-English trend summary for every keyword: is interest rising or falling, how it compares year on year, when it peaks, whether it's seasonal, and which related searches are taking off. The input form is pre-filled, so the easiest way to try it is to click Start. A 3-keyword run costs $0.015. You can also call it from your own code as a Google Trends API, a maintained pytrends alternative (examples below).

It's built for SEO and content marketers, online sellers doing product research, YouTube creators, analysts and AI agents who need Google Trends data for more than a handful of keywords.

Google Trends Scraper result: one row per keyword with momentum, year-on-year change, seasonality and the top rising search

For each keyword (or each Google Trends URL you paste) it returns:

  • 📈 Interest over time (interestOverTime): the full 0–100 series, hourly, daily, weekly or monthly depending on the range.
  • 🗺️ Interest by region (interestByRegion): countries (worldwide), states/regions (in a country) or US metro areas, highest first.
  • 🔎 Rising related searches (relatedQueries): Google's top and rising related searches ("related queries"), with growth such as +350% or Breakout.
  • 📝 A plain-English summary (summary) with the key numbers as separate, filterable fields:
    • momentum: rising, falling or stable over the last 13 weeks (or 7 days / 24 hours)
    • change year on year
    • peak date and value, and "now" compared with the range average
    • seasonality, e.g. peaks every October, including seasons across the new year such as November–January
    • the fastest-rising relevant related search
  • 🚀 Bulk by design. Paste a list of keywords, or Google Trends URLs, and get one row per keyword.
  • 🧠 Answers, not just numbers. A readable summary plus ready-to-sort fields (momentum, yearOnYearChangePct, seasonal...), so you can find "rising and seasonal in Q4" across 500 keywords in a spreadsheet.
  • 🧹 Noise flagged. Google's own "rising" lists sometimes include unrelated searches (we've seen "laptop stand" listed as rising for "air fryer"). Every related search carries sharesWordWithKeyword, and the summary only headlines relevant ones.
  • ⚖️ Compare on one scale. Turn on Compare keywords to put up to 5 keywords on the same 0–100 scale (Google's limit), in as many groups as you need.
  • ⚡ Fast and dependable. No browser, and no 429 Too Many Requests errors for you to handle: proxies and retries are built in. In our 1,000-keyword test (September 2026) every lookup succeeded, typically in about 4 seconds per keyword.
  • 🧾 No silent empty runs. Every keyword gets a row with a status (ok, no_data, error or skipped), and the run's status message says how many of each.
  • 💸 Fair billing. You pay per keyword lookup. Failed lookups are free, and the run stops exactly at your maximum spending limit.
  • 🤖 AI-agent ready. A documented output schema, a summary table view and stable field names. It works from the Apify API, integrations (Make, Zapier, n8n, Google Sheets) and MCP clients.
  1. Enter your keywords, one per line, and/or paste Google Trends URLs.
  2. Choose location, time range and search type. Pick Past 5 years to get seasonality and year-on-year change.
  3. Optionally turn on Compare keywords on one scale.
  4. Click Start. Open the Summary view for one line per keyword, or export everything as JSON, CSV or Excel.

Google Trends Scraper input: keywords, location and time range

Watch the 30-second demo:

Yes. Paste URLs straight from trends.google.com, e.g. https://trends.google.com/trends/explore?q=tea,coffee&geo=GB&gprop=youtube. Each URL keeps its own terms (up to 5 compared), location, time range, category and search type. The form's settings apply only to the keyword list.

pytrends, the unofficial Python library most people used for Google Trends, was archived by its owner in April 2025 and no longer gets fixes. It also sends every request from your own IP, so bulk jobs run into Google's 429 Too Many Requests errors. This Actor does the same job as a hosted API: rotating proxies and retries are built in, so there are no 429s for you to handle. In our 1,000-keyword test (September 2026) every lookup succeeded, and failed lookups are free.

Python (pip install apify-client; get your token in Console → Settings → API & Integrations):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("meridianlabs/google-trends-scraper").call(run_input={
"keywords": ["air fryer", "standing desk"],
"geo": "US",
"timeRange": "past_5_years",
})
for row in client.dataset(run.default_dataset_id).iterate_items():
print(row["keyword"], row["status"], row["summary"]["text"])

This is for apify-client 3.x; on 2.x, use run["defaultDatasetId"].

JavaScript (npm install apify-client, with const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })):

const { items } = await client.dataset((await client.actor('meridianlabs/google-trends-scraper').call({ keywords: ['air fryer', 'standing desk'], geo: 'US', timeRange: 'past_5_years' })).defaultDatasetId).listItems();

Coming from pytrends? interest_over_time() is interestOverTime, interest_by_region() is interestByRegion and related_queries() is relatedQueries (top and rising). timeframe='today 5-y' becomes "timeRange": "past_5_years", and geo works the same way. One keyword lookup returns all of them in a single row, plus the plain-English summary. Related topics aren't available (see Limitations).

$5 per 1,000 keyword lookups ($0.005 per keyword lookup). Failed lookups are free.

  • ✅ Charged: keywords with data; keywords where Google has no data (the lookup ran and answered); and partial rows (timeline complete, but Google refused regions or related searches).
  • 🆓 Free: errors, blocked lookups, invalid input, and keywords skipped because the run reached your maximum spending limit or its time limit.
  • Examples: 3 keywords = $0.015, 100 keywords = $0.50, 1,000 keywords = $5. In compare mode each keyword counts once.
  • Free to try: Apify's free plan includes $5 of platform usage every month, which covers about 1,000 keyword lookups here. Platform usage is included in the price.
  • Set a maximum cost per run in the run options and the Actor stops exactly there. Keywords it didn't reach are listed as skipped and not charged.

Input

FieldWhat it does
keywordsSearch terms; each keyword is one keyword lookup ($0.005). Duplicates are removed.
trendsUrlsGoogle Trends explore URLs; each keeps its own settings.
compareKeywordsPut keywords on one shared 0–100 scale, in groups of up to 5.
geoCountry or region code, e.g. US, GB, AU, US-CA, AU-NSW. Empty = worldwide.
timeRangePast hour → 2004 to present, or a custom YYYY-MM-DD YYYY-MM-DD range.
searchTypeWeb, YouTube, News, Images or Google Shopping search.
categoryOptional Google Trends category ID to disambiguate (0 = all).
includeRegions, regionResolutionInterest by region, and at which level: countries, states/regions or US metro areas.
includeRelatedQueriesRelated searches, top and rising (Google's "related queries").
maxConcurrencyKeywords looked up in parallel (1–10).
failOnErrorsMark the run failed if any keyword errors (for schedules and monitoring). Failed keywords are still free.

Example:

{
"keywords": ["halloween costume", "air fryer", "pickleball"],
"geo": "US",
"timeRange": "past_5_years"
}

Output example

Data source: Google Trends (https://www.google.com/trends). Every row carries this in its dataSource field.

The Summary view on the Output tab gives one line per keyword:

Google Trends Scraper Summary view in Apify Console: summary text, momentum, recent change, year on year, peak, seasonality and top rising related search per keyword

Every row also carries the full data behind the summary, e.g. five years of weekly interest for halloween costume:

Google Trends data for halloween costume over 5 years, peaking every October

One row per keyword (trimmed):

{
"keyword": "halloween costume",
"status": "ok",
"geo": "US",
"timeRange": "past_5_years",
"searchType": "web",
"comparedWith": [],
"summary": {
"text": "Interest is rising (+352% vs the previous 13 weeks); up 23% year on year. Peak: October 2021. Seasonal: peaks every October. Fastest-rising related search: '2024 halloween costume ideas' (Breakout).",
"momentum": "rising",
"recentChangePct": 352,
"yearOnYearChangePct": 23,
"peakDate": "2021-10-24",
"seasonal": true,
"seasonalPeakMonth": "October",
"seasonalWindow": "September–November",
"topRisingQuery": "2024 halloween costume ideas",
"topRisingQueryGrowth": "Breakout"
},
"interestOverTime": [{ "date": "2021-09-19", "value": 30, "isPartial": false }, "..."],
"averageInterest": 10,
"interestByRegion": [{ "geoCode": "US-WV", "geoName": "West Virginia", "value": 100 }, "..."],
"relatedQueries": {
"top": [{ "query": "halloween costumes", "value": 100, "sharesWordWithKeyword": true }, "..."],
"rising": [{ "query": "2024 halloween costume ideas", "growth": "Breakout", "growthPct": null, "sharesWordWithKeyword": true }, "..."]
},
"dataSource": "Google Trends (https://www.google.com/trends)",
"scrapedAt": "2026-09-24T08:58:11Z"
}

status is one of:

  • ok: data returned.
  • no_data: Google has too little search data for this keyword, location and range.
  • error: the lookup failed; not charged.
  • skipped: not looked up because the run hit its spending or time limit; not charged.

Rows marked "partial": true have a complete timeline, but Google refused regions or related searches for that keyword and location. The missing parts are listed in unavailableParts.

  • Values are relative, not search counts. 100 is the keyword's highest point in the chosen range and location; 50 means half as popular as that peak. They are not monthly search volumes.
  • Separate lookups aren't comparable. "air fryer = 80" and "standing desk = 80" from separate lookups don't mean equal popularity. Turn on Compare keywords to put them on one scale.
  • The last point may be partial. The current week or day is still in progress; it's marked isPartial: true and left out of the summary.
  • Google samples its data. Repeating a lookup can shift individual values by a few points. The trend is reliable; single values are approximate.
  • Longer ranges unlock more of the summary. Year-on-year change needs more than 12 months of weekly data, and seasonality needs at least 2 full years. Use Past 5 years for both.
  • 🗓️ SEO and content planning: find rising topics and when seasonal topics peak, so content ships before the peak.
  • 🛒 E-commerce and product research: check whether a product is growing or fading, compare alternatives, and spot rising variants (e.g. "ninja crispi air fryer").
  • ▶️ YouTube topic research: set Search type to YouTube search to measure what people search on YouTube.
  • 📊 Market research and reporting: track brands or categories over time and by region.
  • 🤖 AI agents: give an agent reliable "is X trending?" answers with numbers attached.
  1. Fill in the input (for example, your 200 product keywords, Past 5 years) and click Save as a new task.
  2. Open Schedules → Create new, pick the task and choose how often, e.g. every Monday at 08:00.
  3. Every run adds a fresh dataset; connect it to a spreadsheet or a workflow (next section) or read it with the API.

200 keywords every week is about 860 lookups a month, ≈ $4.30/month. Set Fail the run if any lookup fails on scheduled tasks so a failed run shows up in your run list and monitoring alerts. Failed keywords stay free.

  • Google Sheets and Drive: on the Actor's or task's Integrations tab, add the Google Drive integration, or use Make, Zapier or n8n (below) with a Google Sheets "add rows" step.
  • Make, Zapier and n8n: each has an official Apify app or node. Trigger on "Actor run finished", then get the dataset items. Ask for the overview view to get the Summary columns, one row per keyword.
  • Webhooks: Integrations → HTTP webhook on "Run succeeded" sends the run details to your URL.
  • AI agents (MCP): add https://mcp.apify.com?actors=meridianlabs/google-trends-scraper to your MCP client (Claude, Cursor, VS Code and others). The agent can then run lookups and read the summaries.
  • Code: see Use it as a Google Trends API above.

Limitations

  • No related topics and no city-level regions. Google withholds these from automated lookups (and at the time of writing returns none even in a normal browser session). Related searches and country/state/metro regions are fully available.
  • Very new or very niche terms may return no_data. That's Google's answer, not an error.
  • Rising lists can contain noise from Google's side. Use sharesWordWithKeyword to filter.

FAQ

Google announced an official Trends API in 2025, but at the time of writing access is limited to an invite-only alpha, and the popular unofficial Python library pytrends was archived in April 2025. This Actor gives you the same Google Trends data through the Apify API, ready to use today: see Use it as a Google Trends API above for Python and JavaScript examples.

This Actor collects publicly available, aggregated, non-personal data from Google Trends. You're responsible for how you use it; check Google's terms for your use case. This Actor is not affiliated with or endorsed by Google. Data source: Google Trends (https://www.google.com/trends).

Yes. Run it through the Apify API or client libraries, schedule it, connect it to Make, Zapier, n8n or Google Sheets, or call it from MCP clients (see How do I send Google Trends data… above). All output fields are documented in the dataset schema.

How many keywords can I scrape at once?

Hundreds to thousands per run. 1,000 keywords take roughly 10–20 minutes, depending on Parallel lookups.

What happens if a run times out or restarts?

If a run approaches its timeout, the Actor stops starting new lookups and lists the rest as skipped (not charged), so you can run them again. If the platform restarts a run, it picks up where it left off without charging twice.

More from Meridian Labs

  • Keyword Search Volume + Google Trends: monthly search volume, CPC, competition and keyword difficulty (Google Ads figures) plus this Actor's Google Trends summary for every keyword, in one row. From $3 per 1,000 keywords.
  • Greenhouse, Lever & Ashby Jobs: open jobs from companies on six hiring systems, with salary normalised to min, max, currency and period. $2 per 1,000 jobs.

Support

Something looks wrong, or you need a field we don't return? Open an issue on the Issues tab with the input you used. We read every one.

If this saved you time, a rating helps others find it; if something's off, open an issue and we'll fix it fast.