# Changelog of Google Trends Scraper — Interest, Rising Queries & Trending (`foxlabs/google-trends-scraper`) Actor

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

## Changelog

### 0.1.4 — 2026-09-28

- Pricing: $4 per 1,000 search terms (one `keyword` event per term with data; interest by region and related queries included) and $1 per 1,000 Trending Now trends (`trend` event), plus Apify's Actor start event. Error and empty rows stay free. README pricing section filled in. No code change.

### 0.1.3 — 2026-09-28

Fixes from an independent review of the README against platform runs (90 claims checked).

- **Locations and categories are checked before the run**, against the lists trends.google.com itself uses (250 countries, 3,130 subregions in 192 countries, 301 US metro codes, 1,132 categories). An unknown code such as `US-ZZ` or category `999999` used to reach Google, and the run ended "succeeded" with only `failed: … HTTP 400.` in the row. Now the run stops before any request, marked as failed, and its status message says what is wrong and what valid codes look like.
- **US metro codes work in `geoCode`**, for example `US-NY-501` (New York): Google answers with the metro's chart and a city breakdown. They used to be refused as "Unknown location".
- **If Google still refuses a query (HTTP 400)**, its row names the location, category and time range to check. When no query returned data because of invalid input, the run is marked as failed with that reason.
- **Every run ends with a status message** that sums up the result, for example "Done: 7 of 8 queries returned data (1 empty; reasons in SOURCE\_REPORT)."
- **Your proxy setting is respected.** A proxy switched off in the input was silently replaced by Apify residential proxy; it now stays off (with a warning in the log, since the Actor then cannot switch IP). Without a proxy setting at all, residential proxy is used as before. `SOURCE_REPORT` records which proxy a run used.
- A line with the same terms as an earlier line is now logged as fetched once (it was already listed as "skipped" in `SOURCE_REPORT`).
- README corrected:
  - `trendId` stays the same while Google keeps the trend's title. Renamed or merged trends get a new ID (2 of 665 shared trends in two runs 15 minutes apart).
  - Trending Now `relatedQueries` can hold more than 25 searches (up to 68 seen).
  - `EIGHT_MINUTE` step for the past day; `null` values where Google has no data; `isBreakout` exists on rising queries only.
  - The 720-trend run used `maxTrendsPerGeo: 1000` (the default is 100).
  - The 429 cookie exchange happens on the keyword endpoints only.
  - The link check compared `newsArticles[].title` (3 bot checks and 1 TLS error blocked the others).
  - `peak` ignores the unfinished last point.
  - Platform times of 0.1.2: 16.8 s at 1 GB and 18.1 s at 512 MB for the input that took 72 s on 0.1.1.
  - The 0.1.2 note below said the stability check covered two runs 50 minutes apart; it was 58 minutes.

### 0.1.2 — 2026-09-28

- **New field `trendId` on every Trending Now row:** a stable ID of the trend period (country + search + start time), for example `US-1656ac0022a1`. The same search can trend twice in one window — "astros" in the US trended 02:40-05:30 and again 20:50-23:00 UTC on 2026-09-27 — and each period is its own row with its own ID. The start time did not change between runs (636 of 636 trends in two runs 58 minutes apart), so the ID can be used to merge scheduled runs; it changes when Google renames or merges a trend (see 0.1.3). Existing fields are unchanged.
- **Trending Now rows are written one country at a time** instead of one row at a time. A 720-trend platform run of 0.1.1 took 72 seconds for 3 requests; on 0.1.2 the same input took 16.8 seconds (see 0.1.3).
- If a run's maximum total charge cuts a Trending Now list, `SOURCE_REPORT` says how many rows were delivered.
- README: performance and data-quality figures from platform runs, with run IDs.

### 0.1 — 2026-09-28

First version. Store title: "Google Trends Scraper — Interest, Rising Queries & Trending" (Apify allows 63 characters; this batch version is not the real-time Standby API listing, so the title does not say "API").

- **Keyword analysis:** interest over time, interest by region (countries, regions, cities with coordinates, US metro areas) and related queries (top and rising, "Breakout" flagged) for queries of 1 to 5 compared terms, with a per-term summary: Google's average, latest complete value, peak and 4-point momentum. Any location (250 countries or a subregion code), time range (past hour to 2004-present, or custom dates), category and search type (web, images, news, YouTube, Shopping).
- **Trending Now:** the full list Google shows for a country (for example 432 trends in the US over 24 hours in a test run) with search volume, growth, start and end time, active flag, category, the searches behind the trend and the news stories Google shows for it (5 per trend by default; up to 17 seen per trend in a test).
- Works without a browser through Apify residential proxy: the first 429 of a connection is retried with the cookie Google sends, repeated refusals move to a new IP.
- A Trending Now list that comes back without any news when news were asked for is fetched again once.
- Invalid input stops the run with the reason in its status message; a bad query line or country leaves a free row with the reason and the run continues.
- Every run writes `SOURCE_REPORT` (status per query or country, requests, rate limits, proxy sessions, bytes).
- Batch and Standby (real-time HTTP API) modes share the same code and pay-per-event events.
