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;