TikTok Shop Hot Products ranked a REMEDY Copper Peptide Complex Advanced Firming Serum SKU at #3 as of 2026-08-13T06:01:42Z. That board has no keyword time series, so the next step is to score copper peptides on Amazon, Google Shopping, Google Search, and YouTube from Python. On the 2026-08-13 pull, Amazon sat at score 67.0 with volume 758,351 on 2026-07-31 (+170.16% over 30D, +727.16% over 3M, +2210.34% over 12M). Google Shopping sat at 10.0 on 2026-08-08 (+233.33% over 7D from 3.0, -80.0% over 3M from 50.0). Google Search sat at 46.0 on 2026-08-08 (-13.21% over 7D, -36.11% over 3M, +48.39% over 12M). YouTube sat at 82.0 on 2026-08-08 (+38.98% over 7D from 59.0, +57.69% over 12M from 52.0). TikTok and Reddit keyword series returned no_data. One Bearer POST, four sources with data, double-parsed JSON.

Shared Python client

Reuse the same helper as the Python Trends API integration and the Excel Trends API monitor. requests, Bearer auth, second json.loads on body.

import json
import os
import requests

API_URL = "https://api.trendsapi.ai/api"
API_KEY = os.environ["TRENDSAPI_API_KEY"]

def trends_api(payload):
    res = requests.post(
        API_URL,
        headers={
            "Authorization": f"Bearer {API_KEY}",
            "Content-Type": "application/json",
        },
        json=payload,
        timeout=60,
    )
    res.raise_for_status()
    envelope = res.json()
    # body is a JSON string; parse it a second time
    return json.loads(envelope["body"])

Free tier is 100 successful requests per month. Starter 5,000. Pro 25,000. Business 100,000. Only HTTP 200 counts.

Step 1: read the live board

get_top_trends needs a type and no keyword. Limit 15 returned Halara Flex DayStretch work pants at rank 1, a luvamia denim skort at rank 2, the REMEDY copper peptide serum at rank 3, and a mini electric shaver at rank 4.

board = trends_api({
    "mode": "get_top_trends",
    "type": "TikTok Shop Hot Products",
    "limit": 15,
})
print(board["as_of_ts"], board["data"][2])

Normalize the long SKU title to copper peptides. Keep rank 3 and the as_of_ts 2026-08-13T06:01:42Z in the output row for audit. For a tighter Amazon SKU string, also pull copper peptide serum: Amazon tip 86.9 / volume 28,321 on 2026-07-31 (-13.1% over 30D from 100.0 / 32,607, +38.6% over 3M from 62.7 / 20,430, +48.8% over 6M from 58.4 / 19,056, +242.13% over 12M from 25.4 / 8,272). The broader copper peptides keyword carries the larger Amazon volume, so use it as the primary scorecard key and keep the serum string as a secondary check.

Step 2: Amazon growth and volume

Amazon is the absolute-volume anchor. Prefer monthly presets. On this pull, 7D and 14D returned collapsed_range. Amazon source notes live at Amazon trends.

amazon = trends_api({
    "mode": "get_growth",
    "source": "amazon",
    "keyword": "copper peptides",
    "percent_growth": ["7D", "14D", "30D", "3M", "6M", "12M"],
})
Period Status Recent date Score Volume Growth
7D collapsed_range n/a n/a n/a n/a
14D collapsed_range n/a n/a n/a n/a
30D success 2026-07-31 67.0 758,351 +170.16%
3M success 2026-07-31 67.0 758,351 +727.16%
6M success 2026-07-31 67.0 758,351 +885.29%
12M success 2026-07-31 67.0 758,351 +2210.34%

Baseline scores and volumes tell the same story: 24.8 / 280,144 on 2026-06-30, 8.1 / 91,195 on 2026-04-30, 6.8 / 77,373 on 2026-01-31, and 2.9 / 33,327 on 2025-07-31. Volume growth was +170.7% (30D), +731.57% (3M), +880.12% (6M), and +2175.49% (12M), within a few points of score growth on each successful period. Metadata on the Amazon growth call reported 49 total data points with 6 calculations attempted and all_successful false because of the two collapsed short windows. Unlike cooling phone-case categories, copper peptides Amazon is in a steep climb.

Step 3: Shopping, Search, and YouTube

Call each source separately. Shopping, Search, and YouTube tip on 2026-08-08 for this pull. Shopping field notes live at Google Shopping trends. Shopping also returned data_quality: low with a warning that the underlying signal is over 90% zero values.

for source, periods in [
    ("google shopping", ["7D", "14D", "30D", "3M", "6M", "12M"]),
    ("google search", ["7D", "14D", "30D", "3M", "6M", "12M"]),
    ("youtube", ["7D", "14D", "30D", "3M", "6M", "12M"]),
]:
    body = trends_api({
        "mode": "get_growth",
        "source": source,
        "keyword": "copper peptides",
        "percent_growth": periods,
    })
    print(source, body["results"])
Source Recent date Score 7D 14D 30D 3M 6M 12M
google shopping 2026-08-08 10.0 +233.33% baseline 0.0 -44.44% -80.0% -37.5% baseline 0.0
google search 2026-08-08 46.0 -13.21% -9.8% -28.12% -36.11% 0.0% +48.39%
youtube 2026-08-08 82.0 +38.98% -5.75% +7.89% 0.0% +18.84% +57.69%

Shopping 7D baseline was 3.0 on 2026-08-01. Shopping 14D and 12M baselines were 0.0, so skip the API 999999 percent and keep the raw tip of 10.0. Other Shopping baselines were 18.0 on 2026-07-11 (30D), 50.0 on 2026-05-09 (3M), and 16.0 on 2026-02-07 (6M). Search baselines were 53.0 on 2026-08-01, 51.0 on 2026-07-25, 64.0 on 2026-07-11, 72.0 on 2026-05-09, 46.0 on 2026-02-07, and 31.0 on 2025-08-09. YouTube baselines were 59.0 on 2026-08-01, 87.0 on 2026-07-25, 76.0 on 2026-07-11, 82.0 on 2026-05-09, 69.0 on 2026-02-07, and 52.0 on 2025-08-09. Amazon volume is exploding while Search cools over 7D through 3M and YouTube holds a high tip.

Step 4: TikTok and Reddit keyword series returned no_data

for source in ("tiktok", "reddit"):
    try:
        body = trends_api({
            "mode": "get_growth",
            "source": source,
            "keyword": "copper peptides",
            "percent_growth": ["7D", "14D", "30D"],
        })
    except Exception as exc:
        body = {"error": str(exc)}
    print(source, body)

On 2026-08-13 both TikTok and Reddit keyword series returned no_data for copper peptides. That does not contradict TikTok Shop Hot Products rank 3. The board is a live SKU ranking. The keyword series is a separate hashtag and search history. Keep both fields in the scorecard: tiktok_shop_rank=3 and tiktok_keyword=no_data.

Step 5: Amazon history for level checks

series = trends_api({
    "mode": "get_time_series",
    "source": "amazon",
    "keyword": "copper peptides",
})
print(series[-1], max(series, key=lambda p: p["value"]))

Amazon monthly history for copper peptides peaks at score 100.0 with volume 1,131,704 on 2026-02-28. Nearby 2026 points were 32.4 / 366,565 on 2026-03-31, 8.1 / 91,195 on 2026-04-30, 14.4 / 162,530 on 2026-05-31, 24.8 / 280,144 on 2026-06-30, then 67.0 / 758,351 on 2026-07-31. Pre-spike levels were tiny: 2.9 / 33,327 on 2025-07-31, 2.2 / 24,837 on 2025-01-31, 3.7 / 41,766 on 2024-07-31, and 0.7 / 8,406 on 2022-07-31. The February spike set the 100.0 ceiling. The July tip at 67.0 is the strongest month since that peak and sits far above the 2024 and 2025 baselines.

Put the scorecard in one function

def score_copper_peptides():
    board = trends_api({
        "mode": "get_top_trends",
        "type": "TikTok Shop Hot Products",
        "limit": 15,
    })
    rank = next(
        (row[0] for row in board["data"] if "copper peptide" in row[1].lower()),
        None,
    )
    sources = ["amazon", "google shopping", "google search", "youtube"]
    growth = {
        src: trends_api({
            "mode": "get_growth",
            "source": src,
            "keyword": "copper peptides",
            "percent_growth": ["30D", "3M", "12M"],
        })
        for src in sources
    }
    return {
        "as_of_ts": board["as_of_ts"],
        "tiktok_shop_rank": rank,
        "tiktok_keyword": "no_data",
        "reddit_keyword": "no_data",
        "growth": growth,
    }

Read the scorecard as three layers. Layer one is TikTok Shop rank 3 at 2026-08-13T06:01:42Z with TikTok and Reddit keyword no_data. Layer two is the Amazon climb: +170.16% over 30D to 758,351 volume, plus YouTube +38.98% over 7D to tip 82.0. Layer three is the Search cool-off: -13.21% over 7D and -36.11% over 3M from 72.0, against a still-positive +48.39% over 12M from 31.0. A buy decision that only reads rank 3 is incomplete. A buy decision that only reads Search is also incomplete. Keep all three layers in one JSON object and threshold on Amazon volume plus YouTube tip.

For a workbook that refreshes these rows on a timer without a Python host, use the Excel Trends API Office Scripts client. For Apps Script grids, see Google Sheets Trends API.