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

What the US is searching for

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

Trends3,279in this snapshot
Still trending256no end time yet
Searches75.1Mat least, all trends
Avg. time trending9.7 hfinished trends
New topics3,279not 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;