By county Adair County: Zach Lahn 56.6%, Rob Sand 43.3% · 93.9% reporting Adams County: Zach Lahn 58.4%, Rob Sand 41.4% · 92.3% reporting Allamakee County: Zach Lahn 55.8%, Rob Sand 44.2% · 94.3% reporting Appanoose County: Zach Lahn 58.4%, Rob Sand 41.5% · 92.6% reporting Audubon County: Zach Lahn 56.2%, Rob Sand 43.6% · 93.7% reporting Benton County: Zach Lahn 54.0%, Rob Sand 45.8% · 97.8% reporting Black Hawk County: Rob Sand 63.3%, Zach Lahn 36.6% · 99% reporting Boone County: Rob Sand 53.1%, Zach Lahn 46.7% · 99% reporting Bremer County: Rob Sand 51.4%, Zach Lahn 48.5% · 99% reporting Buchanan County: Rob Sand 51.4%, Zach Lahn 48.5% · 97.5% reporting Buena Vista County: Zach Lahn 51.8%, Rob Sand 48.0% · 98.6% reporting Butler County: Zach Lahn 59.5%, Rob Sand 40.5% · 96.9% reporting Calhoun County: Zach Lahn 60.4%, Rob Sand 39.5% · 89.5% reporting Carroll County: Zach Lahn 58.5%, Rob Sand 41.4% · 99% reporting Cass County: Zach Lahn 60.8%, Rob Sand 39.2% · 92.7% reporting Cedar County: Rob Sand 51.3%, Zach Lahn 48.5% · 99% reporting Cerro Gordo County: Rob Sand 52.8%, Zach Lahn 47.0% · 98.7% reporting Cherokee County: Zach Lahn 61.6%, Rob Sand 38.2% · 94.5% reporting Chickasaw County: Zach Lahn 53.7%, Rob Sand 46.1% · 94.6% reporting Clarke County: Zach Lahn 55.9%, Rob Sand 44.0% · 94.4% reporting Clay County: Zach Lahn 60.0%, Rob Sand 39.9% · 94.2% reporting Clayton County: Zach Lahn 54.7%, Rob Sand 45.2% · 94.1% reporting Clinton County: Rob Sand 52.2%, Zach Lahn 47.6% · 96.2% reporting Crawford County: Zach Lahn 56.6%, Rob Sand 43.2% · 94.8% reporting Dallas County: Rob Sand 59.4%, Zach Lahn 40.5% · 99% reporting Davis County: Zach Lahn 61.5%, Rob Sand 38.4% · 89.4% reporting Decatur County: Zach Lahn 59.8%, Rob Sand 40.0% · 89.7% reporting Delaware County: Zach Lahn 57.1%, Rob Sand 42.8% · 97.2% reporting Des Moines County: Rob Sand 53.9%, Zach Lahn 45.9% · 96.8% reporting Dickinson County: Zach Lahn 61.0%, Rob Sand 38.8% · 99% reporting Dubuque County: Rob Sand 56.5%, Zach Lahn 43.4% · 99% reporting Emmet County: Zach Lahn 60.3%, Rob Sand 39.6% · 94.3% reporting Fayette County: Zach Lahn 50.4%, Rob Sand 49.3% · 96.1% reporting Floyd County: Zach Lahn 51.7%, Rob Sand 48.3% · 96.6% reporting Franklin County: Zach Lahn 59.0%, Rob Sand 40.9% · 96.8% reporting Fremont County: Zach Lahn 60.9%, Rob Sand 38.9% · 90.6% reporting Greene County: Zach Lahn 52.1%, Rob Sand 47.8% · 95.1% reporting Grundy County: Zach Lahn 59.0%, Rob Sand 40.8% · 99% reporting Guthrie County: Zach Lahn 56.5%, Rob Sand 43.4% · 97.5% reporting Hamilton County: Zach Lahn 52.3%, Rob Sand 47.6% · 94.4% reporting Hancock County: Zach Lahn 65.9%, Rob Sand 34.0% · 96.5% reporting Hardin County: Zach Lahn 55.4%, Rob Sand 44.5% · 92.8% reporting Harrison County: Zach Lahn 61.6%, Rob Sand 38.3% · 92.6% reporting Henry County: Zach Lahn 55.4%, Rob Sand 44.5% · 96.5% reporting Howard County: Zach Lahn 55.0%, Rob Sand 45.0% · 98.7% reporting Humboldt County: Zach Lahn 64.8%, Rob Sand 35.1% · 92.1% reporting Ida County: Zach Lahn 66.5%, Rob Sand 33.4% · 92.5% reporting Iowa County: Zach Lahn 52.2%, Rob Sand 47.6% · 99% reporting Jackson County: Zach Lahn 53.3%, Rob Sand 46.6% · 98.8% reporting Jasper County: Rob Sand 50.0%, Zach Lahn 49.8% · 99% reporting Jefferson County: Rob Sand 57.0%, Zach Lahn 42.9% · 97.8% reporting Johnson County: Rob Sand 78.6%, Zach Lahn 21.3% · 99% reporting Jones County: Zach Lahn 50.0%, Rob Sand 49.8% · 96.2% reporting Keokuk County: Zach Lahn 60.8%, Rob Sand 39.0% · 93.2% reporting Kossuth County: Zach Lahn 63.1%, Rob Sand 36.8% · 94.1% reporting Lee County: Rob Sand 50.1%, Zach Lahn 49.8% · 92.5% reporting Linn County: Rob Sand 65.6%, Zach Lahn 34.3% · 99% reporting Louisa County: Zach Lahn 56.3%, Rob Sand 43.7% · 97.3% reporting Lucas County: Zach Lahn 61.2%, Rob Sand 38.7% · 91.8% reporting Lyon County: Zach Lahn 79.9%, Rob Sand 20.0% · 97.1% reporting Madison County: Zach Lahn 54.0%, Rob Sand 45.9% · 95.8% reporting Mahaska County: Zach Lahn 64.6%, Rob Sand 35.3% · 91.8% reporting Marion County: Zach Lahn 57.6%, Rob Sand 42.2% · 99% reporting Marshall County: Rob Sand 56.5%, Zach Lahn 43.4% · 99% reporting Mills County: Zach Lahn 60.6%, Rob Sand 39.3% · 95.8% reporting Mitchell County: Zach Lahn 54.7%, Rob Sand 45.3% · 95% reporting Monona County: Zach Lahn 60.9%, Rob Sand 38.8% · 93.3% reporting Monroe County: Zach Lahn 60.3%, Rob Sand 39.6% · 94.4% reporting Montgomery County: Zach Lahn 60.3%, Rob Sand 39.6% · 92.4% reporting Muscatine County: Rob Sand 55.9%, Zach Lahn 43.5% · 99% reporting O'Brien County: Zach Lahn 70.7%, Rob Sand 29.1% · 92.3% reporting Osceola County: Zach Lahn 74.0%, Rob Sand 25.7% · 91.8% reporting Page County: Zach Lahn 60.8%, Rob Sand 39.1% · 88.8% reporting Palo Alto County: Zach Lahn 62.4%, Rob Sand 37.5% · 99% reporting Plymouth County: Zach Lahn 67.2%, Rob Sand 32.7% · 99% reporting Pocahontas County: Zach Lahn 64.7%, Rob Sand 35.3% · 90.8% reporting Polk County: Rob Sand 67.1%, Zach Lahn 32.8% · 99% reporting Pottawattamie County: Zach Lahn 50.2%, Rob Sand 49.8% · 96.3% reporting Poweshiek County: Rob Sand 53.6%, Zach Lahn 46.2% · 97.1% reporting Ringgold County: Zach Lahn 62.2%, Rob Sand 37.7% · 95.6% reporting Sac County: Zach Lahn 63.4%, Rob Sand 36.5% · 96.5% reporting Scott County: Rob Sand 58.3%, Zach Lahn 41.6% · 99% reporting Shelby County: Zach Lahn 63.2%, Rob Sand 36.7% · 95% reporting Sioux County: Zach Lahn 79.8%, Rob Sand 20.1% · 96.8% reporting Story County: Rob Sand 67.2%, Zach Lahn 32.7% · 97.4% reporting Tama County: Rob Sand 50.5%, Zach Lahn 49.3% · 99% reporting Taylor County: Zach Lahn 65.2%, Rob Sand 34.6% · 88.1% reporting Union County: Zach Lahn 52.7%, Rob Sand 47.1% · 94.2% reporting Van Buren County: Zach Lahn 65.7%, Rob Sand 34.2% · 92.9% reporting Wapello County: Zach Lahn 50.0%, Rob Sand 50.0% · 92.5% reporting Warren County: Rob Sand 52.8%, Zach Lahn 47.1% · 99% reporting Washington County: Zach Lahn 52.0%, Rob Sand 47.9% · 99% reporting Wayne County: Zach Lahn 63.1%, Rob Sand 36.8% · 87.8% reporting Webster County: Zach Lahn 51.7%, Rob Sand 48.2% · 91.7% reporting Winnebago County: Zach Lahn 58.3%, Rob Sand 41.6% · 95.4% reporting Winneshiek County: Rob Sand 58.9%, Zach Lahn 41.0% · 99% reporting Woodbury County: Rob Sand 51.0%, Zach Lahn 48.8% · 97% reporting Worth County: Zach Lahn 54.9%, Rob Sand 45.0% · 98.2% reporting Wright County: Zach Lahn 55.0%, Rob Sand 44.7% · 93.3% reporting Darker = wider margin (under 5, 5–15, 15–30, 30+ points). Republican led Democrat ledHover a county for its numbers. County-by-county numbers (99 counties) County Rob Sand Zach Lahn Reporting Adair 1,383 (43.3%) 1,809 (56.6%) 93.9% Adams 681 (41.4%) 960 (58.4%) 92.3% Allamakee 2,569 (44.2%) 3,242 (55.8%) 94.3% Appanoose 2,032 (41.5%) 2,858 (58.4%) 92.6% Audubon 1,088 (43.6%) 1,403 (56.2%) 93.7% Benton 5,478 (45.8%) 6,456 (54.0%) 97.8% Black Hawk 33,454 (63.3%) 19,325 (36.6%) 99% Boone 6,742 (53.1%) 5,926 (46.7%) 99% Bremer 6,199 (51.4%) 5,856 (48.5%) 99% Buchanan 4,448 (51.4%) 4,200 (48.5%) 97.5% Buena Vista 2,916 (48.0%) 3,146 (51.8%) 98.6% Butler 2,581 (40.5%) 3,792 (59.5%) 96.9% Calhoun 1,513 (39.5%) 2,318 (60.4%) 89.5% Carroll 3,759 (41.4%) 5,314 (58.5%) 99% Cass 2,111 (39.2%) 3,273 (60.8%) 92.7% Cedar 4,476 (51.3%) 4,232 (48.5%) 99% Cerro Gordo 9,788 (52.8%) 8,725 (47.0%) 98.7% Cherokee 1,845 (38.2%) 2,978 (61.6%) 94.5% Chickasaw 2,274 (46.1%) 2,649 (53.7%) 94.6% Clarke 1,543 (44.0%) 1,962 (55.9%) 94.4% Clay 2,690 (39.9%) 4,050 (60.0%) 94.2% Clayton 3,326 (45.2%) 4,025 (54.7%) 94.1% Clinton 9,604 (52.2%) 8,766 (47.6%) 96.2% Crawford 2,184 (43.2%) 2,863 (56.6%) 94.8% Dallas 33,272 (59.4%) 22,664 (40.5%) 99% Davis 1,145 (38.4%) 1,832 (61.5%) 89.4% Decatur 1,129 (40.0%) 1,688 (59.8%) 89.7% Delaware 3,434 (42.8%) 4,578 (57.1%) 97.2% Des Moines 8,088 (53.9%) 6,893 (45.9%) 96.8% Dickinson 3,704 (38.8%) 5,824 (61.0%) 99% Dubuque 24,674 (56.5%) 18,979 (43.4%) 99% Emmet 1,441 (39.6%) 2,193 (60.3%) 94.3% Fayette 3,891 (49.3%) 3,980 (50.4%) 96.1% Floyd 2,939 (48.3%) 3,144 (51.7%) 96.6% Franklin 1,582 (40.9%) 2,284 (59.0%) 96.8% Fremont 1,045 (38.9%) 1,636 (60.9%) 90.6% Greene 1,804 (47.8%) 1,966 (52.1%) 95.1% Grundy 2,371 (40.8%) 3,429 (59.0%) 99% Guthrie 2,293 (43.4%) 2,982 (56.5%) 97.5% Hamilton 2,827 (47.6%) 3,102 (52.3%) 94.4% Hancock 1,580 (34.0%) 3,067 (65.9%) 96.5% Hardin 2,975 (44.5%) 3,709 (55.4%) 92.8% Harrison 2,246 (38.3%) 3,617 (61.6%) 92.6% Henry 3,408 (44.5%) 4,243 (55.4%) 96.5% Howard 1,689 (45.0%) 2,062 (55.0%) 98.7% Humboldt 1,354 (35.1%) 2,501 (64.8%) 92.1% Ida 931 (33.4%) 1,857 (66.5%) 92.5% Iowa 3,764 (47.6%) 4,125 (52.2%) 99% Jackson 3,975 (46.6%) 4,541 (53.3%) 98.8% Jasper 8,198 (50.0%) 8,172 (49.8%) 99% Jefferson 4,001 (57.0%) 3,009 (42.9%) 97.8% Johnson 59,064 (78.6%) 15,976 (21.3%) 99% Jones 4,306 (49.8%) 4,326 (50.0%) 96.2% Keokuk 1,544 (39.0%) 2,408 (60.8%) 93.2% Kossuth 2,458 (36.8%) 4,213 (63.1%) 94.1% Lee 6,035 (50.1%) 6,008 (49.8%) 92.5% Linn 70,086 (65.6%) 36,597 (34.3%) 99% Louisa 1,719 (43.7%) 2,214 (56.3%) 97.3% Lucas 1,342 (38.7%) 2,123 (61.2%) 91.8% Lyon 1,083 (20.0%) 4,324 (79.9%) 97.1% Madison 3,601 (45.9%) 4,238 (54.0%) 95.8% Mahaska 2,977 (35.3%) 5,457 (64.6%) 91.8% Marion 6,865 (42.2%) 9,374 (57.6%) 99% Marshall 8,259 (56.5%) 6,332 (43.4%) 99% Mills 2,450 (39.3%) 3,785 (60.6%) 95.8% Mitchell 2,011 (45.3%) 2,430 (54.7%) 95% Monona 1,350 (38.8%) 2,117 (60.9%) 93.3% Monroe 1,243 (39.6%) 1,892 (60.3%) 94.4% Montgomery 1,488 (39.6%) 2,265 (60.3%) 92.4% Muscatine 8,763 (55.9%) 6,828 (43.5%) 99% O'Brien 1,638 (29.1%) 3,982 (70.7%) 92.3% Osceola 612 (25.7%) 1,763 (74.0%) 91.8% Page 2,060 (39.1%) 3,205 (60.8%) 88.8% Palo Alto 1,514 (37.5%) 2,516 (62.4%) 99% Plymouth 3,610 (32.7%) 7,413 (67.2%) 99% Pocahontas 973 (35.3%) 1,785 (64.7%) 90.8% Polk 147,973 (67.1%) 72,324 (32.8%) 99% Pottawattamie 16,714 (49.8%) 16,838 (50.2%) 96.3% Poweshiek 4,352 (53.6%) 3,756 (46.2%) 97.1% Ringgold 806 (37.7%) 1,329 (62.2%) 95.6% Sac 1,568 (36.5%) 2,725 (63.4%) 96.5% Scott 42,959 (58.3%) 30,705 (41.6%) 99% Shelby 1,832 (36.7%) 3,151 (63.2%) 95% Sioux 3,092 (20.1%) 12,305 (79.8%) 96.8% Story 28,386 (67.2%) 13,801 (32.7%) 97.4% Tama 3,599 (50.5%) 3,516 (49.3%) 99% Taylor 768 (34.6%) 1,447 (65.2%) 88.1% Union 2,230 (47.1%) 2,493 (52.7%) 94.2% Van Buren 963 (34.2%) 1,852 (65.7%) 92.9% Wapello 5,591 (50.0%) 5,592 (50.0%) 92.5% Warren 14,649 (52.8%) 13,070 (47.1%) 99% Washington 4,626 (47.9%) 5,022 (52.0%) 99% Wayne 845 (36.8%) 1,449 (63.1%) 87.8% Webster 6,121 (48.2%) 6,563 (51.7%) 91.7% Winnebago 1,871 (41.6%) 2,619 (58.3%) 95.4% Winneshiek 6,137 (58.9%) 4,272 (41.0%) 99% Woodbury 17,205 (51.0%) 16,467 (48.8%) 97% Worth 1,542 (45.0%) 1,879 (54.9%) 98.2% Wright 2,002 (44.7%) 2,464 (55.0%) 93.3%
Campaign money · 2025–2026 cycle Totals for the two-year cycle from each campaign's own reports. State totals are cash contributions; in-kind gifts are listed on the candidate page. Names are matched across sources, so double-check against the original filing.
Races and results: civicAPI and the Iowa Secretary of State. State campaign finance: summary totals from reports filed with the Iowa Ethics & Campaign Disclosure Board . Federal: the Federal Election Commission .