# Changelog of Google Trends Scraper - Keywords, Regions & Trending (`zenomastro/google-trends-reliable`) Actor

- **URL**: https://apify.com/zenomastro/google-trends-reliable/changelog.md
- **Full Actor documentation**: https://apify.com/zenomastro/google-trends-reliable.md

## Changelog

### 2026-10-14

- New: several locations in one run. `geos` (e.g. `US`, `GB`, `DE`, `WORLDWIDE`; up to 50) runs every keyword group, or the trending list, once per location; each location is one search and rows carry their own `geo`. Anchor scaling uses a separate reference per location. Without `geos`, Geography works exactly as before.
- New: search terms from a public Google Sheet (`spreadsheetId`: the sheet's URL or ID; first column below the header row). A sheet that cannot be read is reported in a free error row, and a run whose only terms were in that sheet ends with a clear input error instead of analyzing the default keywords.
- New: API calls written for other Google Trends scrapers on Apify keep working: `startUrls`, `customTimeRange`, `isMultiple` and `maxItems` are understood (see "Coming from another Google Trends scraper?" in the README).
- Trending Now: `trendingLimit` now goes up to 1,000 rows per location (still one search). Related topics now include their Knowledge Graph ID (`topicMid`).
- More reliable: keyword groups that Google refuses temporarily (rate limit, HTTP 5xx) are tried once more at the end of the run, after a short pause and with a fresh Google session, before an error row is written. When the trending RSS feed is unavailable, the run returns the Trending Now list instead (with a free notice) rather than an error.
- Runs now watch their own timeout: they stop starting new searches shortly before it, keep every paid search, list what was not analyzed (and not charged) in a notice row with `skippedGroupIndexes`, and finish as succeeded instead of timing out. Request timeouts and retry pauses are shortened to the remaining time.
- Clearer input descriptions (time zone, category, region detail, retries) with examples.

### 2026-10-03

- Pricing is now per search instead of per row: a 2-keyword comparison costs $0.004 instead of ~$0.40. One search is one keyword group comparison (all its timeline, region and related rows) or one trending request; failed or empty searches and summary, notice and error rows stay free. When the spending limit is reached, the run stops and only paid searches are delivered.

### 2026-10-02

- Bulk keywords: analyze any number of terms with `searchTerms`, or run several comparisons of up to 5 terms with `keywordGroups` (up to `maxGroups` per run, default 20, max 100).
- Compare more than 5 keywords: with an `anchorKeyword`, every group is put on one shared scale and values get a `scaledValue`. The anchor's own region map and related lists are returned once, not in every batch.
- Paste Google Trends URLs: `trendsUrls` turns each trends.google.com Explore link into a comparison with the link's own terms, location, period, category and property.
- Full Trending Now list (`trendingSource: "trendingNow"`): search volume, increase %, start/end time, active status, categories and related searches, with a 4 h / 24 h / 48 h / 7 day window, category filter and active-only filter. The RSS feed stays the default; if the Trending Now data is unavailable and no filters are set, the run falls back to the RSS feed.
- Region detail: `regionResolution` (countries, regions, US metro areas or cities with coordinates), `includeLowVolumeRegions`, and `skipEmptyRegions` to stop paying for regions without data.
- Free `keyword_summary` rows (`includeKeywordSummary`): average, peak, latest complete value, change and rising/stable/falling direction per keyword.
- Interest-over-time rows now flag the last, still incomplete point with `isPartial`.
- Every Explore row now has `groupIndex`, `groupKeywords` and a `sourceUrl` that opens the same comparison on Google Trends.
- Fixed: per-keyword region maps in comparisons were labelled with the first keyword; they now show the right keyword and `sourceKeyword`.
- More reliable: a failing section (for example related queries) or keyword group is reported as a free error row and no longer discards the data already fetched. Unusual network errors are retried instead of failing the run. After a rate limit the next attempt uses a fresh Google session. Requests Google rejects as invalid (HTTP 400) fail fast instead of being retried.
- Clearer input errors: invalid geo codes, time ranges, categories and proxy settings are reported before any request is made.
- When Google returns no related topics, a free notice row now says so instead of the section silently missing.
- README: Trending RSS row counts (usually 10–20), the new options, and example row counts and costs per run.

### 2026-10-01

- More reliable runs: if Google rejects direct requests, the Actor retries through the included Apify datacenter proxy; invalid input and Google errors are reported as a clear error row instead of a failed run.
- Simpler pricing: Apify platform usage is now included in the per-result price, so you only pay per result plus a small start fee.
- Subscriber discounts on paid Apify plans: Bronze −10%, Silver −15%, Gold and higher −20% per result.
- Prefilled example input, so the first run works with one click.
- New Output tab with a results table and a JSON link for APIs and AI agents.
- README section on using the Actor from AI agents (Apify MCP server) and the REST API.
- Safer memory limits to keep runs fast and costs predictable.
- Residential and SERP proxy groups are replaced by the included datacenter proxy (your own proxy URLs still work), so the price stays all-inclusive.
- At the end of a run, the status message now links to the reviews and issues pages, so you can rate the Actor (1–5 ★) or suggest improvements.
