{"id":"a369c3e4-3047-45d0-b8fa-5d464f3584ce","type":"API","name":"Lords Votes API","slug":"lords-votes-api","description":"An API that allows querying of Lords Votes data.","free_access_class":"FREE_NO_AUTH","auth_type":"NONE","homepage_url":"https://www.parliament.uk","docs_url":null,"repo_url":"https://lordsvotes-api.parliament.uk/swagger/v1/swagger.json","status":"ACTIVE","verification_state":"VERIFIED","tags":["elections"],"logo_url":"https://www.google.com/s2/favicons?sz=64&domain=parliament.uk","primary_source_url":"https://lordsvotes-api.parliament.uk/swagger/v1/swagger.json","extraction_confidence":"0.70","created_at":"2026-01-01T19:42:25.702Z","updated_at":"2026-08-16T07:15:23.869Z","last_verified_at":"2026-08-16T07:15:23.869Z","deprecated_at":null,"ranking_score":65,"last_ranked_at":"2026-08-04T07:50:18.017Z","last_seen_at":null,"last_validated_at":null,"last_uptime_at":"2026-08-06T17:44:44.132Z","search_vector":"'access':16B,50B,93B 'accessible':127B 'allow':7B,28B 'allows':84B,105B 'an':81B,90B 'and':121B,130B,145B 'api':3A,5B,14B,80A,82B,91B 'authent':52B 'authentication':129B 'be':139B 'by':101B 'can':138B 'cover':54B 'covers':131B 'data':12B,33B,89B,110B 'divis':31B 'division':108B 'elect':77C 'freeli':49B 'freely':126B 'from':111B 'hous':18B,72B 'house':95B,149B 'how':115B 'includ':37B 'including':114B 'is':125B 'it':104B,137B 'legisl':58B 'legislative':135B 'lord':1A,10B,20B,36B,74B 'lords':78A,87B,97B,113B,151B 'member':39B 'members':116B 'motion':43B 'motions':120B 'nation':56B 'national':133B 'of':86B,96B,107B,150B 'on':118B 'outcom':69B 'outcomes':146B 'over':152B 'parliament':26B,103B 'pattern':67B 'patterns':144B 'provid':15B 'providing':92B 'publish':23B 'published':100B 'queri':8B,29B 'querying':85B,106B 'question':45B 'questions':122B 'record':22B 'records':99B 'scope':59B,136B 'servic':47B 'service':124B 'specif':42B 'specific':119B 'that':83B 'the':112B,123B,132B,148B 'time':76B,153B 'to':94B,141B 'track':65B,142B 'uk':25B,57B,102B,134B 'use':63B 'used':140B 'vote':2A,11B,21B,32B,40B,66B,109B 'voted':117B 'votes':79A,88B 'voting':98B,143B 'within':70B,147B 'without':51B,128B","popularity_score":"0.0000","maintenance_score":"0.5000","institution_id":"80926881-de89-4d9e-a1c5-f2393d25dac7","institution_type":"GOVERNMENT","country_code":"GB","official_confidence":40,"proof_summary":"official domain (parliament.uk)","source_seed_url":null,"is_public_sector":true,"published_at":"2026-01-01T19:42:25.702Z","geographic_scope":"NATIONAL","name_en":null,"description_en":"An API providing access to House of Lords voting records, published by UK Parliament. It allows querying of division (vote) data from the Lords, including how members voted on specific motions and questions. The service is freely accessible without authentication and covers the national UK legislative scope. It can be used to track voting patterns and outcomes within the House of Lords over time.","native_lang":"en","access_level":"direct","formats":[],"capability_tier":"sample","trust_score":71,"access":{"level":"direct","primary":{"kind":"query","label":"Run verified request","method":"GET","url":"https://lordsvotes-api.parliament.uk/data/Divisions/searchTotalResults","source":"probe","runnable":true},"actions":[{"kind":"query","label":"Run verified request","method":"GET","url":"https://lordsvotes-api.parliament.uk/data/Divisions/searchTotalResults","source":"probe","runnable":true},{"kind":"spec","label":"OpenAPI spec","method":"GET","url":"https://lordsvotes-api.parliament.uk/swagger/v1/swagger.json","source":"openapi","runnable":false},{"kind":"query","label":"API base URL","method":"GET","url":"https://lordsvotes-api.parliament.uk","source":"base_url","runnable":false},{"kind":"landing","label":"Visit homepage","method":"GET","url":"https://www.parliament.uk","source":"homepage","runnable":false}],"formats":[]},"maturity":{"entry_id":"a369c3e4-3047-45d0-b8fa-5d464f3584ce","granularity":"entry","granularity_label":"One unit = one catalog entry. A PROXY for the SCOPE.md §4 ladder, which governs source families, not entries: a family with 400 entries moves this reading 400 times as much as a family with one. Never compare or combine with the source_family reading.","level":"profiled","level_index":3,"level_label":"Profiled","meaning":"Schema, dimensions and licence understood","counts_as_coverage":false,"blocked_by":null,"rungs":[{"level":"discovered","level_index":1,"label":"Discovered","meaning":"Source and metadata recorded","evidence":"membership of the named population the ladder is taken over","counts_as_coverage":false,"met":true,"reached":true,"criterion":"TRUE"},{"level":"verified","level_index":2,"label":"Verified","meaning":"Access tested successfully","evidence":"entries.verification_state = 'VERIFIED'","counts_as_coverage":false,"met":true,"reached":true,"criterion":"entries.verification_state = 'VERIFIED'"},{"level":"profiled","level_index":3,"label":"Profiled","meaning":"Schema, dimensions and licence understood","evidence":"a data profile with at least one field (entry_data_profiles.field_count > 0)","counts_as_coverage":false,"met":true,"reached":true,"criterion":"EXISTS (SELECT 1 FROM entry_data_profiles p WHERE p.entry_id = entries.id AND COALESCE(p.field_count, 0) > 0)"},{"level":"executable","level_index":4,"label":"Executable","meaning":"Queries run through Commodity","evidence":"entries.capability_tier = 'live' — today's proxy for \"queryable through us\"","counts_as_coverage":true,"met":false,"reached":false,"criterion":"entries.capability_tier = 'live'"},{"level":"joinable","level_index":5,"label":"Joinable","meaning":"Canonical identifiers and concepts mapped","evidence":"a field link to a canonical identifier whose sampled VALUES match its format","counts_as_coverage":true,"met":false,"reached":false,"criterion":"EXISTS (SELECT 1 FROM entry_field_links efl WHERE efl.entry_id = entries.id AND efl.identifier_id IS NOT NULL AND efl.value_status = 'match')"},{"level":"reproducible","level_index":6,"label":"Reproducible","meaning":"Snapshots and transformation evidence retained","evidence":"at least one retained evidence manifest (migration 078)","counts_as_coverage":true,"met":false,"reached":false,"criterion":"EXISTS (SELECT 1 FROM evidence_manifests em WHERE em.entry_id = entries.id)"},{"level":"guaranteed","level_index":7,"label":"Guaranteed","meaning":"Monitored against an operational reliability target","evidence":"an active reliability target with a named monitor (migration 096)","counts_as_coverage":true,"met":false,"reached":false,"criterion":"EXISTS (SELECT 1 FROM entry_reliability_targets rt WHERE rt.entry_id = entries.id AND rt.is_active = true)"}],"officialness":{"basis":"catalog_inherited","label":"Inherited from the upstream catalog: this item came from a trusted official government catalog, and that provenance — not per-item proof — is the warrant. Its own proof score is below 80 or it matched no registered institution (apps/worker/src/connectors/catalog/qualify-store.ts).","proof_confidence":40,"proven_threshold":80,"institution_id":"80926881-de89-4d9e-a1c5-f2393d25dac7","definition":"CASE WHEN COALESCE(entries.is_public_sector, false) IS NOT TRUE THEN 'not_official' WHEN COALESCE(entries.official_confidence, 0) >= 80 AND entries.institution_id IS NOT NULL THEN 'per_item_proven' ELSE 'catalog_inherited' END"},"source_family":{"key":"lordsvotes-api.parliament.uk","label":"One unit = one source family, approximated by the serving host of the entry's primary source URL (e.g. bdl.stat.gov.pl). A COMPUTED stand-in for the curated families of SCOPE.md §5, which no table holds yet. A family sits at the highest level any of its entries has reached, because a family is integrated to the depth of its deepest working integration. Never compare or combine with the entry reading."},"generated_at":"2026-08-16T13:48:44.791Z"},"api_details":{"id":"89f76433-39e4-4cfd-9ea4-91094aa6a1e0","entry_id":"a369c3e4-3047-45d0-b8fa-5d464f3584ce","base_url":"https://lordsvotes-api.parliament.uk","openapi_url":"https://lordsvotes-api.parliament.uk/swagger/v1/swagger.json","graphql_url":null,"api_version":"v1","spec_format":"openapi","endpoints_count":5,"endpoints":[{"path":"/data/Divisions/{divisionId}","method":"GET","description":"Return a Division"},{"path":"/data/Divisions/searchTotalResults","method":"GET","description":"Return total results count"},{"path":"/data/Divisions/search","method":"GET","description":"Return a list of Divisions"},{"path":"/data/Divisions/membervoting","method":"GET","description":"Return voting records for a Member"},{"path":"/data/Divisions/groupedbyparty","method":"GET","description":"Return Divisions results grouped by party"}],"rate_limit_info":null,"free_tier_limits":null,"ping_url":null,"created_at":"2026-01-01T19:42:25.872Z","updated_at":"2026-01-01T19:42:25.872Z"},"dataset_details":null,"license":null,"reuse":{"license_id":null,"license_name":null,"license_url":null,"commercial_use":{"status":"unknown","value":null},"redistribution":{"status":"unknown","value":null},"attribution_required":{"status":"unknown","value":null},"share_alike":{"status":"unknown","value":null},"personal_data_warning":{"status":"unknown","value":null},"cache_and_mirror":{"status":"unknown","value":null},"undetermined":["commercial_use","redistribution","attribution_required","share_alike","personal_data_warning","cache_and_mirror"],"basis":"unverified","confidence":0.1,"confidence_tier":"low","source_text":null,"source_url":null,"reviewed_at":null},"license_raw":null,"latest_check":{"id":"278acc60-23a3-40f7-b645-37e2ad9d9ffc","entry_id":"a369c3e4-3047-45d0-b8fa-5d464f3584ce","status":"VERIFIED","last_checked_at":"2026-08-16T07:15:23.603Z","p50_latency_ms":1087,"p95_latency_ms":null,"last_error":null,"consecutive_failures":0,"created_at":"2026-06-08T12:33:59.472Z","updated_at":"2026-08-16T07:15:23.603Z","consecutive_successes":153,"probe_url":"https://lordsvotes-api.parliament.uk/data/Divisions/searchTotalResults","probe_method":"GET","probe_http_status":200,"probe_content_type":"application/json; charset=utf-8","probe_succeeded_at":"2026-08-16T07:15:23.603Z"},"data_profile":{"id":"2b20d82b-6701-4b2b-83aa-0fcd7760146e","entry_id":"a369c3e4-3047-45d0-b8fa-5d464f3584ce","profile_source":"openapi","profile_kind":"dataset","dataset_id":null,"fields":[{"name":"divisionId","role":"parameter","type":"integer (int32)","label":null,"format":"int32","param_in":"path","required":true,"container":"/data/Divisions/{divisionId}","filterable":true,"description":"Division with ID specified","description_en":"Unique identifier of the division."},{"name":"SearchTerm","role":"parameter","type":"string","label":null,"param_in":"query","container":"/data/Divisions/searchTotalResults","filterable":true,"description":null,"description_en":"Text used to search or filter divisions."},{"name":"MemberId","role":"parameter","type":"integer (int32)","label":null,"format":"int32","param_in":"query","required":true,"container":"/data/Divisions/searchTotalResults","filterable":true,"description":null,"description_en":"Identifier of the member to filter results by."},{"name":"IncludeWhenMemberWasTeller","role":"parameter","type":"boolean","label":null,"param_in":"query","container":"/data/Divisions/searchTotalResults","filterable":true,"description":null,"description_en":"Whether to include votes where the member acted as a teller."},{"name":"StartDate","role":"parameter","type":"string (date-time)","label":null,"format":"date-time","param_in":"query","container":"/data/Divisions/searchTotalResults","filterable":true,"description":null,"description_en":"Start of the date range to filter divisions."},{"name":"EndDate","role":"parameter","type":"string (date-time)","label":null,"format":"date-time","param_in":"query","container":"/data/Divisions/searchTotalResults","filterable":true,"description":null,"description_en":"End of the date range to filter divisions."},{"name":"DivisionNumber","role":"parameter","type":"integer (int32)","label":null,"format":"int32","param_in":"query","container":"/data/Divisions/searchTotalResults","filterable":true,"description":null,"description_en":"Sequential number identifying the division."},{"name":"TotalVotesCast.Comparator","role":"parameter","type":"string","label":null,"param_in":"query","container":"/data/Divisions/searchTotalResults","filterable":true,"description":null,"description_en":"Comparison operator applied to the total votes cast filter."},{"name":"TotalVotesCast.ValueToCompare","role":"parameter","type":"integer (int32)","label":null,"format":"int32","param_in":"query","container":"/data/Divisions/searchTotalResults","filterable":true,"description":null,"description_en":"Value compared against the total number of votes cast."},{"name":"Majority.Comparator","role":"parameter","type":"string","label":null,"param_in":"query","container":"/data/Divisions/searchTotalResults","filterable":true,"description":null,"description_en":"Comparison operator applied to the majority filter."},{"name":"Majority.ValueToCompare","role":"parameter","type":"integer (int32)","label":null,"format":"int32","param_in":"query","container":"/data/Divisions/searchTotalResults","filterable":true,"description":null,"description_en":"Value compared against the division's majority."},{"name":"skip","role":"parameter","type":"integer (int32)","label":null,"format":"int32","param_in":"query","container":"/data/Divisions/search","filterable":true,"description":"The number of records to skip. Must be a positive integer. Default is 0","description_en":"Number of records to skip. Must be a positive integer. Default is 0."},{"name":"take","role":"parameter","type":"integer (int32)","label":null,"format":"int32","param_in":"query","container":"/data/Divisions/search","filterable":true,"description":"The number of records to return per page. Must be more than 0. Default is 25","description_en":"Number of records to return per page. Must be more than 0. Default is 25."},{"name":"number","type":"integer (int32)","label":"DivisionGroupByPartyViewModel","format":"int32","description":null,"description_en":"Division number for this group-by-party result."},{"name":"title","type":"string","label":"DivisionGroupByPartyViewModel","description":null,"description_en":"Title of the division."},{"name":"date","type":"string (date-time)","label":"DivisionGroupByPartyViewModel","format":"date-time","description":null,"description_en":"Date the division took place."},{"name":"contentCount","type":"integer (int32)","label":"DivisionGroupByPartyViewModel","format":"int32","description":null,"description_en":"Total number of Content votes recorded."},{"name":"notContentCount","type":"integer (int32)","label":"DivisionGroupByPartyViewModel","format":"int32","description":null,"description_en":"Total number of Not Content votes recorded."},{"name":"content","type":"array<object>","label":"DivisionGroupByPartyViewModel","description":null,"description_en":"List of members or parties who voted Content."},{"name":"notContent","type":"array<object>","label":"DivisionGroupByPartyViewModel","description":null,"description_en":"List of members or parties who voted Not Content."},{"name":"notes","type":"string","label":"DivisionViewModel","description":null,"description_en":"Additional notes about the division."},{"name":"isWhipped","type":"boolean","label":"DivisionViewModel","description":null,"description_en":"Whether the division was subject to a party whip."},{"name":"isGovernmentContent","type":"boolean","label":"DivisionViewModel","description":null,"description_en":"Whether the government position was Content."},{"name":"authoritativeContentCount","type":"integer (int32)","label":"DivisionViewModel","format":"int32","description":"Authoritative content count is the official count. This is the teller content count when tellers are present, but member content count when there are no tellers.","description_en":"Official Content count, using teller counts if tellers were present, otherwise member counts."},{"name":"authoritativeNotContentCount","type":"integer (int32)","label":"DivisionViewModel","format":"int32","description":"Authoritative not content count is the official count. This is the teller not content count when tellers are present, but member not content count when there are no tellers.","description_en":"Official Not Content count, using teller counts if tellers were present, otherwise member counts."},{"name":"divisionHadTellers","type":"boolean","label":"DivisionViewModel","description":"Whether the division had tellers or not","description_en":"Whether the division had tellers."},{"name":"tellerContentCount","type":"integer (int32)","label":"DivisionViewModel","format":"int32","description":"Content count is count recorded by the tellers","description_en":"Content count as recorded by the tellers."},{"name":"tellerNotContentCount","type":"integer (int32)","label":"DivisionViewModel","format":"int32","description":"Not Content count recorded by the tellers","description_en":"Not Content count as recorded by the tellers."},{"name":"memberContentCount","type":"integer (int32)","label":"DivisionViewModel","format":"int32","description":"Member content count is the total tally of all members that voted content","description_en":"Total tally of members who voted Content."},{"name":"memberNotContentCount","type":"integer (int32)","label":"DivisionViewModel","format":"int32","description":"Member not content count is the total tally of all members that voted not content","description_en":"Total tally of members who voted Not Content."},{"name":"sponsoringMemberId","type":"integer (int32)","label":"DivisionViewModel","format":"int32","description":null,"description_en":"Identifier of the member who sponsored the division."},{"name":"isHouse","type":"boolean","label":"DivisionViewModel","description":null,"description_en":"Whether the division was a House division."},{"name":"isInquorate","type":"boolean","label":"DivisionViewModel","description":null,"description_en":"Whether the division failed to meet the required quorum."},{"name":"amendmentMotionNotes","type":"string","label":"DivisionViewModel","description":null,"description_en":"Notes relating to the amendment or motion being voted on."},{"name":"isGovernmentWin","type":"boolean","label":"DivisionViewModel","description":null,"description_en":"Whether the outcome favoured the government's position."},{"name":"remoteVotingStart","type":"string (date-time)","label":"DivisionViewModel","format":"date-time","description":null,"description_en":"Start time of the remote voting window."},{"name":"remoteVotingEnd","type":"string (date-time)","label":"DivisionViewModel","format":"date-time","description":null,"description_en":"End time of the remote voting window."},{"name":"divisionWasExclusivelyRemote","type":"boolean","label":"DivisionViewModel","description":null,"description_en":"Whether the division was conducted entirely by remote voting."},{"name":"contentTellers","type":"array<object>","label":"DivisionViewModel","description":null,"description_en":"List of tellers for the Content side."},{"name":"notContentTellers","type":"array<object>","label":"DivisionViewModel","description":null,"description_en":"List of tellers for the Not Content side."},{"name":"contents","type":"array<object>","label":"DivisionViewModel","description":null,"description_en":"List of members who voted Content."},{"name":"notContents","type":"array<object>","label":"DivisionViewModel","description":null,"description_en":"List of members who voted Not Content."},{"name":"memberId","type":"integer (int32)","label":"MemberViewModel","format":"int32","description":null,"description_en":"Unique identifier of the member."},{"name":"name","type":"string","label":"MemberViewModel","description":null,"description_en":"Full name of the member."},{"name":"listAs","type":"string","label":"MemberViewModel","description":null,"description_en":"Name used for listing the member alphabetically."},{"name":"memberFrom","type":"string","label":"MemberViewModel","description":null,"description_en":"Title or peerage location associated with the member."},{"name":"party","type":"string","label":"MemberViewModel","description":null,"description_en":"Full name of the member's political party."},{"name":"partyColour","type":"string","label":"MemberViewModel","description":null,"description_en":"Colour code associated with the member's party."},{"name":"partyAbbreviation","type":"string","label":"MemberViewModel","description":null,"description_en":"Abbreviated name of the member's party."},{"name":"partyIsMainParty","type":"boolean","label":"MemberViewModel","description":null,"description_en":"Whether the party is classed as a main party."},{"name":"memberWasContent","type":"boolean","label":"MemberVotingRecordViewModel","description":null,"description_en":"Whether the member voted Content."},{"name":"memberWasTeller","type":"boolean","label":"MemberVotingRecordViewModel","description":null,"description_en":"Whether the member acted as a teller."},{"name":"publishedDivision","type":"object","label":"MemberVotingRecordViewModel","description":null,"description_en":"Details of the division this voting record relates to."},{"name":"partyName","type":"string","label":"PartyVoteResultViewModel","description":null,"description_en":"Name of the party for this vote result."},{"name":"voteCount","type":"integer (int32)","label":"PartyVoteResultViewModel","format":"int32","description":null,"description_en":"Number of votes cast by the party."}],"field_count":55,"sample_records":null,"record_count":null,"data_size_bytes":null,"dataset_count":null,"query_examples":[{"url":"https://lordsvotes-api.parliament.uk/swagger/v1/swagger.json","curl":"curl -s 'https://lordsvotes-api.parliament.uk/swagger/v1/swagger.json' -H 'Accept: application/json'","label":"OpenAPI spec","method":"GET","description":"Machine-readable API description (use it to generate clients)."},{"url":"https://lordsvotes-api.parliament.uk/data/Divisions/searchTotalResults","curl":"curl -s 'https://lordsvotes-api.parliament.uk/data/Divisions/searchTotalResults' -H 'Accept: application/json'","label":"Return total results count","method":"GET","description":"Return total results count"}],"status":"partial","error_message":null,"profiled_at":"2026-07-24T19:17:43.031Z","run_id":"76361d48-c2bb-4c57-8f1c-29387a533d2e","created_at":"2026-06-12T19:03:26.047Z","updated_at":"2026-07-24T19:17:43.031Z","license_raw":null,"license_id":null,"consecutive_failure_count":0,"last_error_at":null,"last_error_message":null,"previewable":false},"datasets":[],"limits":[]}