A Google Trends scraper works until it does not, and the failure is never scheduled. Cookies expire, tokens rotate, the widget layout shifts, or the request budget runs out mid backfill. The data on the other side is simple: a dated series. Trends API returns that series as JSON from one POST, with a Bearer key and no browser, session, or page structure in the loop. This page is for teams replacing a scraper that already exists and already breaks. The vendor-shaped comparison sits on SerpApi alternative.

What the scraper was really renting

Every scraper rents four things from the Trends website: a session, a token, a layout, and silence about rate limits. Rent is due without warning. The classic symptom list (empty responses, sudden 429s, charts that stop at odd dates) is catalogued on Google Trends API 429. None of those are data problems. They are tenancy problems.

The contract that replaces it

POST https://api.trendsapi.ai/api
Authorization: Bearer <api_key>

{"mode":"get_time_series","source":"google search","keyword":"cold plunge"}

The envelope is {"statusCode": int, "body": string}; parse body a second time and store the rows. History, growth, and the live board are three modes of this one call, so the scraper's second and third scripts retire with the first.

What migration actually touches

Storage, charts, and alerts downstream stay. Only collection changes: out goes the headless browser or token client, in goes one request per keyword and source. Teams coming from the best known scraper client get the step list on Migrate from pytrends.

Past Google

A scraper is built per site, so TikTok or Amazon means a second scraper. The same key here reads 16 keyword sources and 24 live feeds on one 0-100 scale; the second platform is a source string. The full list sits on the sources reference, and caps sit on pricing.