Google Trends Scraper
Last updated November 6, 2026
Google Trends data per search term: interest over time, by region, metro, or city, and top and rising related queries. Compare up to 5 terms, any geo, category, or property (web, news, images, YouTube, shopping). One summary row per term plus flat rows, ready for Clay or CSV.
Install
npx @mambalabsdev/mcp-google-trends-scraperEvery tool here also runs hosted, with no install at all, through Apify's MCP endpoint.
Features
- One summary row per term, plus flat rows for each date, region, and related query.
- Geo, timeframe, category, and web, news, images, YouTube, or shopping search.
- Compare up to 5 terms in a group, with metro and city levels.
- A term with no data is one free row.
- Pay per event: Term report at $0.0065.
Input
termsarrayoptionalSearch terms, up to 200 per run. A Google topic ID such as /m/0j6n6s8 also works.
geostringoptionalEmpty for worldwide, or a Google geo code such as US, DE, or US-CA.
timeframestringoptionalnow 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 two dates as YYYY-MM-DD YYYY-MM-DD.
categorystringoptionalGoogle Trends category number. 0 is all categories. The number is in the cat= part of a Trends URL.
propertystringoptionalWhich Google search to read: web, news, images, youtube, or shopping.
comparestringoptionaltrue: terms are charted together in groups of 5, on one shared scale. false: each term gets its own chart. Each term is charged either way.
outputsarrayoptionalAny of interest_over_time, interest_by_region, related_queries, related_topics. Default is the first three. See Limitations for related_topics.
region_resolutionstringoptionalauto: countries worldwide, regions inside a country. DMA is US metro areas. CITY needs a geo. COUNTRY needs an empty geo.
max_charge_usdstringoptionalOptional. The run stops before a charge that would pass this amount. Summary rows are always returned.
proxy_modestringoptionalauto (default): requests go through the Apify proxy pool, and a request the pool cannot get through is retried on residential addresses. residential: every request uses residential addresses. A reliability setting only; it does not change what you pay.
Output schema
{
"row_type": "string",
"term": "string",
"compared_with": "array",
"geo": "string",
"timeframe": "string",
"category": "integer",
"property": "string",
"explore_url": "string",
"average_interest": "integer",
"latest_interest": "integer",
"peak_interest": "integer",
"peak_date": "string",
"recent_change_pct": "number",
"points_returned": "integer",
"regions_returned": "integer",
"top_region": "string",
"related_queries_returned": "integer",
"top_related_query": "string",
"top_rising_query": "string",
"related_topics_returned": "integer",
"date": "string",
"date_label": "string",
"is_partial": "boolean",
"region_code": "string",
"region_name": "string",
"latitude": "number",
"longitude": "number",
"related_kind": "string",
"related_list": "string",
"related_term": "string",
"topic_id": "string",
"topic_type": "string",
"related_url": "string",
"value": "integer",
"formatted_value": "string",
"value_meaning": "string",
"row_status": "string",
"error_reason": "string",
"billable_events_json": "string",
"scraped_at": "string"
}Pricing
| Event | Free plan price |
|---|---|
| Term report | $0.0065 |
| Extra rows | $0.0035 |
| Actor Start | $0.002 |
Pay per event on the Apify platform. Paid Apify plans pay less per event. No subscription, no seat license.
On the Apify free plan the actor stops at $1.50 of charges a month, about 231 term reports. Any paid Apify plan removes the cap.
Limits
- Related topics: Google answers an empty list to automated clients, on every address tested when this actor was built. related_topics stays available, costs nothing extra, and the row says when none came back. Related queries are not affected.
- Google offers related topics per term only outside compare mode.
- Values are relative and sampled, as described above. They are not search volumes.
- Trending Searches, the daily list of what is trending, is not read by this actor. It reads terms you give.
- A metro level (DMA) outside the US returns no region rows: the term is still delivered with its other rows, and regions_returned is 0.
- A very rare term can return a chart with a single point. That is Google's data, and the term is charged as a term with data.
- Interest by city and metro is what Google returns for the chart: often about 200 rows, many without data, which are left out.