| Candidate name | Party | Gender | Number of votes | Share (%) | Change vs. 2017 for party (percentage points) | ||
| James Davies | Conservative | Male | 17,270 | 46.4% | +2.3 | ||
| Christopher Ruane | Labour | Male | 15,443 | 41.5% | -8.7 | ||
| Glenn Swingler | Plaid Cymru | Male | 1,552 | 4.2% | +0.2 | ||
| Peter Dain | Brexit Party | Male | 1,477 | 4.0% | 0.0 | ||
| Gavin Scott | Liberal Democrat | Male | 1,471 | 4.0% | +2.2 |
| Election statistics | ||
| Majority | ||
| Votes | 1,827 | |
| Percent | 4.9% | |
| Rank (1 = highest %) | 585 | |
| Turnout | ||
| Constituency | 65.7% | |
| Region | 66.6% | |
| UK | 67.3% | |
| Constituency in 2017 | 68.0% | |
| Size of electorate | 56,649 | |
| Valid votes cast | 37,213 |