Trend Pulse US · updated Oct 22, 12:06 AM (Seattle)

What the US is searching for

Latest snapshot: Past 24 hours. Every number comes from a SQL query you can open below each chart.

Trends631
Still trending184
Searches (at least)6.0M
Avg. time trending3.9 h
New topics631not seen on earlier days
View SQL
SELECT COUNT(*)                                   AS trends,
       SUM(t.is_active)                           AS still_trending,
       SUM(t.volume_min)                          AS searches_at_least,
       ROUND(AVG(CASE WHEN t.ended_utc IS NOT NULL
             THEN (julianday(t.ended_utc) - julianday(t.started_utc)) * 24 END), 1)
                                                  AS avg_hours_trending,
       SUM(NOT EXISTS (SELECT 1 FROM trend_rows o JOIN runs r ON r.id = o.run_id
                       WHERE o.topic_id = t.topic_id AND r.captured_date < x.captured_date))
                                                  AS new_topics
FROM trend_rows t
JOIN runs x ON x.id = t.run_id
WHERE t.run_id = (SELECT id FROM latest_runs WHERE time_window = :window);

Biggest trends right now

View SQL
SELECT tp.id AS topic_id, tp.name AS topic, t.volume_label, t.volume_min,
       t.started_utc, t.ended_utc, t.is_active
FROM trend_rows t
JOIN topics tp ON tp.id = t.topic_id
WHERE t.run_id = (SELECT id FROM latest_runs WHERE time_window = :window)
ORDER BY t.volume_min DESC, t.rank
LIMIT 10;

Search volume

How many trends reach each level Google reports (e.g. “10K+”).

View SQL
SELECT volume_label, volume_min, COUNT(*) AS trends
FROM trend_rows
WHERE run_id = (SELECT id FROM latest_runs WHERE time_window = :window) AND volume_min IS NOT NULL
GROUP BY volume_label, volume_min
ORDER BY volume_min;

How long trends last

Finished trends only.

View SQL
SELECT CASE
         WHEN hours < 2  THEN '1. under 2 h'
         WHEN hours < 6  THEN '2. 2-6 h'
         WHEN hours < 12 THEN '3. 6-12 h'
         WHEN hours < 24 THEN '4. 12-24 h'
         WHEN hours < 48 THEN '5. 1-2 days'
         ELSE                 '6. over 2 days'
       END AS duration, COUNT(*) AS trends
FROM (SELECT (julianday(ended_utc) - julianday(started_utc)) * 24 AS hours
      FROM trend_rows
      WHERE run_id = (SELECT id FROM latest_runs WHERE time_window = :window) AND ended_utc IS NOT NULL AND started_utc IS NOT NULL)
GROUP BY duration
ORDER BY duration;

When trends start

Hour of day, Seattle time.

View SQL
SELECT CAST(strftime('%H', started_utc) AS INTEGER) AS utc_hour, COUNT(*) AS trends
FROM trend_rows
WHERE run_id = (SELECT id FROM latest_runs WHERE time_window = :window) AND started_utc IS NOT NULL
GROUP BY utc_hour
ORDER BY utc_hour;

Trends per day

Grows by one point every day the scraper runs.

View SQL
SELECT r.captured_date AS day, COUNT(*) AS trends, SUM(t.volume_min) AS searches_at_least
FROM runs r
JOIN trend_rows t ON t.run_id = r.id
WHERE r.time_window = 'Past 24 hours'
  AND r.id = (SELECT MAX(r2.id) FROM runs r2               -- one snapshot per day
              WHERE r2.time_window = r.time_window AND r2.captured_date = r.captured_date)
GROUP BY r.captured_date
ORDER BY r.captured_date;