Output fields are never removed or redefined; changes only add. Newest first.
dailyHistory now works: with interest_over_time and a range longer than ~260 days it returns daily rows (granularity: "day", isRescaled: true) built from overlapping 250-day windows. See the README section "Daily history" for accuracy and cost.
- Start-of-run log with the estimated number of queries and a warning when the estimated rows exceed
maxRows.
- 429 backoff extended to 2, 5, 12, 25 and 45 seconds (about 90 s) before a query is given up. Failed queries are still not charged.
- Input
skipEmptyRows (default true): rows without data (value: null) are not added to the dataset. They are never charged.
run_summary.rowsWithoutData: number of rows Google returned without data.
- The final status message and
run_summary.message now report how many rows were billed and how many had no data.
- Country/region codes in
geo and trendingGeo are validated before any request (invalid geo code ...), so a typo no longer spends proxy traffic.
keywords now has a schema default (["chatgpt"]), so an empty input {} runs successfully.
- All user-facing messages (status, input errors, warnings, summary, logs) are in English.
interest_by_region rows from CITY queries carry regionCode: null (cities have no code).
- Pay-per-event: the number of billed rows was counted twice internally (the SDK also counts a synthetic dataset-item event), which made
rowsWithoutData-style summaries and maxRows wrong. Customers were charged correctly by the platform; only the Actor's own count (summary rows, status message and the maxRows cut) was off.
maxRows could be exceeded when several queries finished at the same time.
- Dependency
basic-ftp updated to fix a high-severity advisory.
First private builds: interest_over_time, interest_by_region, related_queries, related_topics (Google currently returns no data), trending_now; anchor-based comparison of more than 5 keywords.