Boundary Atlas

Michigan's 4th congressional district (MI-04)

Michigan's 4th congressional district (MI-04) covers parts or all of Allegan County, Van Buren County, Kalamazoo County, Calhoun County, Ottawa County and Berrien County, and 75 ZIP codes (43 wholly inside it). Its 2020 population was 774,600. This is the map in force for the November 3, 2026 election.

774,600residents (2020 Census)
6counties
75ZIP codes
264voting precincts

Who represents MI-04

OfficeMemberContact
U.S. Representative (MI-04)Bill Huizenga (R)202-225-4401
U.S. SenatorElissa Slotkin (D)202-224-4822
U.S. SenatorGary C. Peters (D)202-224-6221 · 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 MI-04
Allegan County100%
Van Buren County100%
Kalamazoo County93%
Calhoun County65%
Ottawa County63%
Berrien County38%

ZIP codes

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

Towns

Alamo township, Allegan city, Allegan township, Almena township, Antwerp township, Arlington township, Bainbridge township, Bangor city, Bangor township, Battle Creek city, Bedford charter township, Benton Harbor city, Benton charter township, Blendon township, Bloomingdale township, Casco township, Charleston township, Cheshire township, Climax township, Clyde township, Coloma charter township, Coloma city, Columbia township, Comstock charter township, Cooper charter township, Covert township, Decatur township, Dorr township, Douglas city, Emmett charter township, Fennville city, Fillmore township, Galesburg city, Ganges township, Geneva township, Gobles city, Gun Plain township, Hagar township, Hamilton township and Hartford city and others.

Get this in your AI agent

Your agent can draw every precinct in MI-04, 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:2604", children_level="precinct", include_districts=True)