SwapMyVote Already been here? Log in

Swap My Vote API

Swap My Vote does not have a conventional REST API, but we do have a single end point to pre-populate some of the fields that a user can choose.

This should be ideal for tactical voting campaigns which want to encourage voters to follow their recommendations, and indeed we would be very happy to see tactical voting sites integrate with Swap My Vote. The below documentation is probably sufficient, but if you need assistance then please get in touch.

Available parameters are:

willing_party_name
The party that the user is willing to vote for, say tactically.
preferred_party_name
The party that the user would ideally like to vote for, say if all votes counted equally nationally.
constituency_name
The name of the default constituency for the user post-login. This is useful if you want to refer a user for tactical voting and you know in which constituency they are registered to vote, as it will save them manually selecting that constituency. The name must match one of the constituencies in the name field of this data set.
constituency_ons_id
The same as for constituency_name above, except that rather than the name, it's the ONS id of the constituency listed in the gss_code field of the data set.

For example if a tactical voting site wishes to recommend a user to vote for (randomly chosen) Green candidate in the Aberdeen North constituency, they could use this outbound link:

https://www.swapmyvote.uk/swap?constituency_name=Aberdeen+North&willing_party_name=green

This one would also work, but rather than specify the tactical vote, instead specifies the user’s preferred party (randomly chosen) Conservatives . This time their constituency is York Outer (specified by ONS code).

https://www.swapmyvote.uk/swap?constituency_ons_id=E14001605&preferred_party_name=conservatives

Preferred party and willing party can be used singly or in combination.

The party names should be lowercased and use underscores instead of spaces; here are the available options:

Note that any parameters set are "sticky" and will apply even after the page is reloaded. They can be "unstuck" by adding ?clear to the end of the URL.