Le canton n° 22 (Roye) comprend les communes suivantes : Andechy, Armancourt, Assainvillers, Ayencourt, Balâtre, Becquigny, Beuvraignes, Biarre, Bouillancourt-la-Bataille, Boussicourt, Bus-la-Mésière, Cantigny, Le Cardonnois, Carrépuis, Champien, Courtemanche, Crémery, Cressy-Omencourt, Damery, Dancourt-Popincourt, Davenescourt, L'Echelle-Saint-Aurin, Erches, Ercheu, Etalon, Etelfay, Faverolles, Fescamps, Fignières, Fonches-Fonchette, Fontaine-sous-Montdidier, Fresnoy-lès-Roye, Goyencourt, Gratibus, Grivillers, Gruny, Guerbigny, Hargicourt, Hattencourt, Herly, Laboissière-en-Santerre, Laucourt, Liancourt-Fosse, Lignières, Malpart, Marché-Allouarde, Marestmontiers, Marquivillers, Mesnil-Saint-Georges, Montdidier, Piennes-Onvillers, Remaugies, Roiglise, Rollot, Roye, Rubescourt, Saint-Mard, Tilloloy, Verpillières, Villers-lès-Roye, Villers-Tournelle, Warsy.
Le bureau centralisateur de ce canton est le bureau centralisateur de la commune de Roye.