Boundary Atlas

Pennsylvania's 16th congressional district (PA-16)

Pennsylvania's 16th congressional district (PA-16) covers parts or all of Butler County, Crawford County, Erie County, Lawrence County, Mercer County and Venango County, and 133 ZIP codes (106 wholly inside it). Its 2020 population was 764,865. This is the map in force for the November 3, 2026 election.

764,865residents (2020 Census)
6counties
133ZIP codes
487voting precincts

Who represents PA-16

OfficeMemberContact
U.S. Representative (PA-16)Mike Kelly (R)202-225-5406
U.S. SenatorDavid McCormick (R)202-224-6324 · contact form
U.S. SenatorJohn Fetterman (D)202-224-4254 · contact form

Officials serving now (members of Congress until January 3, 2027). Sources: Members of Congress: the @unitedstates project, congress-legislators (CC0).

Counties

CountyShare of the county's residents in PA-16
Butler County100%
Crawford County100%
Erie County100%
Lawrence County100%
Mercer County100%
Venango County39%

ZIP codes

Percentages mark ZIPs only partly in PA-16: the share of that ZIP's residents inside it.

Towns

Adams township, Albion borough, Allegheny township, Amity township, Athens township, Barkeyville borough, Beaver township, Bessemer borough, Bloomfield township, Blooming Valley borough, Brady township, Bruin borough, Buffalo township, Butler city, Butler township, Callery borough, Cambridge Springs borough, Cambridge township, Canal township, Center township, Centerville borough, Cherry Valley borough, Cherry township, Chicora borough, Clark borough, Clay township, Clearfield township, Clinton township, Cochranton borough, Concord township, Concord township, Conneaut Lake borough, Conneaut township, Conneaut township, Conneautville borough, Connoquenessing borough, Connoquenessing township, Coolspring township, Cooperstown borough and Corry city and others.

Get this in your AI agent

Your agent can draw every precinct in PA-16, or list them with population shares (related_geographies). Add https://boundarymcp.com/mcp to Claude, ChatGPT, Cursor or Codex (free, no key; how), then:

get_boundaries(id="us:congressional_district:4216", children_level="precinct", include_districts=True)