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;