RightDataUSA

2020-11-03 Senatorial Election Results for North Carolina (Class 2)


Election Year:
Election Type:
Runoff Election: No Yes
State:
County:
Congressional District:
(House elections)
Show Precincts:
(Statewide elections)
No Yes


Map Data to Display: Vote Margin
Winner
Vote Margin %
Total Votes
District Boundaries



Click on a county in the table or the map to see demographic data for that county.

County Turnout Thom Tillis*
(R)
Cal Cunningham
(D)
Shannon Bray
(Libertarian)
Kevin Hayes
(Constitution)
Other Margin TOTAL
Alamance63%44,24651.7%38,03844.5%2,3022.7%9221.1%00.0%6,208 85,508
Alexander69%14,73973.5%4,28721.4%5632.8%4552.3%00.0%10,452 20,044
Alleghany65%4,08268.0%1,58726.4%1923.2%1462.4%00.0%2,495 6,007
Anson64%4,98144.8%5,75651.8%2041.8%1671.5%00.0%-775 11,108
Ashe71%10,61967.9%4,27927.4%4572.9%2811.8%00.0%6,340 15,636
Avery61%6,86573.7%2,07922.3%2462.6%1311.4%00.0%4,786 9,321
Beaufort73%15,44859.3%9,43936.2%7062.7%4531.7%00.0%6,009 26,046
Bertie68%3,59737.1%5,82560.1%1581.6%1141.2%00.0%-2,228 9,694
Bladen72%8,96753.1%7,28043.1%3992.4%2351.4%00.0%1,687 16,881
Brunswick71%52,97159.4%32,18036.1%2,8813.2%1,1701.3%00.0%20,791 89,202
Buncombe72%60,68837.9%92,66457.9%5,0543.2%1,6361.0%00.0%-31,976 160,042
Burke62%28,93465.5%13,10829.7%1,3093.0%8191.9%00.0%15,826 44,170
Cabarrus66%61,23152.7%48,88642.1%4,2613.7%1,7241.5%00.0%12,345 116,102
Caldwell66%29,97170.8%10,28824.3%1,2993.1%7991.9%00.0%19,683 42,357
Camden69%4,18171.6%1,40324.0%1833.1%711.2%00.0%2,778 5,838
Carteret74%28,49267.5%11,82328.0%1,3123.1%6011.4%00.0%16,669 42,228
Caswell65%6,64355.5%4,91641.1%2782.3%1241.0%00.0%1,727 11,961
Catawba65%54,00465.2%24,84530.0%2,5503.1%1,4841.8%00.0%29,159 82,883
Chatham76%21,03943.5%25,69753.2%1,1712.4%4310.9%00.0%-4,658 48,338
Cherokee66%12,04874.0%3,58922.0%4082.5%2411.5%00.0%8,459 16,286
Chowan70%4,35356.6%3,12440.6%1391.8%730.9%00.0%1,229 7,689
Clay72%4,89771.9%1,67624.6%1402.1%981.4%00.0%3,221 6,811
Cleveland65%32,02263.1%16,75233.0%1,2352.4%7681.5%00.0%15,270 50,777
Columbus67%15,56359.6%9,59936.8%5162.0%4241.6%00.0%5,964 26,102
Craven67%29,54256.2%20,41638.9%1,7723.4%7911.5%00.0%9,126 52,521
Cumberland58%57,12139.2%81,00155.6%5,3793.7%2,2181.5%00.0%-23,880 145,719
Currituck67%11,36871.3%3,84924.1%5543.5%1751.1%00.0%7,519 15,946
Dare77%13,58157.0%9,28439.0%7663.2%2040.9%00.0%4,297 23,835
Davidson66%60,68668.8%23,66026.8%2,4962.8%1,3461.5%00.0%37,026 88,188
Davie73%17,41569.2%6,57026.1%7813.1%3961.6%00.0%10,845 25,162
Duplin61%12,95457.7%8,68938.7%4772.1%3121.4%00.0%4,265 22,432
Durham68%34,15219.1%138,42977.4%5,0412.8%1,2240.7%00.0%-104,277 178,846
Edgecombe68%8,58233.9%15,95263.0%5062.0%2781.1%00.0%-7,370 25,318
Forsyth67%83,22841.7%107,27753.8%6,5333.3%2,4711.2%00.0%-24,049 199,509
Franklin65%19,65452.9%15,65942.2%1,2463.4%5651.5%00.0%3,995 37,124
Gaston63%69,39860.8%39,59534.7%3,5483.1%1,6601.5%00.0%29,803 114,201
Gates71%3,20554.5%2,47442.0%1322.2%741.3%00.0%731 5,885
Graham71%3,35573.8%1,01322.3%942.1%871.9%00.0%2,342 4,549
Granville63%15,68750.0%14,36845.8%9082.9%3961.3%00.0%1,319 31,359
Greene54%4,59152.8%3,84244.2%1892.2%770.9%00.0%749 8,699
Guilford67%104,90837.2%165,82358.8%8,5873.0%2,8191.0%00.0%-60,915 282,137
Halifax68%9,44636.9%15,43860.4%4561.8%2370.9%00.0%-5,992 25,577
Harnett57%33,32157.6%21,52337.2%2,1283.7%9111.6%00.0%11,798 57,883
Haywood71%21,50259.3%13,11336.1%1,0813.0%5871.6%00.0%8,389 36,283
Henderson71%39,35958.0%25,78238.0%1,9642.9%7681.1%00.0%13,577 67,873
Hertford61%3,30531.8%6,81565.6%1541.5%1181.1%00.0%-3,510 10,392
Hoke55%8,63840.4%11,46653.6%9094.3%3701.7%00.0%-2,828 21,383
Hyde69%1,31553.3%1,07543.5%532.1%261.1%00.0%240 2,469
Iredell67%64,31963.4%31,89331.5%3,4873.4%1,6871.7%00.0%32,426 101,386
Jackson59%10,76350.7%9,38244.2%7883.7%3061.4%00.0%1,381 21,239
Johnston63%64,82258.8%39,77136.1%3,9533.6%1,6671.5%00.0%25,051 110,213
Jones73%3,04655.8%2,12438.9%1823.3%1021.9%00.0%922 5,454
Lee58%15,41953.7%11,85141.3%9793.4%4651.6%00.0%3,568 28,714
Lenoir67%13,89849.4%13,28447.2%5912.1%3461.2%00.0%614 28,119
Lincoln69%34,67369.7%12,85825.8%1,4823.0%7631.5%00.0%21,815 49,776
Macon66%13,40865.4%6,24830.5%5212.5%3401.7%00.0%7,160 20,517
Madison73%7,39957.2%4,98738.5%3622.8%1951.5%00.0%2,412 12,943
Martin73%6,03448.6%5,97348.1%2572.1%1601.3%00.0%61 12,424
McDowell64%15,89469.9%5,93426.1%5652.5%3541.6%00.0%9,960 22,747
Mecklenburg65%186,69333.2%350,77562.3%19,7643.5%5,4401.0%00.0%-164,082 562,672
Mitchell73%6,73575.3%1,91921.5%1812.0%1071.2%00.0%4,816 8,942
Montgomery63%7,74161.0%4,37934.5%3242.6%2562.0%00.0%3,362 12,700
Moore71%35,68261.7%19,63334.0%1,7603.0%7481.3%00.0%16,049 57,823
Nash70%24,71947.6%25,47449.1%1,1172.2%5851.1%00.0%-755 51,895
New Hanover69%61,41547.1%61,70247.3%5,5164.2%1,6851.3%00.0%-287 130,318
Northampton72%3,72037.2%6,00560.0%1871.9%991.0%00.0%-2,285 10,011
Onslow45%42,86860.2%23,34432.8%3,6275.1%1,3631.9%00.0%19,524 71,202
Orange70%20,86224.7%61,21472.4%1,9612.3%4880.6%00.0%-40,352 84,525
Pamlico72%4,58960.5%2,68135.4%1882.5%1231.6%00.0%1,908 7,581
Pasquotank61%9,49148.3%9,42147.9%5382.7%1981.0%00.0%70 19,648
Pender68%20,66061.2%11,27233.4%1,2743.8%5531.6%00.0%9,388 33,759
Perquimans70%4,81764.9%2,38232.1%1391.9%881.2%00.0%2,435 7,426
Person70%12,19256.5%8,47539.3%6002.8%3151.5%00.0%3,717 21,582
Pitt64%37,94743.7%45,59852.5%2,5102.9%8461.0%00.0%-7,651 86,901
Polk74%7,39460.3%4,43636.2%2862.3%1361.1%00.0%2,958 12,252
Randolph64%53,35773.5%15,97322.0%2,0972.9%1,1431.6%00.0%37,384 72,570
Richmond63%11,00253.9%8,51041.7%5662.8%3521.7%00.0%2,492 20,430
Robeson53%25,21154.9%19,13541.6%9552.1%6481.4%00.0%6,076 45,949
Rockingham65%28,97161.2%16,18934.2%1,4733.1%6801.4%00.0%12,782 47,313
Rowan63%46,44663.8%22,61531.1%2,2543.1%1,4332.0%00.0%23,831 72,748
Rutherford66%23,59669.3%9,13626.8%7812.3%5541.6%00.0%14,460 34,067
Sampson64%16,52158.3%10,81838.1%6362.2%3851.4%00.0%5,703 28,360
Scotland55%7,06648.9%6,85047.4%3222.2%2231.5%00.0%216 14,461
Stanly67%23,89171.2%8,04524.0%9612.9%6742.0%00.0%15,846 33,571
Stokes70%18,59973.0%5,61122.0%8123.2%4581.8%00.0%12,988 25,480
Surry65%25,47570.2%9,26725.5%1,0302.8%5311.5%00.0%16,208 36,303
Swain64%3,84655.2%2,69638.7%2984.3%1311.9%00.0%1,150 6,971
Transylvania72%11,20955.5%8,15840.4%5522.7%2861.4%00.0%3,051 20,205
Tyrrell64%94553.0%77843.6%372.1%241.3%00.0%167 1,784
Union71%79,64561.3%45,09634.7%3,7652.9%1,3381.0%00.0%34,549 129,844
Vance65%7,87637.8%12,24758.8%4552.2%2371.1%00.0%-4,371 20,815
Wake70%232,38837.0%367,71858.6%22,2303.5%4,8930.8%00.0%-135,330 627,229
Warren67%3,52034.3%6,43762.7%1941.9%1121.1%00.0%-2,917 10,263
Washington71%2,58442.1%3,32954.2%1282.1%1041.7%00.0%-745 6,145
Watauga67%14,21644.6%16,19350.8%1,1383.6%3311.0%00.0%-1,977 31,878
Wayne62%29,17453.1%23,52842.8%1,4192.6%8231.5%00.0%5,646 54,944
Wilkes67%25,48872.7%8,07423.0%9242.6%5871.7%00.0%17,414 35,073
Wilson67%18,64246.1%20,44550.6%8852.2%4391.1%00.0%-1,803 40,411
Yadkin67%14,79874.9%4,03620.4%5532.8%3811.9%00.0%10,762 19,768
Yancey73%7,03862.4%3,83334.0%2502.2%1591.4%00.0%3,205 11,280
TOTAL 67% 2,665,59848.7% 2,569,96546.9% 171,5713.1% 67,8181.2% 00.0% 95,633 5,474,952
Total R vote: 2,665,598 (48.7%)      Total D vote: 2,569,965 (46.9%)      Total Other vote: 239,389 (4.4%)
* incumbent
Campaign finance data for this election**:
Total Disbursements: $26,370,205 $52,395,429 $0 $0
Total Receipts: $26,718,699 $52,569,133 $0 $0
Cash on Hand: $834,908 $173,703 $0 $0
Contributions by Candidate: $0 $162 $0 $0
Loans by Candidate: $0 $200,000 $0 $0
Total Individual Contributions: $18,949,497 $48,478,504 $0 $0
Party Contributions: $0 $54,600 $0 $0
Other Committee Contributions: $5,059,103 $865,786 $0 $0
Transfers from Other Committees: $2,620,838 $2,632,883 $0 $0
Independent Expenditures Supporting: $18,051,939 $32,304,863 $0 $0
Independent Expenditures Opposing: $84,390,239 $90,807,771 $0 $0
Net Independent Expenditures: $-66,338,300 $-58,502,908 $0 $0
Net Spending: $-39,968,095 $-6,107,479 $0 $0

**Financial data shown here takes into account all elections for this office during this cycle, including primary, special and runoff elections, if any.
Source: https://www.fec.gov/data/elections/senate/NC/2020

View 2024 FEC data



2020 Senate class 2, Alamance County
CandidateVotesPct
Thom Tillis* (R) 44,246 51.7%
Cal Cunningham (D) 38,038 44.5%
Shannon Bray (Lbt) 2,302 2.7%
Kevin Hayes (Cst) 922 1.1%
TOTAL 85,508
Turnout: 63%


2020 Senate class 2, Alexander County
CandidateVotesPct
Thom Tillis* (R) 14,739 73.5%
Cal Cunningham (D) 4,287 21.4%
Shannon Bray (Lbt) 563 2.8%
Kevin Hayes (Cst) 455 2.3%
TOTAL 20,044
Turnout: 69%


2020 Senate class 2, Alleghany County
CandidateVotesPct
Thom Tillis* (R) 4,082 68.0%
Cal Cunningham (D) 1,587 26.4%
Shannon Bray (Lbt) 192 3.2%
Kevin Hayes (Cst) 146 2.4%
TOTAL 6,007
Turnout: 65%


2020 Senate class 2, Anson County
CandidateVotesPct
Thom Tillis* (R) 4,981 44.8%
Cal Cunningham (D) 5,756 51.8%
Shannon Bray (Lbt) 204 1.8%
Kevin Hayes (Cst) 167 1.5%
TOTAL 11,108
Turnout: 64%


2020 Senate class 2, Ashe County
CandidateVotesPct
Thom Tillis* (R) 10,619 67.9%
Cal Cunningham (D) 4,279 27.4%
Shannon Bray (Lbt) 457 2.9%
Kevin Hayes (Cst) 281 1.8%
TOTAL 15,636
Turnout: 71%


2020 Senate class 2, Avery County
CandidateVotesPct
Thom Tillis* (R) 6,865 73.7%
Cal Cunningham (D) 2,079 22.3%
Shannon Bray (Lbt) 246 2.6%
Kevin Hayes (Cst) 131 1.4%
TOTAL 9,321
Turnout: 61%


2020 Senate class 2, Beaufort County
CandidateVotesPct
Thom Tillis* (R) 15,448 59.3%
Cal Cunningham (D) 9,439 36.2%
Shannon Bray (Lbt) 706 2.7%
Kevin Hayes (Cst) 453 1.7%
TOTAL 26,046
Turnout: 73%


2020 Senate class 2, Bertie County
CandidateVotesPct
Thom Tillis* (R) 3,597 37.1%
Cal Cunningham (D) 5,825 60.1%
Shannon Bray (Lbt) 158 1.6%
Kevin Hayes (Cst) 114 1.2%
TOTAL 9,694
Turnout: 68%


2020 Senate class 2, Bladen County
CandidateVotesPct
Thom Tillis* (R) 8,967 53.1%
Cal Cunningham (D) 7,280 43.1%
Shannon Bray (Lbt) 399 2.4%
Kevin Hayes (Cst) 235 1.4%
TOTAL 16,881
Turnout: 72%


2020 Senate class 2, Brunswick County
CandidateVotesPct
Thom Tillis* (R) 52,971 59.4%
Cal Cunningham (D) 32,180 36.1%
Shannon Bray (Lbt) 2,881 3.2%
Kevin Hayes (Cst) 1,170 1.3%
TOTAL 89,202
Turnout: 71%


2020 Senate class 2, Buncombe County
CandidateVotesPct
Thom Tillis* (R) 60,688 37.9%
Cal Cunningham (D) 92,664 57.9%
Shannon Bray (Lbt) 5,054 3.2%
Kevin Hayes (Cst) 1,636 1.0%
TOTAL 160,042
Turnout: 72%


2020 Senate class 2, Burke County
CandidateVotesPct
Thom Tillis* (R) 28,934 65.5%
Cal Cunningham (D) 13,108 29.7%
Shannon Bray (Lbt) 1,309 3.0%
Kevin Hayes (Cst) 819 1.9%
TOTAL 44,170
Turnout: 62%


2020 Senate class 2, Cabarrus County
CandidateVotesPct
Thom Tillis* (R) 61,231 52.7%
Cal Cunningham (D) 48,886 42.1%
Shannon Bray (Lbt) 4,261 3.7%
Kevin Hayes (Cst) 1,724 1.5%
TOTAL 116,102
Turnout: 66%


2020 Senate class 2, Caldwell County
CandidateVotesPct
Thom Tillis* (R) 29,971 70.8%
Cal Cunningham (D) 10,288 24.3%
Shannon Bray (Lbt) 1,299 3.1%
Kevin Hayes (Cst) 799 1.9%
TOTAL 42,357
Turnout: 66%


2020 Senate class 2, Camden County
CandidateVotesPct
Thom Tillis* (R) 4,181 71.6%
Cal Cunningham (D) 1,403 24.0%
Shannon Bray (Lbt) 183 3.1%
Kevin Hayes (Cst) 71 1.2%
TOTAL 5,838
Turnout: 69%


2020 Senate class 2, Carteret County
CandidateVotesPct
Thom Tillis* (R) 28,492 67.5%
Cal Cunningham (D) 11,823 28.0%
Shannon Bray (Lbt) 1,312 3.1%
Kevin Hayes (Cst) 601 1.4%
TOTAL 42,228
Turnout: 74%


2020 Senate class 2, Caswell County
CandidateVotesPct
Thom Tillis* (R) 6,643 55.5%
Cal Cunningham (D) 4,916 41.1%
Shannon Bray (Lbt) 278 2.3%
Kevin Hayes (Cst) 124 1.0%
TOTAL 11,961
Turnout: 65%


2020 Senate class 2, Catawba County
CandidateVotesPct
Thom Tillis* (R) 54,004 65.2%
Cal Cunningham (D) 24,845 30.0%
Shannon Bray (Lbt) 2,550 3.1%
Kevin Hayes (Cst) 1,484 1.8%
TOTAL 82,883
Turnout: 65%


2020 Senate class 2, Chatham County
CandidateVotesPct
Thom Tillis* (R) 21,039 43.5%
Cal Cunningham (D) 25,697 53.2%
Shannon Bray (Lbt) 1,171 2.4%
Kevin Hayes (Cst) 431 0.9%
TOTAL 48,338
Turnout: 76%


2020 Senate class 2, Cherokee County
CandidateVotesPct
Thom Tillis* (R) 12,048 74.0%
Cal Cunningham (D) 3,589 22.0%
Shannon Bray (Lbt) 408 2.5%
Kevin Hayes (Cst) 241 1.5%
TOTAL 16,286
Turnout: 66%


2020 Senate class 2, Chowan County
CandidateVotesPct
Thom Tillis* (R) 4,353 56.6%
Cal Cunningham (D) 3,124 40.6%
Shannon Bray (Lbt) 139 1.8%
Kevin Hayes (Cst) 73 0.9%
TOTAL 7,689
Turnout: 70%


2020 Senate class 2, Clay County
CandidateVotesPct
Thom Tillis* (R) 4,897 71.9%
Cal Cunningham (D) 1,676 24.6%
Shannon Bray (Lbt) 140 2.1%
Kevin Hayes (Cst) 98 1.4%
TOTAL 6,811
Turnout: 72%


2020 Senate class 2, Cleveland County
CandidateVotesPct
Thom Tillis* (R) 32,022 63.1%
Cal Cunningham (D) 16,752 33.0%
Shannon Bray (Lbt) 1,235 2.4%
Kevin Hayes (Cst) 768 1.5%
TOTAL 50,777
Turnout: 65%


2020 Senate class 2, Columbus County
CandidateVotesPct
Thom Tillis* (R) 15,563 59.6%
Cal Cunningham (D) 9,599 36.8%
Shannon Bray (Lbt) 516 2.0%
Kevin Hayes (Cst) 424 1.6%
TOTAL 26,102
Turnout: 67%


2020 Senate class 2, Craven County
CandidateVotesPct
Thom Tillis* (R) 29,542 56.2%
Cal Cunningham (D) 20,416 38.9%
Shannon Bray (Lbt) 1,772 3.4%
Kevin Hayes (Cst) 791 1.5%
TOTAL 52,521
Turnout: 67%


2020 Senate class 2, Cumberland County
CandidateVotesPct
Thom Tillis* (R) 57,121 39.2%
Cal Cunningham (D) 81,001 55.6%
Shannon Bray (Lbt) 5,379 3.7%
Kevin Hayes (Cst) 2,218 1.5%
TOTAL 145,719
Turnout: 58%


2020 Senate class 2, Currituck County
CandidateVotesPct
Thom Tillis* (R) 11,368 71.3%
Cal Cunningham (D) 3,849 24.1%
Shannon Bray (Lbt) 554 3.5%
Kevin Hayes (Cst) 175 1.1%
TOTAL 15,946
Turnout: 67%


2020 Senate class 2, Dare County
CandidateVotesPct
Thom Tillis* (R) 13,581 57.0%
Cal Cunningham (D) 9,284 39.0%
Shannon Bray (Lbt) 766 3.2%
Kevin Hayes (Cst) 204 0.9%
TOTAL 23,835
Turnout: 77%


2020 Senate class 2, Davidson County
CandidateVotesPct
Thom Tillis* (R) 60,686 68.8%
Cal Cunningham (D) 23,660 26.8%
Shannon Bray (Lbt) 2,496 2.8%
Kevin Hayes (Cst) 1,346 1.5%
TOTAL 88,188
Turnout: 66%


2020 Senate class 2, Davie County
CandidateVotesPct
Thom Tillis* (R) 17,415 69.2%
Cal Cunningham (D) 6,570 26.1%
Shannon Bray (Lbt) 781 3.1%
Kevin Hayes (Cst) 396 1.6%
TOTAL 25,162
Turnout: 73%


2020 Senate class 2, Duplin County
CandidateVotesPct
Thom Tillis* (R) 12,954 57.7%
Cal Cunningham (D) 8,689 38.7%
Shannon Bray (Lbt) 477 2.1%
Kevin Hayes (Cst) 312 1.4%
TOTAL 22,432
Turnout: 61%


2020 Senate class 2, Durham County
CandidateVotesPct
Thom Tillis* (R) 34,152 19.1%
Cal Cunningham (D) 138,429 77.4%
Shannon Bray (Lbt) 5,041 2.8%
Kevin Hayes (Cst) 1,224 0.7%
TOTAL 178,846
Turnout: 68%


2020 Senate class 2, Edgecombe County
CandidateVotesPct
Thom Tillis* (R) 8,582 33.9%
Cal Cunningham (D) 15,952 63.0%
Shannon Bray (Lbt) 506 2.0%
Kevin Hayes (Cst) 278 1.1%
TOTAL 25,318
Turnout: 68%


2020 Senate class 2, Forsyth County
CandidateVotesPct
Thom Tillis* (R) 83,228 41.7%
Cal Cunningham (D) 107,277 53.8%
Shannon Bray (Lbt) 6,533 3.3%
Kevin Hayes (Cst) 2,471 1.2%
TOTAL 199,509
Turnout: 67%


2020 Senate class 2, Franklin County
CandidateVotesPct
Thom Tillis* (R) 19,654 52.9%
Cal Cunningham (D) 15,659 42.2%
Shannon Bray (Lbt) 1,246 3.4%
Kevin Hayes (Cst) 565 1.5%
TOTAL 37,124
Turnout: 65%


2020 Senate class 2, Gaston County
CandidateVotesPct
Thom Tillis* (R) 69,398 60.8%
Cal Cunningham (D) 39,595 34.7%
Shannon Bray (Lbt) 3,548 3.1%
Kevin Hayes (Cst) 1,660 1.5%
TOTAL 114,201
Turnout: 63%


2020 Senate class 2, Gates County
CandidateVotesPct
Thom Tillis* (R) 3,205 54.5%
Cal Cunningham (D) 2,474 42.0%
Shannon Bray (Lbt) 132 2.2%
Kevin Hayes (Cst) 74 1.3%
TOTAL 5,885
Turnout: 71%


2020 Senate class 2, Graham County
CandidateVotesPct
Thom Tillis* (R) 3,355 73.8%
Cal Cunningham (D) 1,013 22.3%
Shannon Bray (Lbt) 94 2.1%
Kevin Hayes (Cst) 87 1.9%
TOTAL 4,549
Turnout: 71%


2020 Senate class 2, Granville County
CandidateVotesPct
Thom Tillis* (R) 15,687 50.0%
Cal Cunningham (D) 14,368 45.8%
Shannon Bray (Lbt) 908 2.9%
Kevin Hayes (Cst) 396 1.3%
TOTAL 31,359
Turnout: 63%


2020 Senate class 2, Greene County
CandidateVotesPct
Thom Tillis* (R) 4,591 52.8%
Cal Cunningham (D) 3,842 44.2%
Shannon Bray (Lbt) 189 2.2%
Kevin Hayes (Cst) 77 0.9%
TOTAL 8,699
Turnout: 54%


2020 Senate class 2, Guilford County
CandidateVotesPct
Thom Tillis* (R) 104,908 37.2%
Cal Cunningham (D) 165,823 58.8%
Shannon Bray (Lbt) 8,587 3.0%
Kevin Hayes (Cst) 2,819 1.0%
TOTAL 282,137
Turnout: 67%


2020 Senate class 2, Halifax County
CandidateVotesPct
Thom Tillis* (R) 9,446 36.9%
Cal Cunningham (D) 15,438 60.4%
Shannon Bray (Lbt) 456 1.8%
Kevin Hayes (Cst) 237 0.9%
TOTAL 25,577
Turnout: 68%


2020 Senate class 2, Harnett County
CandidateVotesPct
Thom Tillis* (R) 33,321 57.6%
Cal Cunningham (D) 21,523 37.2%
Shannon Bray (Lbt) 2,128 3.7%
Kevin Hayes (Cst) 911 1.6%
TOTAL 57,883
Turnout: 57%


2020 Senate class 2, Haywood County
CandidateVotesPct
Thom Tillis* (R) 21,502 59.3%
Cal Cunningham (D) 13,113 36.1%
Shannon Bray (Lbt) 1,081 3.0%
Kevin Hayes (Cst) 587 1.6%
TOTAL 36,283
Turnout: 71%


2020 Senate class 2, Henderson County
CandidateVotesPct
Thom Tillis* (R) 39,359 58.0%
Cal Cunningham (D) 25,782 38.0%
Shannon Bray (Lbt) 1,964 2.9%
Kevin Hayes (Cst) 768 1.1%
TOTAL 67,873
Turnout: 71%


2020 Senate class 2, Hertford County
CandidateVotesPct
Thom Tillis* (R) 3,305 31.8%
Cal Cunningham (D) 6,815 65.6%
Shannon Bray (Lbt) 154 1.5%
Kevin Hayes (Cst) 118 1.1%
TOTAL 10,392
Turnout: 61%


2020 Senate class 2, Hoke County
CandidateVotesPct
Thom Tillis* (R) 8,638 40.4%
Cal Cunningham (D) 11,466 53.6%
Shannon Bray (Lbt) 909 4.3%
Kevin Hayes (Cst) 370 1.7%
TOTAL 21,383
Turnout: 55%


2020 Senate class 2, Hyde County
CandidateVotesPct
Thom Tillis* (R) 1,315 53.3%
Cal Cunningham (D) 1,075 43.5%
Shannon Bray (Lbt) 53 2.1%
Kevin Hayes (Cst) 26 1.1%
TOTAL 2,469
Turnout: 69%


2020 Senate class 2, Iredell County
CandidateVotesPct
Thom Tillis* (R) 64,319 63.4%
Cal Cunningham (D) 31,893 31.5%
Shannon Bray (Lbt) 3,487 3.4%
Kevin Hayes (Cst) 1,687 1.7%
TOTAL 101,386
Turnout: 67%


2020 Senate class 2, Jackson County
CandidateVotesPct
Thom Tillis* (R) 10,763 50.7%
Cal Cunningham (D) 9,382 44.2%
Shannon Bray (Lbt) 788 3.7%
Kevin Hayes (Cst) 306 1.4%
TOTAL 21,239
Turnout: 59%


2020 Senate class 2, Johnston County
CandidateVotesPct
Thom Tillis* (R) 64,822 58.8%
Cal Cunningham (D) 39,771 36.1%
Shannon Bray (Lbt) 3,953 3.6%
Kevin Hayes (Cst) 1,667 1.5%
TOTAL 110,213
Turnout: 63%


2020 Senate class 2, Jones County
CandidateVotesPct
Thom Tillis* (R) 3,046 55.8%
Cal Cunningham (D) 2,124 38.9%
Shannon Bray (Lbt) 182 3.3%
Kevin Hayes (Cst) 102 1.9%
TOTAL 5,454
Turnout: 73%


2020 Senate class 2, Lee County
CandidateVotesPct
Thom Tillis* (R) 15,419 53.7%
Cal Cunningham (D) 11,851 41.3%
Shannon Bray (Lbt) 979 3.4%
Kevin Hayes (Cst) 465 1.6%
TOTAL 28,714
Turnout: 58%


2020 Senate class 2, Lenoir County
CandidateVotesPct
Thom Tillis* (R) 13,898 49.4%
Cal Cunningham (D) 13,284 47.2%
Shannon Bray (Lbt) 591 2.1%
Kevin Hayes (Cst) 346 1.2%
TOTAL 28,119
Turnout: 67%


2020 Senate class 2, Lincoln County
CandidateVotesPct
Thom Tillis* (R) 34,673 69.7%
Cal Cunningham (D) 12,858 25.8%
Shannon Bray (Lbt) 1,482 3.0%
Kevin Hayes (Cst) 763 1.5%
TOTAL 49,776
Turnout: 69%


2020 Senate class 2, Macon County
CandidateVotesPct
Thom Tillis* (R) 13,408 65.4%
Cal Cunningham (D) 6,248 30.5%
Shannon Bray (Lbt) 521 2.5%
Kevin Hayes (Cst) 340 1.7%
TOTAL 20,517
Turnout: 66%


2020 Senate class 2, Madison County
CandidateVotesPct
Thom Tillis* (R) 7,399 57.2%
Cal Cunningham (D) 4,987 38.5%
Shannon Bray (Lbt) 362 2.8%
Kevin Hayes (Cst) 195 1.5%
TOTAL 12,943
Turnout: 73%


2020 Senate class 2, Martin County
CandidateVotesPct
Thom Tillis* (R) 6,034 48.6%
Cal Cunningham (D) 5,973 48.1%
Shannon Bray (Lbt) 257 2.1%
Kevin Hayes (Cst) 160 1.3%
TOTAL 12,424
Turnout: 73%


2020 Senate class 2, McDowell County
CandidateVotesPct
Thom Tillis* (R) 15,894 69.9%
Cal Cunningham (D) 5,934 26.1%
Shannon Bray (Lbt) 565 2.5%
Kevin Hayes (Cst) 354 1.6%
TOTAL 22,747
Turnout: 64%


2020 Senate class 2, Mecklenburg County
CandidateVotesPct
Thom Tillis* (R) 186,693 33.2%
Cal Cunningham (D) 350,775 62.3%
Shannon Bray (Lbt) 19,764 3.5%
Kevin Hayes (Cst) 5,440 1.0%
TOTAL 562,672
Turnout: 65%


2020 Senate class 2, Mitchell County
CandidateVotesPct
Thom Tillis* (R) 6,735 75.3%
Cal Cunningham (D) 1,919 21.5%
Shannon Bray (Lbt) 181 2.0%
Kevin Hayes (Cst) 107 1.2%
TOTAL 8,942
Turnout: 73%


2020 Senate class 2, Montgomery County
CandidateVotesPct
Thom Tillis* (R) 7,741 61.0%
Cal Cunningham (D) 4,379 34.5%
Shannon Bray (Lbt) 324 2.6%
Kevin Hayes (Cst) 256 2.0%
TOTAL 12,700
Turnout: 63%


2020 Senate class 2, Moore County
CandidateVotesPct
Thom Tillis* (R) 35,682 61.7%
Cal Cunningham (D) 19,633 34.0%
Shannon Bray (Lbt) 1,760 3.0%
Kevin Hayes (Cst) 748 1.3%
TOTAL 57,823
Turnout: 71%


2020 Senate class 2, Nash County
CandidateVotesPct
Thom Tillis* (R) 24,719 47.6%
Cal Cunningham (D) 25,474 49.1%
Shannon Bray (Lbt) 1,117 2.2%
Kevin Hayes (Cst) 585 1.1%
TOTAL 51,895
Turnout: 70%


2020 Senate class 2, New Hanover County
CandidateVotesPct
Thom Tillis* (R) 61,415 47.1%
Cal Cunningham (D) 61,702 47.3%
Shannon Bray (Lbt) 5,516 4.2%
Kevin Hayes (Cst) 1,685 1.3%
TOTAL 130,318
Turnout: 69%


2020 Senate class 2, Northampton County
CandidateVotesPct
Thom Tillis* (R) 3,720 37.2%
Cal Cunningham (D) 6,005 60.0%
Shannon Bray (Lbt) 187 1.9%
Kevin Hayes (Cst) 99 1.0%
TOTAL 10,011
Turnout: 72%


2020 Senate class 2, Onslow County
CandidateVotesPct
Thom Tillis* (R) 42,868 60.2%
Cal Cunningham (D) 23,344 32.8%
Shannon Bray (Lbt) 3,627 5.1%
Kevin Hayes (Cst) 1,363 1.9%
TOTAL 71,202
Turnout: 45%


2020 Senate class 2, Orange County
CandidateVotesPct
Thom Tillis* (R) 20,862 24.7%
Cal Cunningham (D) 61,214 72.4%
Shannon Bray (Lbt) 1,961 2.3%
Kevin Hayes (Cst) 488 0.6%
TOTAL 84,525
Turnout: 70%


2020 Senate class 2, Pamlico County
CandidateVotesPct
Thom Tillis* (R) 4,589 60.5%
Cal Cunningham (D) 2,681 35.4%
Shannon Bray (Lbt) 188 2.5%
Kevin Hayes (Cst) 123 1.6%
TOTAL 7,581
Turnout: 72%


2020 Senate class 2, Pasquotank County
CandidateVotesPct
Thom Tillis* (R) 9,491 48.3%
Cal Cunningham (D) 9,421 47.9%
Shannon Bray (Lbt) 538 2.7%
Kevin Hayes (Cst) 198 1.0%
TOTAL 19,648
Turnout: 61%


2020 Senate class 2, Pender County
CandidateVotesPct
Thom Tillis* (R) 20,660 61.2%
Cal Cunningham (D) 11,272 33.4%
Shannon Bray (Lbt) 1,274 3.8%
Kevin Hayes (Cst) 553 1.6%
TOTAL 33,759
Turnout: 68%


2020 Senate class 2, Perquimans County
CandidateVotesPct
Thom Tillis* (R) 4,817 64.9%
Cal Cunningham (D) 2,382 32.1%
Shannon Bray (Lbt) 139 1.9%
Kevin Hayes (Cst) 88 1.2%
TOTAL 7,426
Turnout: 70%


2020 Senate class 2, Person County
CandidateVotesPct
Thom Tillis* (R) 12,192 56.5%
Cal Cunningham (D) 8,475 39.3%
Shannon Bray (Lbt) 600 2.8%
Kevin Hayes (Cst) 315 1.5%
TOTAL 21,582
Turnout: 70%


2020 Senate class 2, Pitt County
CandidateVotesPct
Thom Tillis* (R) 37,947 43.7%
Cal Cunningham (D) 45,598 52.5%
Shannon Bray (Lbt) 2,510 2.9%
Kevin Hayes (Cst) 846 1.0%
TOTAL 86,901
Turnout: 64%


2020 Senate class 2, Polk County
CandidateVotesPct
Thom Tillis* (R) 7,394 60.3%
Cal Cunningham (D) 4,436 36.2%
Shannon Bray (Lbt) 286 2.3%
Kevin Hayes (Cst) 136 1.1%
TOTAL 12,252
Turnout: 74%


2020 Senate class 2, Randolph County
CandidateVotesPct
Thom Tillis* (R) 53,357 73.5%
Cal Cunningham (D) 15,973 22.0%
Shannon Bray (Lbt) 2,097 2.9%
Kevin Hayes (Cst) 1,143 1.6%
TOTAL 72,570
Turnout: 64%


2020 Senate class 2, Richmond County
CandidateVotesPct
Thom Tillis* (R) 11,002 53.9%
Cal Cunningham (D) 8,510 41.7%
Shannon Bray (Lbt) 566 2.8%
Kevin Hayes (Cst) 352 1.7%
TOTAL 20,430
Turnout: 63%


2020 Senate class 2, Robeson County
CandidateVotesPct
Thom Tillis* (R) 25,211 54.9%
Cal Cunningham (D) 19,135 41.6%
Shannon Bray (Lbt) 955 2.1%
Kevin Hayes (Cst) 648 1.4%
TOTAL 45,949
Turnout: 53%


2020 Senate class 2, Rockingham County
CandidateVotesPct
Thom Tillis* (R) 28,971 61.2%
Cal Cunningham (D) 16,189 34.2%
Shannon Bray (Lbt) 1,473 3.1%
Kevin Hayes (Cst) 680 1.4%
TOTAL 47,313
Turnout: 65%


2020 Senate class 2, Rowan County
CandidateVotesPct
Thom Tillis* (R) 46,446 63.8%
Cal Cunningham (D) 22,615 31.1%
Shannon Bray (Lbt) 2,254 3.1%
Kevin Hayes (Cst) 1,433 2.0%
TOTAL 72,748
Turnout: 63%


2020 Senate class 2, Rutherford County
CandidateVotesPct
Thom Tillis* (R) 23,596 69.3%
Cal Cunningham (D) 9,136 26.8%
Shannon Bray (Lbt) 781 2.3%
Kevin Hayes (Cst) 554 1.6%
TOTAL 34,067
Turnout: 66%


2020 Senate class 2, Sampson County
CandidateVotesPct
Thom Tillis* (R) 16,521 58.3%
Cal Cunningham (D) 10,818 38.1%
Shannon Bray (Lbt) 636 2.2%
Kevin Hayes (Cst) 385 1.4%
TOTAL 28,360
Turnout: 64%


2020 Senate class 2, Scotland County
CandidateVotesPct
Thom Tillis* (R) 7,066 48.9%
Cal Cunningham (D) 6,850 47.4%
Shannon Bray (Lbt) 322 2.2%
Kevin Hayes (Cst) 223 1.5%
TOTAL 14,461
Turnout: 55%


2020 Senate class 2, Stanly County
CandidateVotesPct
Thom Tillis* (R) 23,891 71.2%
Cal Cunningham (D) 8,045 24.0%
Shannon Bray (Lbt) 961 2.9%
Kevin Hayes (Cst) 674 2.0%
TOTAL 33,571
Turnout: 67%


2020 Senate class 2, Stokes County
CandidateVotesPct
Thom Tillis* (R) 18,599 73.0%
Cal Cunningham (D) 5,611 22.0%
Shannon Bray (Lbt) 812 3.2%
Kevin Hayes (Cst) 458 1.8%
TOTAL 25,480
Turnout: 70%


2020 Senate class 2, Surry County
CandidateVotesPct
Thom Tillis* (R) 25,475 70.2%
Cal Cunningham (D) 9,267 25.5%
Shannon Bray (Lbt) 1,030 2.8%
Kevin Hayes (Cst) 531 1.5%
TOTAL 36,303
Turnout: 65%


2020 Senate class 2, Swain County
CandidateVotesPct
Thom Tillis* (R) 3,846 55.2%
Cal Cunningham (D) 2,696 38.7%
Shannon Bray (Lbt) 298 4.3%
Kevin Hayes (Cst) 131 1.9%
TOTAL 6,971
Turnout: 64%


2020 Senate class 2, Transylvania County
CandidateVotesPct
Thom Tillis* (R) 11,209 55.5%
Cal Cunningham (D) 8,158 40.4%
Shannon Bray (Lbt) 552 2.7%
Kevin Hayes (Cst) 286 1.4%
TOTAL 20,205
Turnout: 72%


2020 Senate class 2, Tyrrell County
CandidateVotesPct
Thom Tillis* (R) 945 53.0%
Cal Cunningham (D) 778 43.6%
Shannon Bray (Lbt) 37 2.1%
Kevin Hayes (Cst) 24 1.3%
TOTAL 1,784
Turnout: 64%


2020 Senate class 2, Union County
CandidateVotesPct
Thom Tillis* (R) 79,645 61.3%
Cal Cunningham (D) 45,096 34.7%
Shannon Bray (Lbt) 3,765 2.9%
Kevin Hayes (Cst) 1,338 1.0%
TOTAL 129,844
Turnout: 71%


2020 Senate class 2, Vance County
CandidateVotesPct
Thom Tillis* (R) 7,876 37.8%
Cal Cunningham (D) 12,247 58.8%
Shannon Bray (Lbt) 455 2.2%
Kevin Hayes (Cst) 237 1.1%
TOTAL 20,815
Turnout: 65%


2020 Senate class 2, Wake County
CandidateVotesPct
Thom Tillis* (R) 232,388 37.0%
Cal Cunningham (D) 367,718 58.6%
Shannon Bray (Lbt) 22,230 3.5%
Kevin Hayes (Cst) 4,893 0.8%
TOTAL 627,229
Turnout: 70%


2020 Senate class 2, Warren County
CandidateVotesPct
Thom Tillis* (R) 3,520 34.3%
Cal Cunningham (D) 6,437 62.7%
Shannon Bray (Lbt) 194 1.9%
Kevin Hayes (Cst) 112 1.1%
TOTAL 10,263
Turnout: 67%


2020 Senate class 2, Washington County
CandidateVotesPct
Thom Tillis* (R) 2,584 42.1%
Cal Cunningham (D) 3,329 54.2%
Shannon Bray (Lbt) 128 2.1%
Kevin Hayes (Cst) 104 1.7%
TOTAL 6,145
Turnout: 71%


2020 Senate class 2, Watauga County
CandidateVotesPct
Thom Tillis* (R) 14,216 44.6%
Cal Cunningham (D) 16,193 50.8%
Shannon Bray (Lbt) 1,138 3.6%
Kevin Hayes (Cst) 331 1.0%
TOTAL 31,878
Turnout: 67%


2020 Senate class 2, Wayne County
CandidateVotesPct
Thom Tillis* (R) 29,174 53.1%
Cal Cunningham (D) 23,528 42.8%
Shannon Bray (Lbt) 1,419 2.6%
Kevin Hayes (Cst) 823 1.5%
TOTAL 54,944
Turnout: 62%


2020 Senate class 2, Wilkes County
CandidateVotesPct
Thom Tillis* (R) 25,488 72.7%
Cal Cunningham (D) 8,074 23.0%
Shannon Bray (Lbt) 924 2.6%
Kevin Hayes (Cst) 587 1.7%
TOTAL 35,073
Turnout: 67%


2020 Senate class 2, Wilson County
CandidateVotesPct
Thom Tillis* (R) 18,642 46.1%
Cal Cunningham (D) 20,445 50.6%
Shannon Bray (Lbt) 885 2.2%
Kevin Hayes (Cst) 439 1.1%
TOTAL 40,411
Turnout: 67%


2020 Senate class 2, Yadkin County
CandidateVotesPct
Thom Tillis* (R) 14,798 74.9%
Cal Cunningham (D) 4,036 20.4%
Shannon Bray (Lbt) 553 2.8%
Kevin Hayes (Cst) 381 1.9%
TOTAL 19,768
Turnout: 67%


2020 Senate class 2, Yancey County
CandidateVotesPct
Thom Tillis* (R) 7,038 62.4%
Cal Cunningham (D) 3,833 34.0%
Shannon Bray (Lbt) 250 2.2%
Kevin Hayes (Cst) 159 1.4%
TOTAL 11,280
Turnout: 73%

Campaign finance data for this election**:

Thom Tillis*
Total Disbursements: $26,370,205
Total Receipts: $26,718,699
Cash on Hand: $834,908
Candidate Contributions: $0
Candidate Loans: $0
Individual Contributions: $18,949,497
Party Contributions: $0
Other Committee Contributions: $5,059,103
Other Committee Transfers: $2,620,838
Indep. Expenditures Supporting: $18,051,939
Indep. Expenditures Opposing: $84,390,239
Net Independent Expenditures: $-66,338,300
Net Spending: $-39,968,095



Cal Cunningham
Total Disbursements: $52,395,429
Total Receipts: $52,569,133
Cash on Hand: $173,703
Candidate Contributions: $162
Candidate Loans: $200,000
Individual Contributions: $48,478,504
Party Contributions: $54,600
Other Committee Contributions: $865,786
Other Committee Transfers: $2,632,883
Indep. Expenditures Supporting: $32,304,863
Indep. Expenditures Opposing: $90,807,771
Net Independent Expenditures: $-58,502,908
Net Spending: $-6,107,479



**Financial data shown here takes into account all elections for this office during this cycle, including primary, special and runoff elections, if any.
Source: https://www.fec.gov/data/elections/senate/NC/2020

View 2024 FEC data


Republican Primary
Pos Candidate Votes % $**
1   Thom Tillis* 608,943 78.1% $26,370,205
2   Paul Wright 58,908 7.6%
3   Larry Holmquist 57,356 7.4%
4   Sharon Hudson 54,651 7.0%
TOTAL VOTES 779,858    


Democrat Primary
Pos Candidate Votes % $**
1   Cal Cunningham 717,941 56.9% $52,395,429
2   Erica Smith 438,969 34.8% $188,191
3   Trevor Fuller 48,168 3.8% $30,038
4   Steve Swenson 33,741 2.7% $1,965
5   Atul Goel 22,226 1.8%
TOTAL VOTES 1,261,045