UK Parliament Scraper avatar

UK Parliament Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
UK Parliament Scraper

UK Parliament Scraper

Scrape UK Parliament open data - search MPs and Lords, get member profiles and careers, browse public bills, and pull House of Commons voting divisions. Powered by the official parliament.uk APIs. No login or API key.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Pull structured data from the UK Parliament straight into your spreadsheets, dashboards, or database. Search sitting and former MPs and members of the House of Lords, download full member profiles and career histories, browse public bills as they move through Parliament, and capture House of Commons voting divisions — all from the official parliament.uk open data services.

No login, no API key, no cookies, no proxy. Just choose a mode, set your filters, and run.

What this actor does

The UK Parliament Scraper turns the official Parliament APIs into clean, ready-to-use JSON records. Use it to:

  • Track MPs and Lords — find members by name, House, party, gender, or current-membership status.
  • Build member profiles — pull a member's synopsis, contact details (email, phone, office address), registered financial interests, constituencies, government and opposition posts, committee memberships, and party affiliations.
  • Monitor legislation — search bills by title and House (current or originating), with sponsors, full stage history, and publications.
  • Analyse votes — download Commons divisions with aye/no counts and tellers, and optionally the full list of who voted Aye and No.

Modes

ModeWhat you get
Search members (MPs & Lords)A list of members matching your name / House / party / gender filters.
Member profiles & careers (by ID)Full profile plus synopsis, contact details, registered interests, and career: constituencies, government & opposition posts, committees, party affiliations.
Bills (public legislation)Bills matching a title search, with current stage, full stage history, publications, and sponsors.
House of Commons divisions (votes)Recorded votes with aye/no counts, tellers, and (optionally) the full Aye/No member breakdown.

Output fields

Empty fields are omitted, so you never get nulls. Every record carries recordType, sourceUrl, and scrapedAt.

  • Member (searchMembers / memberDetails): memberId, name, listAs, fullTitle, gender, party, partyAbbreviation, house, membershipFrom, membershipFromId, membershipStartDate, membershipEndDate, isActive, membershipStatus, membershipStatusStartDate, thumbnailUrl. In memberDetails only: synopsis, email, phone, address, postcode, registeredInterests (array of {category, interests[]}), plus the career lists representations, governmentPosts, oppositionPosts, committeeMemberships, and partyAffiliations (each an array of {name, startDate, endDate, additionalInfo}).
  • Bill (bills): billId, shortTitle, longTitle, summary, currentHouse, originatingHouse, lastUpdate, isAct, isDefeated, currentStage, currentStageAbbreviation, currentStageHouse, sponsors[], stages[] (array of {stage, abbreviation, house, date}), and publications[] (array of {title, type, date, url}).
  • Division (divisions): divisionId, title, date, publicationUpdated, number, ayeCount, noCount, isDeferred, ayeTellers[], noTellers[]. With includeVoters enabled, also ayes[] and noes[] (each an array of {memberId, name, party, memberFrom}).

Output samples

Each record is a flat JSON object.

Member (searchMembers / memberDetails)

{
"memberId": 4514,
"name": "Sir Keir Starmer",
"listAs": "Starmer, Sir Keir",
"fullTitle": "Rt Hon Sir Keir Starmer MP",
"gender": "M",
"party": "Labour",
"partyAbbreviation": "Lab",
"house": "Commons",
"membershipFrom": "Holborn and St Pancras",
"membershipFromId": 4105,
"membershipStartDate": "2015-05-07T00:00:00",
"isActive": true,
"membershipStatus": "Current Member",
"membershipStatusStartDate": "2024-07-04T00:00:00",
"thumbnailUrl": "https://members-api.parliament.uk/api/Members/4514/Thumbnail",
"synopsis": "The Rt Hon Sir Keir Starmer is the Labour MP for Holborn and St Pancras, and has been an MP continually since 7 May 2015. …",
"email": "keir.starmer.mp@parliament.uk",
"address": "House of Commons, London",
"postcode": "SW1A 0AA",
"representations": [{ "name": "Holborn and St Pancras", "startDate": "2024-07-04T00:00:00", "additionalInfo": "Elected 1 time" }],
"governmentPosts": [{ "name": "Prime Minister", "startDate": "2024-07-05T00:00:00" }],
"recordType": "member",
"sourceUrl": "https://members.parliament.uk/member/4514/career",
"scrapedAt": "2026-07-02T13:31:10+00:00"
}

Career lists (representations, governmentPosts, oppositionPosts, committeeMemberships, partyAffiliations) are only populated in memberDetails mode.

Bill

{
"billId": 2772,
"shortTitle": "Climate and Ecology Bill",
"longTitle": "A Bill to require the Prime Minister to achieve climate and ecology objectives; …",
"currentHouse": "Commons",
"originatingHouse": "Commons",
"lastUpdate": "2021-05-04T14:20:25",
"isAct": false,
"isDefeated": false,
"currentStage": "2nd reading",
"currentStageAbbreviation": "2R",
"currentStageHouse": "Commons",
"sponsors": ["Caroline Lucas"],
"stages": [
{ "stage": "1st reading", "abbreviation": "1R", "house": "Commons", "date": "2020-06-02T00:00:00" },
{ "stage": "2nd reading", "abbreviation": "2R", "house": "Commons", "date": "2021-03-12T00:00:00" }
],
"recordType": "bill",
"sourceUrl": "https://bills.parliament.uk/bills/2772",
"scrapedAt": "2026-07-02T13:32:02+00:00"
}

Division (Commons vote)

{
"divisionId": 1488,
"title": "Social Housing (Regulation) Bill [Lords] Report Stage: Amendment 40",
"date": "2023-03-01T16:57:00",
"publicationUpdated": "2023-03-02T09:36:07",
"number": 182,
"ayeCount": 180,
"noCount": 276,
"isDeferred": false,
"ayeTellers": ["Gerald Jones", "Christian Wakeford"],
"noTellers": ["Scott Mann", "Robert Largan"],
"recordType": "division",
"sourceUrl": "https://votes.parliament.uk/Votes/Commons/Division/1488",
"scrapedAt": "2026-07-02T13:32:35+00:00"
}

Input

FieldTypeApplies toDescription
modeselectallsearchMembers, memberDetails, bills, or divisions.
searchQuerystringsearchMembers / bills / divisionsName (members), or title text (bills, divisions). Leave blank on bills/divisions to browse the latest.
houseselectsearchMembersCommons, Lords, or any.
partyselectsearchMembersParty name (Labour, Conservative, Reform UK, SNP, …).
genderselectsearchMembersMale, Female, or any.
currentOnlybooleansearchMembersOnly current members (default true).
memberIdsarraymemberDetailsMember IDs or members.parliament.uk profile URLs.
billHouseselectbillsRestrict to bills currently before the Commons or Lords.
billOriginatingHouseselectbillsRestrict to bills first introduced in the Commons or Lords.
includeVotersbooleandivisionsAlso fetch the full Aye/No member breakdown per division (one extra request each).
maxItemsintegerallCap on records returned (1–1000, default 50).

Example inputs

Search Labour MPs in the Commons

{ "mode": "searchMembers", "house": "Commons", "party": "Labour", "maxItems": 50 }

Full profiles for Keir Starmer and Rishi Sunak

{ "mode": "memberDetails", "memberIds": ["4514", "4483"] }

Bills about climate

{ "mode": "bills", "searchQuery": "climate", "maxItems": 25 }

Recent Commons divisions on housing

{ "mode": "divisions", "searchQuery": "housing", "maxItems": 25 }

Use cases

  • Political research & journalism — track MPs and Lords by party, House, or constituency and monitor how bills progress.
  • Civic tech & transparency — build voting-record dashboards from Commons divisions with aye/no counts and tellers.
  • Public affairs & lobbying — watch legislation on a topic and identify bill sponsors and current stages.
  • Academic & data science — bulk-export member career histories (posts, committees, affiliations) for network analysis.
  • CRM enrichment — resolve member IDs or profile URLs into full, structured member records.

FAQ

Do I need an account or API key? No. All data comes from the free, public UK Parliament open data services.

Where does the data come from? The official members-api.parliament.uk, bills-api.parliament.uk, and commonsvotes-api.parliament.uk services published by the UK Parliament.

How do I find a member's ID? Open the member on members.parliament.uk — the number in the URL is the ID — or run searchMembers first and reuse the memberId from the results. You can also paste the full profile URL into memberIds.

Does it cover the House of Lords? Yes. Set house to Lords in searchMembers, or fetch any peer by ID in memberDetails. Divisions cover the House of Commons.

How many records can I get? Set maxItems up to 1000 per run. Large result sets are paginated automatically.

Is historical data available? Yes. Turn off currentOnly to include former members, and bills/divisions include past sessions.

Data source

This actor uses the UK Parliament's official open data APIs, which are free and publicly accessible without authentication.