Open dataset

Every scored story, as a spreadsheet

The same data behind this site, as plain CSV. One file per month of events, plus one table of outlets. Free for research, journalism, and classrooms. Cite it as Divergence (divergence.news) and link back. Bulk or programmatic access is on the API.

Events by month

One row per analyzed event. Months are complete once they end; the current month grows every 30 minutes.

September 2026555 events
CSV
August 2026745 events
CSV
July 2026788 events
CSV
June 20261,011 events
CSV
May 20261,807 events
CSV
April 20261,155 events
CSV
March 2026527 events
CSV

Outlets

One row per outlet across the full archive: bias position, coverage volume, divergence, framing mix, speed, and fact record.

All outlets48 rows
CSV

Columns

events-YYYY-MM.csv
event_id, created_at, category, title, divergence_score, outlet_count, outlets, left_count, center_count, right_count, facts_confirmed, facts_claimed, facts_disputed, market_relevance, url

outlets.csv
outlet, slug, bias_label, bias_position, total_articles, total_events, avg_divergence, avg_publish_speed_hours, first_report_rate, framing_pro_action, framing_neutral, framing_critical, framing_alarmist, framing_dismissive, framing_international, contrarian_rate, fact_checks, contradict_rate, contested_rate, consensus_rate

Notes

outlets is a pipe-separated list of outlet names in the event. left_count, center_count, and right_count bucket those outlets by their bias position as listed in the outlets table. The divergence score is 0 to 100 and describes the split in coverage of that one event, not any outlet's bias. The methodology explains how each column is produced and where it can be wrong.

Files are UTF-8 with a header row. Titles are quoted. Nothing in these files identifies a reader or user.

Daily brief
The day's most divided stories, scored and summarized, in your inbox every morning. No account needed.