{"id":"e3c6f3b8-3cd4-40d1-81bd-ca3c39803386","type":"API","name":"Erskine May API","slug":"erskine-may-api","description":"An API that allows querying of Erskine May data.","free_access_class":"FREE_NO_AUTH","auth_type":"NONE","homepage_url":"https://www.parliament.uk","docs_url":null,"repo_url":"https://erskinemay-api.parliament.uk/swagger/v1/swagger.json","status":"ACTIVE","verification_state":"VERIFIED","tags":["legislation"],"logo_url":"https://www.google.com/s2/favicons?sz=64&domain=parliament.uk","primary_source_url":"https://erskinemay-api.parliament.uk/swagger/v1/swagger.json","extraction_confidence":"0.70","created_at":"2026-01-01T19:42:22.647Z","updated_at":"2026-10-01T10:55:53.527Z","last_verified_at":"2026-10-01T10:55:53.527Z","deprecated_at":null,"ranking_score":68,"last_ranked_at":"2026-09-24T10:35:54.924Z","last_seen_at":null,"last_validated_at":null,"last_uptime_at":"2026-09-27T07:51:11.438Z","search_vector":"'a':143B 'access':17B,73B,88B,110B,181B 'accessible':166B 'allow':7B,35B 'allows':100B,128B 'an':97B 'and':121B,134B,149B,159B,172B,177B 'api':3A,5B,14B,71B,96A,98B,107B,164B 'as':142B 'authent':69B 'authentication':162B 'authorit':22B 'authoritative':115B 'by':124B 'common':64B 'commons':157B 'convent':57B 'conventions':150B 'data':12B,105B 'develop':83B 'developers':176B 'erskin':1A,10B,19B 'erskine':94A,103B,112B 'for':146B,175B 'free':65B,158B 'govern':58B 'governing':151B 'guid':52B 'guide':145B 'hous':62B 'house':155B 'in':153B 'intend':81B 'intended':174B 'is':140B,165B,173B 'it':127B 'legisl':93C 'materi':92B 'material':185B 'may':2A,11B,20B,95A,104B,113B 'no':161B 'of':102B,136B,156B 'on':117B 'parliament':33B,77B,126B,170B 'parliamentari':26B,90B 'parliamentary':119B,183B 'practic':27B 'practice':120B 'procedur':29B,91B 'procedural':184B 'procedure':122B 'proceed':59B 'proceedings':152B 'programmat':16B 'programmatic':109B 'provid':15B 'provides':108B 'publish':30B 'published':123B 'queri':8B,38B 'query':131B 'querying':101B 'refer':51B 'reference':144B 'requir':67B 'requiring':160B 'research':85B 'researchers':178B 'rule':55B 'rules':148B 'seek':86B 'seeking':179B 'structur':42B,87B 'structure':135B 'structured':180B 'text':40B,133B 'that':99B 'the':114B,132B,137B,147B,154B,163B,168B 'this':106B 'to':111B,130B,182B 'treatis':23B 'treatise':116B 'uk':25B,32B,76B,118B,125B,169B 'use':48B 'used':141B 'user':36B 'users':129B 'via':74B,167B 'websit':78B 'website':171B 'which':139B 'work':45B,138B","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:22.647Z","geographic_scope":"NATIONAL","name_en":null,"description_en":"This API provides programmatic access to Erskine May, the authoritative treatise on UK parliamentary practice and procedure, published by UK Parliament. It allows users to query the text and structure of the work, which is used as a reference guide for the rules and conventions governing proceedings in the House of Commons. Free and requiring no authentication, the API is accessible via the UK Parliament website and is intended for developers and researchers seeking structured access to parliamentary procedural material.","native_lang":"en","access_level":"direct","formats":[],"capability_tier":"sample","trust_score":71,"merged_into_entry_id":null,"identity_key":"API|https://erskinemay-api.parliament.uk/swagger/v1/swagger.json|erskine may api","upstream_ref":null,"access":{"level":"direct","primary":{"kind":"query","label":"Returns a list of index terms by start letter.","method":"GET","url":"https://erskinemay-api.parliament.uk/api/IndexTerm/browse","source":"query_example","runnable":true,"direct":true},"actions":[{"kind":"query","label":"Returns a list of index terms by start letter.","method":"GET","url":"https://erskinemay-api.parliament.uk/api/IndexTerm/browse","source":"query_example","runnable":true,"direct":true},{"kind":"query","label":"Run verified request","method":"GET","url":"https://erskinemay-api.parliament.uk/api/Part","source":"probe","runnable":true},{"kind":"spec","label":"OpenAPI spec","method":"GET","url":"https://erskinemay-api.parliament.uk/swagger/v1/swagger.json","source":"openapi","runnable":false},{"kind":"query","label":"API base URL","method":"GET","url":"https://erskinemay-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":"e3c6f3b8-3cd4-40d1-81bd-ca3c39803386","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":"erskinemay-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-10-01T15:31:01.043Z"},"api_details":{"id":"d5d14977-dc82-4695-a674-3cc105999e24","entry_id":"e3c6f3b8-3cd4-40d1-81bd-ca3c39803386","base_url":"https://erskinemay-api.parliament.uk","openapi_url":"https://erskinemay-api.parliament.uk/swagger/v1/swagger.json","graphql_url":null,"api_version":"v1","spec_format":"openapi","endpoints_count":11,"endpoints":[{"path":"/api/Chapter/{chapterNumber}","method":"GET","description":"Returns a single chapter overview by chapter number."},{"path":"/api/IndexTerm/browse","method":"GET","description":"Returns a list of index terms by start letter."},{"path":"/api/IndexTerm/{indexTermId}","method":"GET","description":"Returns an index term by id."},{"path":"/api/Part","method":"GET","description":"Returns a list of all parts."},{"path":"/api/Part/{partNumber}","method":"GET","description":"Returns a part by part number."},{"path":"/api/Search/IndexTermSearchResults/{searchTerm}","method":"GET","description":"Returns a list of index terms which contain the search term."},{"path":"/api/Search/Paragraph/{reference}","method":"GET","description":"Returns a section overview by reference."},{"path":"/api/Search/ParagraphSearchResults/{searchTerm}","method":"GET","description":"Returns a list of paragraphs which contain the search term."},{"path":"/api/Search/SectionSearchResults/{searchTerm}","method":"GET","description":"Returns a list of sections which contain the search term."},{"path":"/api/Section/{sectionId}","method":"GET","description":"Returns a section by section id."},{"path":"/api/Section/{sectionId},{step}","method":"GET","description":"Returns a section overview by section id and step."}],"rate_limit_info":null,"free_tier_limits":null,"ping_url":null,"created_at":"2026-01-01T19:42:22.806Z","updated_at":"2026-01-01T19:42:22.806Z"},"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":"6bc96d6d-148e-41e3-8ff7-75e1917b2fc8","entry_id":"e3c6f3b8-3cd4-40d1-81bd-ca3c39803386","status":"VERIFIED","last_checked_at":"2026-10-01T10:55:53.132Z","p50_latency_ms":1192,"p95_latency_ms":null,"last_error":null,"consecutive_failures":0,"created_at":"2026-06-08T12:43:18.283Z","updated_at":"2026-10-01T10:55:53.132Z","consecutive_successes":197,"probe_url":"https://erskinemay-api.parliament.uk/api/Part","probe_method":"GET","probe_http_status":200,"probe_content_type":"application/json; charset=utf-8","probe_succeeded_at":"2026-10-01T10:55:53.132Z"},"data_profile":{"id":"1aa768b5-eb87-419a-81ca-009db70aa6fc","entry_id":"e3c6f3b8-3cd4-40d1-81bd-ca3c39803386","profile_source":"openapi","profile_kind":"dataset","dataset_id":null,"fields":[{"name":"chapterNumber","role":"parameter","type":"integer (int32)","label":null,"format":"int32","param_in":"path","required":true,"container":"/api/Chapter/{chapterNumber}","filterable":true,"description":"Chapter overview with the chapter number specified","description_en":"Chapter number used to retrieve its overview."},{"name":"startLetter","role":"parameter","type":"string","label":null,"param_in":"query","container":"/api/IndexTerm/browse","filterable":true,"description":"Index terms by start letter","description_en":"Filters index terms by their starting letter."},{"name":"skip","role":"parameter","type":"integer (int32)","label":null,"format":"int32","param_in":"query","container":"/api/IndexTerm/browse","filterable":true,"description":"The number of records to skip from the first, default is 0.","description_en":"Number of records to skip from the start, default 0."},{"name":"take","role":"parameter","type":"integer (int32)","label":null,"format":"int32","param_in":"query","container":"/api/IndexTerm/browse","filterable":true,"description":"The number of records to return, default is 20, maximum is 20.","description_en":"Number of records to return, default 20, maximum 20."},{"name":"indexTermId","role":"parameter","type":"integer (int32)","label":null,"format":"int32","param_in":"path","required":true,"container":"/api/IndexTerm/{indexTermId}","filterable":true,"description":"Index term by if","description_en":"Identifier used to look up a specific index term."},{"name":"partNumber","role":"parameter","type":"integer (int32)","label":null,"format":"int32","param_in":"path","required":true,"container":"/api/Part/{partNumber}","filterable":true,"description":"Part by part number","description_en":"Part number used to retrieve a specific part."},{"name":"searchTerm","role":"parameter","type":"string","label":null,"param_in":"path","required":true,"container":"/api/Search/IndexTermSearchResults/{searchTerm}","filterable":true,"description":"Index terms which contain search term.","description_en":"Text used to filter index terms containing this term."},{"name":"reference","role":"parameter","type":"string","label":null,"param_in":"path","required":true,"container":"/api/Search/Paragraph/{reference}","filterable":true,"description":"Section overview by reference.","description_en":"Reference code used to look up a section overview."},{"name":"sectionId","role":"parameter","type":"integer (int32)","label":null,"format":"int32","param_in":"path","required":true,"container":"/api/Section/{sectionId}","filterable":true,"description":"Section by id.","description_en":"Identifier used to retrieve a specific section."},{"name":"step","role":"parameter","type":"integer (int32)","label":null,"format":"int32","param_in":"path","required":true,"container":"/api/Section/{sectionId},{step}","filterable":true,"description":"Number of sections to step over from given section.","description_en":"Number of sections to move forward or back from a given section."},{"name":"number","type":"integer (int32)","label":"ErskineMayChapterOverview","format":"int32","description":null,"description_en":"Chapter number within the Erskine May text."},{"name":"title","type":"string","label":"ErskineMayChapterOverview","description":null,"description_en":"Title of the chapter."},{"name":"description","type":"string","label":"ErskineMayChapterOverview","description":null,"description_en":"Short description or overview of the chapter."},{"name":"sections","type":"array<object>","label":"ErskineMayChapterOverview","description":null,"description_en":"List of sections belonging to the chapter."},{"name":"content","type":"string","label":"ErskineMayFootnote","description":null,"description_en":"Text content of the footnote."},{"name":"id","type":"integer (int32)","label":"ErskineMayIndexTerm","format":"int32","description":null,"description_en":"Unique identifier of the index term."},{"name":"term","type":"string","label":"ErskineMayIndexTerm","description":null,"description_en":"The indexed term text."},{"name":"displayAs","type":"string","label":"ErskineMayIndexTerm","description":null,"description_en":"Text used to display the index term."},{"name":"seeLinks","type":"array<object>","label":"ErskineMayIndexTerm","description":null,"description_en":"List of cross-reference links from this index term."},{"name":"references","type":"array<object>","label":"ErskineMayIndexTerm","description":null,"description_en":"List of references associated with the index term."},{"name":"parentTerm","type":"object","label":"ErskineMayIndexTerm","description":null,"description_en":"The parent index term, if this term is nested."},{"name":"childTerms","type":"array<object>","label":"ErskineMayIndexTerm","description":null,"description_en":"List of child index terms nested under this term."},{"name":"seeValue","type":"string","label":"ErskineMayIndexTermSearchResult","description":null,"description_en":"Displayed value for a cross-reference search result."},{"name":"totalResults","type":"integer (int32)","label":"ErskineMayIndexTermSearchResultErskineMaySearch","format":"int32","description":null,"description_en":"Total number of matching search results."},{"name":"searchResults","type":"array<object>","label":"ErskineMayIndexTermSearchResultErskineMaySearch","description":null,"description_en":"List of index term search result items."},{"name":"searchTerms","type":"array<string>","label":"ErskineMayIndexTermSearchResultErskineMaySearch","description":null,"description_en":"List of search terms used or matched in the query."},{"name":"suggestedSearch","type":"string","label":"ErskineMayIndexTermSearchResultErskineMaySearch","description":null,"description_en":"Suggested alternative search term."},{"name":"seeType","type":"string","label":"ErskineMayIndexTermSeeLink","description":null,"description_en":"Type of cross-reference indicated by the see link."},{"name":"paragraphReference","type":"string","label":"ErskineMayParagraphSearchResult","description":null,"description_en":"Reference identifying the matched paragraph."},{"name":"searchResultText","type":"string","label":"ErskineMayParagraphSearchResult","description":null,"description_en":"Text excerpt from the matched paragraph."},{"name":"sectionTitle","type":"string","label":"ErskineMayParagraphSearchResult","description":null,"description_en":"Title of the section containing the match."},{"name":"sectionTitleChain","type":"string","label":"ErskineMayParagraphSearchResult","description":null,"description_en":"Hierarchical chain of section titles leading to this section."},{"name":"chapterTitle","type":"string","label":"ErskineMayParagraphSearchResult","description":null,"description_en":"Title of the chapter containing the match."},{"name":"chapters","type":"array<object>","label":"ErskineMayPart","description":null,"description_en":"List of chapters belonging to the part."},{"name":"titleChain","type":"string","label":"ErskineMaySectionDetail","description":null,"description_en":"Hierarchical chain of titles leading to this section."},{"name":"subSections","type":"array<object>","label":"ErskineMaySectionDetail","description":null,"description_en":"List of subsections nested under this section."},{"name":"parentSectionId","type":"integer (int32)","label":"ErskineMaySectionDetail","format":"int32","description":null,"description_en":"Identifier of the parent section, if any."},{"name":"parentSectionTitle","type":"string","label":"ErskineMaySectionDetail","description":null,"description_en":"Title of the parent section, if any."},{"name":"partTitle","type":"string","label":"ErskineMaySectionDetail","description":null,"description_en":"Title of the part containing this section."},{"name":"contentHtml","type":"string","label":"ErskineMaySectionDetail","description":null,"description_en":"HTML-formatted content of the section."},{"name":"isUpdated","type":"boolean","label":"ErskineMaySectionDetail","description":null,"description_en":"Indicates whether the section has been recently updated."},{"name":"updatedDate","type":"string (date-time)","label":"ErskineMaySectionDetail","format":"date-time","description":null,"description_en":"Date and time the section was last updated."},{"name":"footnotes","type":"array<object>","label":"ErskineMaySectionDetail","description":null,"description_en":"List of footnotes associated with the section."}],"field_count":43,"sample_records":null,"record_count":null,"data_size_bytes":null,"dataset_count":null,"query_examples":[{"url":"https://erskinemay-api.parliament.uk/swagger/v1/swagger.json","curl":"curl -s 'https://erskinemay-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://erskinemay-api.parliament.uk/api/IndexTerm/browse","curl":"curl -s 'https://erskinemay-api.parliament.uk/api/IndexTerm/browse' -H 'Accept: application/json'","label":"Returns a list of index terms by start letter.","method":"GET","description":"Returns a list of index terms by start letter."}],"status":"partial","error_message":null,"profiled_at":"2026-09-29T09:48:48.672Z","run_id":"3ef2ce6b-4215-4193-a130-1207a2ec54ff","created_at":"2026-06-12T19:32:47.372Z","updated_at":"2026-09-29T09:48:48.672Z","license_raw":null,"license_id":null,"consecutive_failure_count":0,"last_error_at":null,"last_error_message":null,"previewable":false,"personal_data":{"status":"none","basis":"no_person_column_cited","grain":"none","allowed":true,"columns":{"direct_identifiers":[],"family_names":[],"given_names":[],"attributes":[],"unresolved_names":[],"measures":["partNumber","totalResults","partTitle"],"entity_identifiers":[]},"publication":null,"publication_evidence":null,"notice":"personal data: no cited column names a natural person (the cited columns are all this reads)"}},"datasets":[],"limits":[],"manifest":{"answer_sha256":"88b9abe7af46a91f6714b1c6e9d179f5fee3458cfa0b9582da8facd445dbf708","answer_sha256_rule":"sha256 (hex, UTF-8) of JSON.stringify(this body) after deleting the keys listed in manifest.stamped_keys from manifest, and deleting manifest itself if it is then empty. The hash was computed before the stamp existed, so no field of the stamp is inside it.","stamped_keys":["answer_sha256","answer_sha256_rule","stamped_keys","row_count","row_count_basis","live","live_basis","created_at","created_at_basis","durable_citation"],"row_count":68,"row_count_basis":"Objects that are elements of a JSON array anywhere in this body, excluding manifest. Not a claim about which collection is the answer. Largest single collection: data_profile.fields[] (43 rows).","live":true,"live_basis":"This body was produced by executing the request.","created_at":"2026-10-01T15:31:01.067Z","created_at_basis":"When this response body was assembled, deliberately OUTSIDE the hashed bytes so the same answer hashes identically on every request. Not the upstream read time — that is provenance[].retrieved_at. A zone-cached replay carries the assembly time, not your receipt time.","durable_citation":"This manifest is produced at response time and is NOT stored. A durable, replayable citation is persisted only on an explicit cite: GET /api/v1/entries/{id-or-slug}/evidence, or the MCP cite_query tool. Both are entry-scoped, because evidence_manifests is entry-shaped; a domain answer spanning several sources has no single entry and cannot be persisted through that path."}}