SerpApi is a general SERP scraper that can return Google Trends HTML-shaped data. Trends API is a trends-native REST product: POST https://api.trendsapi.ai/api, Bearer auth, and three modes (get_time_series, get_growth, get_top_trends) across 15-plus sources. On 2026-08-06, "serpapi" Google Search interest sat at 45 on the 0-100 scale after a 30D decline of -36.62% and a 12M gain of +45.16%. The same day, "nike" showed Google Search at 58 (-35.56% over 3M), Amazon score 58.7 with 19,433,404 recent volume, YouTube at 47 (+2.17% over 3M), and TikTok at 28.4 (+82.05% over 7D). Parse body twice; that is the most common integration mistake.

What SerpApi covers for trends, and what it does not

SerpApi's value for many teams is organic and paid SERP results. Its Google Trends engine is a side path: scrape the Trends UI, normalize HTML into JSON, and hope selectors stay stable. That path answers interest-over-time for Google Search-adjacent series. It does not give Amazon product search volume, TikTok hashtag volume, or YouTube video search interest under the same auth model.

Trends API starts from the opposite design. One endpoint accepts a mode, a source (or comma-separated sources for growth), and a keyword. Scores land on a shared 0-100 scale. Absolute volume appears when the underlying source provides it. Source docs for the Google feed live at Google Trends. Amazon shopping interest is documented at Amazon Trends.

Competitor keyword interest is measurable the same way. On 2026-08-06, "google trends" Google Search sat at 37 (-50.0% over 30D, -56.47% over 3M, -13.95% over 12M). "pytrends" sat at 12 (-80.95% over 30D, -50.0% over 12M). Those figures are search interest in the tools themselves, not a quality score, but they show how quickly unofficial Trends clients move.

Map SerpApi Google Trends calls to Trends API modes

Keep the client thin. Post JSON, parse the envelope, then parse body.

import json
import os
import urllib.request

API = "https://api.trendsapi.ai/api"
KEY = os.environ["TRENDSAPI_API_KEY"]

def trends_api(payload: dict) -> dict:
    req = urllib.request.Request(
        API,
        data=json.dumps(payload).encode(),
        headers={
            "Authorization": f"Bearer {KEY}",
            "Content-Type": "application/json",
        },
        method="POST",
    )
    envelope = json.loads(urllib.request.urlopen(req).read().decode())
    # body is a JSON string; parse it again
    return json.loads(envelope["body"])

series = trends_api({
    "mode": "get_time_series",
    "source": "google search",
    "keyword": "serpapi",
})
print(series[-1])

Live series checkpoint for "serpapi" on google search (pull date 2026-08-06): the latest weekly point is 2026-08-01 with value 45. Earlier peaks include 100 on 2026-06-20 and 97 on 2025-08-16. The series starts at 0 on 2021-08-07 and contains 261 weekly points used by growth math.

SerpApi-style need Trends API mode Example payload fields
Interest over time get_time_series source: google search, keyword
Rising or live board get_top_trends type: Google Trends, limit
Period change get_growth percent_growth: ["3M","12M"]
Shopping demand get_growth / get_time_series source: amazon
Short social spike get_growth source: tiktok, percent_growth: ["7D","14D"]

Live Google Trends board on 2026-08-06T10:01:38+00:00 listed 15 terms. Rank 1 was "perez hilton". Rank 9 was "spirit halloween". Rank 11 was "spacex stock". That board call is the closest substitute for a rising-queries dashboard without scraping.

Multi-source pull SerpApi Google Trends cannot return alone

Brand monitoring rarely stops at Google. The dated Nike walkthrough at Nike multi-source brand signals in Python shows the same keyword across four sources. Summary from the 2026-08-06 pull:

Source Recent score Window Growth Volume note
google search 58.0 3M -35.56% est. volume 19,900,000
google search 58.0 12M -14.71% est. volume 19,900,000
amazon 58.7 3M -1.34% volume 19,433,404 (-1.27%)
amazon 58.7 12M -0.51% volume 19,433,404 (-0.42%)
youtube 47.0 3M +2.17% score only
youtube 47.0 12M +4.44% score only
tiktok 28.4 7D +82.05% volume 12,038,473 (+10.6%)
tiktok 28.4 14D +115.15% volume 12,038,473 (+12.84%)

TikTok 3M and 12M presets returned date_out_of_range because available TikTok history for that keyword only ran from 2026-07-06 to 2026-08-04 (30 points). Absence of a long window is a finding; short windows still ship.

AirPods shows a commerce vs search split on the same day. Amazon score 29.7 with 6,377,787 recent volume (-15.86% over 30D, -47.71% over 12M). Google Search score 54.0 (-18.18% over 3M, +3.85% over 12M) with estimated volume 8,510,000. A SerpApi-only Google Trends job would miss the Amazon volume drop.

growth = trends_api({
    "mode": "get_growth",
    "source": "google search, amazon, youtube",
    "keyword": "nike",
    "percent_growth": ["3M", "12M"],
})
for row in growth["results"]:
    print(row.get("period"), row.get("growth"), row.get("recent_volume"))

Comma-separated sources on get_growth keep the client loop small. If one source errors, inspect that row's status instead of failing the whole job.

Quota, auth, and when to keep SerpApi

Trends API auth is Authorization: Bearer <api_key> on every POST. Pricing for capacity planning: free 100 successful requests per month, Starter 5,000, Pro 25,000, Business 100,000. Only 200 responses count.

Keep SerpApi when the job is SERP snippets, local pack, or ads copy. Switch the trends slice to Trends API when the pipeline needs stable JSON scores, growth windows, or non-Google sources. For the broader Google Trends API alternative framing, see Google Trends API alternative. For a seasonal demand-sensing cron that starts from the live board, see Spirit Halloween demand sensing in Python.

Minimal migration checklist

  1. Replace the SerpApi Google Trends engine URL with POST https://api.trendsapi.ai/api.
  2. Store TRENDSAPI_API_KEY and send Bearer auth.
  3. Map interest-over-time to get_time_series with source: "google search".
  4. Map rising or realtime boards to get_top_trends with type: "Google Trends".
  5. Add Amazon, YouTube, and TikTok with the same helper once Google Search works.
  6. Always json.loads the body string after reading the envelope.

That is the full swap for trend-shaped traffic. SERP features stay on SerpApi. Trend scores, growth, volume, and multi-source boards move to Trends API.