Parliament Members API Reference
Search current and former Commons and Lords members, then inspect dated house, constituency, and party records.
Base URL: https://api.govdata.dev/v1
Search members
GET /v1/parliament/members serves paginated member profiles for research, constituency history, and political-data enrichment.
/v1/parliament/members
Waiting for request...
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
name |
string | No | — | Case-insensitive displayed-name prefix. |
party_id |
integer | No | — | Current party ID. |
house |
string | No | — | commons or lords. |
current |
boolean | No | — | Current-member status. |
active_on |
date | No | — | Active house membership on YYYY-MM-DD. |
page |
integer | No | 1 | One-based page. |
per_page |
integer | No | 25 | Results per page, maximum 100. |
curl -H "Authorization: Bearer YOUR_API_KEY" "https://api.govdata.dev/v1/parliament/members?name=The%20Duke&per_page=1"
Net::HTTP.get_response(URI("https://api.govdata.dev/v1/parliament/members?name=The%20Duke&per_page=1"), {"Authorization" => "Bearer YOUR_API_KEY"})
requests.get("https://api.govdata.dev/v1/parliament/members", headers={"Authorization": "Bearer YOUR_API_KEY"}, params={"name": "The Duke", "per_page": 1})
await fetch("https://api.govdata.dev/v1/parliament/members?name=The%20Duke&per_page=1", {headers:{Authorization:"Bearer YOUR_API_KEY"}});
Locally captured response after live import
{"data":[{"member_id":3469,"name":"The Duke of Abercorn","full_title":"His Grace the Duke of Abercorn","gender":"M","current_member":false,"party":{"id":4,"name":"Conservative","abbreviation":"Con"},"thumbnail_url":"https://members-api.parliament.uk/api/Members/3469/Thumbnail","memberships":[{"kind":"party_affiliation","house":"lords","from":"Conservative","source_id":4,"start_date":"1979-10-25","end_date":"1999-11-11","additional_info":null},{"kind":"house_membership","house":"lords","from":"Lords","source_id":2,"start_date":"1979-06-04","end_date":"1999-11-11","additional_info":"The Duke of Abercorn"}]}],"meta":{"api_version":"v1","source":"UK Parliament Members API","source_url":"https://members-api.parliament.uk/api/Members/Search","last_updated":"2026-08-21T08:45:49.384Z","dataset_total":20,"licence":"Open Parliament Licence","attribution":"Contains Parliamentary information licensed under the Open Parliament Licence v3.0."},"pagination":{"total":1,"page":1,"per_page":1,"total_pages":1}}
This is the complete, verbatim local response from the bounded 2026-08-21 live re-import. Production examples will be re-captured after the full load.
Get member
GET /v1/parliament/members/:member_id returns one profile and all imported dated memberships.
/v1/parliament/members/:member_id
Waiting for request...
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
member_id |
integer | Yes | — | Stable Parliament member ID in the path. |
curl -H "Authorization: Bearer YOUR_API_KEY" "https://api.govdata.dev/v1/parliament/members/172"
Net::HTTP.get_response(URI("https://api.govdata.dev/v1/parliament/members/172"), {"Authorization" => "Bearer YOUR_API_KEY"})
requests.get("https://api.govdata.dev/v1/parliament/members/172", headers={"Authorization": "Bearer YOUR_API_KEY"})
await fetch("https://api.govdata.dev/v1/parliament/members/172", {headers:{Authorization:"Bearer YOUR_API_KEY"}});
The response shape is the same member object shown above, without the surrounding array or pagination.
Errors
{"error":{"code":"invalid_parameter","message":"house must be commons or lords.","documentation_url":"https://docs.govdata.dev/errors/invalid_parameter"}}
{"error":{"code":"not_found","message":"No Parliament member found for ID missing.","documentation_url":"https://docs.govdata.dev/errors/not_found"}}
Each invalid filter returns a parameter-specific 400 message; unknown or non-numeric IDs return 404. No request body is accepted, so 422 is not applicable.
Data notes
Coverage: current and historical Commons and Lords members exposed by Parliament's operational API; stable numeric member IDs and dated house, party, and constituency records are retained. Biography arrays for government posts, opposition posts, other posts, committee memberships, and elections contested are intentionally outside this dataset and are not stored.
Cadence: nightly at 03:20 Europe/London. Parliament publishes operational updates without a guaranteed release hour, so this off-peak full sync runs after the UK parliamentary day.
Licence: Open Parliament Licence. Contains Parliamentary information licensed under the Open Parliament Licence v3.0; copying, publication, adaptation and commercial exploitation are permitted with attribution, subject to its exclusions.
Caveats: blanks remain null; names and affiliations can be revised upstream. Examples were captured from a bounded local live-source import and must be re-captured after the production load.