Bill O'Brien
Last held office: New Hampshire House of Representatives, District 505 (2012–2016). Lost the 2026 race for New Hampshire House of Representatives: Hillsborough 40.
Last office: New Hampshire House of Representatives, District 505
- Last margin
- −3.3
- Lost 2020
Source: Wikidata, congress-legislators and Open States; 99chambers legislative records
Career
Offices held, and every time O'Brien was on a ballot. Filled marks are general elections won; hollow marks are primaries; an orange outline is a loss.
Source: 99chambers results archive (MEDSL, Klarner, state election offices)
Every race O'Brien has run
Baseline: how the seat voted for president in the same or nearest year. Running ahead of it means O'Brien won voters the party’s presidential nominee did not; primaries have no baseline.
Source: 99chambers results archive; 2026: civicAPI (unofficial)Updated Nov 8, 2026, 7:01 PM ET
Seats O'Brien has held
- New Hampshire House of Representatives, District 505 · 2012–2016
- New Hampshire House of Representatives, District HILLSBOROUGH 4 · 2008–2012
- New Hampshire House of Representatives, District HILLSBOROUGH 4 · 2004–2006
Source: 99chambers results archive
Who O'Brien has run against
- Democratic (D) · 2026 general, lost
- Michael B. Obrien Sr. (D) · 2020 election, lost
- David Woodbury (D) · 2014 election, won
- Frank R. Holden (R) · 2010 election, won
- Bob Mead (R) · 2008 election, won
- Linda T. Foster (D) · 2006 election, lost
Source: 99chambers results archive; 2026: civicAPI (unofficial)