BYTETOOLS

UK Parliament Members API

Free UK Parliament Members API with no key: MPs and Lords, constituencies, party affiliation, contact details and voting records. Tested curl example.

No API key requiredHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-19

What is the UK Parliament Members API?

The UK Parliament Members API is a free, key-free API providing data on current and historical MPs and members of the House of Lords, including constituency, party, contact details and voting records.

The UK Parliament publishes a genuinely modern REST API covering both Houses. You can search members by name, constituency, party or House, and retrieve their full biography, committee memberships and voting history.

It is one of the better parliamentary APIs internationally — well documented, with a Swagger definition, consistent pagination and no key requirement. Constituency data makes it straightforward to map a postcode to a sitting MP when combined with a postcode lookup API.

Quick facts

Base URL
https://members-api.parliament.uk/api
Authentication
No API key required.
Rate limit
No published limit; fair use expected.
Pricing
Free under the Open Parliament Licence, with attribution required.
CORS
Not enabled — call it from your server
Official docs
Read the docs

How to use the UK Parliament Members API

Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.

1. Search for members of Parliament

GET https://members-api.parliament.uk/api/Members/Search?skip=0&take=1

curl
curl 'https://members-api.parliament.uk/api/Members/Search?skip=0&take=1'
JavaScript (fetch)
const res = await fetch("https://members-api.parliament.uk/api/Members/Search?skip=0&take=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://members-api.parliament.uk/api/Members/Search?skip=0&take=1", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "items": [
    {
      "value": {
        "id": 172,
        "nameListAs": "Abbott, Ms Diane",
        "nameDisplayAs": "Ms Diane Abbott",
        "nameFullTitle": "Rt Hon Diane Abbott MP",
        "nameAddressAs": "Ms Abbott",
        "latestParty": {
          "id": 15,
          "name": "Labour",
          "abbreviation": "Lab",
          "backgroundColour": "d50000",
          "foregroundColour": "ffffff",
          "isLordsMainParty": true,
          "isLordsSpiritualParty": true,
          "governmentType": 0,
          "isIndependentParty": false
        },
        "gender": "F",
        "latestHouseMembership": {
          "membershipFrom": "Hackney North and Stoke Newington",
          "membershipFromId": 4074,
          "house": 1,
          "membershipStartDate": "1987-06-11T00:00:00",
          "membershipEndDate": null,
          "membershipEndReason": null,
          "membershipEndReasonNotes": null,
          "membershipEndReasonId": null,
          "membershipStatus": {
            "statusIsActive": true,
            "statusDescription": "Current Member",
            "statusNotes": null,
            "statusId": 0,
            "status": 0,
            "statusStartDate": "2024-07-04T00:00:00"
          }
        },
        "thumbnailUrl": "https://members-api.parliament.uk/api/Members/172/Thumbnail"
      },
      "links": [
        {
          "rel": "self",
          "href": "/Members/172",
          "method": "GET"
        },
        {
          "rel": "overview",
          "href": "/Members/172",
          "method": "GET"
        },
        {

Parameters

ParameterTypeRequiredDescription
skipintegerOptionalPagination offset. 0
takeintegerOptionalNumber of results, maximum 20. 20
NamestringOptionalSearch by member name. Abbott
HouseintegerOptional1 for Commons, 2 for Lords. 1
IsCurrentMemberbooleanOptionalRestrict to sitting members. true

Response fields

items[].value.idinteger
Member identifier used across other endpoints.
items[].value.nameDisplayAsstring
Name formatted for display.
items[].value.nameFullTitlestring
Full title including honorifics.
items[].value.latestPartyobject
Current party with name and colour.
items[].value.latestHouseMembershipobject
Constituency, House and membership dates.
totalResultsinteger
Total members matching the search.

What you can build with the UK Parliament Members API

  • Build a 'find your MP' feature from a postcode lookup
  • Track voting records on specific divisions
  • Display party composition of the Commons or Lords
  • Support civic tech and accountability journalism

Common errors and how to fix them

400

`take` exceeds the maximum of 20.

Fix: Page through with `skip` rather than requesting a larger page.

Empty items array

No members matched the filters.

Fix: Name matching is partial but case-sensitive in places; try a surname alone.

UK Parliament Members API — frequently asked questions

Is the UK Parliament API free?

Yes, no API key is required. Data is published under the Open Parliament Licence, which requires attribution.

Can I find an MP from a postcode?

Not directly — this API works by constituency, not postcode. Combine it with a postcode lookup API such as Postcodes.io, which returns the constituency for a postcode.

Does it include the House of Lords?

Yes. Set the House parameter to 2 for Lords or 1 for Commons; omit it to search both.

Are voting records available?

Yes, through the related divisions endpoints, which return how each member voted on specific parliamentary divisions.

Tools that pair with this API

UK Parliament Members is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.