Nimbryxo Studio

Bar Standards Board Barrister Register Scraper

Search the Bar Standards Board's official Barristers' Register for England & Wales by name or chambers, filter by practising status, area of practice, or public access, and browse disciplinary findings and suspensions.

Input schema

Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.

FieldTypeRequiredDescription
modestringrequiredWhat to fetch from the Bar Standards Board register.
searchQuerystringoptionalFor mode=search: barrister name or chambers/organisation name (required). For mode=authorisedBarristers: optional name/chambers filter over the full register. For mode=disciplinaryFindings: optional barrister name filter — leave empty to browse all findings. For mode=entities: optional entity/trading name filter — leave empty to include all entities.
searchFieldstringoptionalWhether `searchQuery` matches the barrister's name or their chambers/organisation (mode=search and mode=authorisedBarristers).
Show all input fields
FieldTypeRequiredDescription
modestringrequiredWhat to fetch from the Bar Standards Board register.
searchQuerystringoptionalFor mode=search: barrister name or chambers/organisation name (required). For mode=authorisedBarristers: optional name/chambers filter over the full register. For mode=disciplinaryFindings: optional barrister name filter — leave empty to browse all findings. For mode=entities: optional entity/trading name filter — leave empty to include all entities.
searchFieldstringoptionalWhether `searchQuery` matches the barrister's name or their chambers/organisation (mode=search and mode=authorisedBarristers).
registerViewstringoptional`Practising` = currently authorised practising barristers. `Sanctioned non-practising` = barristers disbarred or otherwise sanctioned who are no longer authorised to practise.
practisingStatusarrayoptionalRestrict to barristers with these practising statuses. Leave empty for all statuses. Applies to mode=search (practising view only) and mode=authorisedBarristers.
areasOfPracticearrayoptionalRestrict to barristers practising in ANY of these areas of law. Leave empty for all areas. Applies to mode=search (practising view only) and mode=authorisedBarristers.
publicAccessRegisteredstringoptionalFilter by whether the barrister is registered to accept work directly from the public (Public Access scheme). Applies to mode=search (practising view only) and mode=authorisedBarristers.
authorisedToConductLitigationstringoptionalFilter by whether the barrister is authorised to conduct litigation. Applies to mode=search (practising view only) and mode=authorisedBarristers.
sortOrderstringoptionalHow to order the disciplinary findings listing.
findingStatusarrayoptionalRestrict to disciplinary findings with these statuses. Leave empty for all statuses.
disciplinaryActionTypearrayoptionalRestrict to findings with ANY of these sanction types. Leave empty for all types.
findingTypearrayoptionalRestrict to findings from ANY of these hearing types. Leave empty for all types.
findingDateRangestringoptionalRestrict findings to a decision-date window. `custom` uses `findingDateFrom`/`findingDateTo`. The window is applied to each finding's decision date.
findingDateFromstringoptionalStart of the custom decision-date range, format `YYYY-MM-DD` (e.g. `2020-01-01`).
findingDateTostringoptionalEnd of the custom decision-date range, format `YYYY-MM-DD` (e.g. `2020-12-31`).
entityStatusarrayoptionalRestrict to BSB-regulated entities with these authorisation statuses. Leave empty for all statuses.
startUrlsarrayoptionalFull barstandardsboard.org.uk barrister-register or disciplinary_finding URLs to fetch directly.
fetchFullProfilebooleanoptionalFor mode=search and mode=disciplinaryFindings: fetch each record's full detail page for additional fields (chambers address, areas of practice, rights of audience, breach/offence details, etc). Uses one extra HTTP request per record. Not used by mode=authorisedBarristers (the CSV already contains the full record).
maxItemsintegeroptionalHard cap on the number of records emitted in this run. The full authorised-practising register currently has about 18,700 rows.

Download the published input schema

View complete JSON
{
  "description": "Search or bulk-download the Bar Standards Board's official Barristers' Register, browse disciplinary findings or interim suspensions, export BSB-regulated entities, or fetch barrister and finding URLs directly.",
  "properties": {
    "areasOfPractice": {
      "default": [],
      "description": "Restrict to barristers practising in ANY of these areas of law. Leave empty for all areas. Applies to mode=search (practising view only) and mode=authorisedBarristers.",
      "editor": "select",
      "items": {
        "enum": [
          "admiralty",
          "arbitrator-or-umpire-or-mediator",
          "chancery-contentious",
          "chancery-non-contentious",
          "commercial-and-financial-services-1",
          "competition",
          "construction",
          "crime",
          "defamation",
          "employment",
          "european",
          "family-children",
          "family-other",
          "immigration",
          "insolvency",
          "intellectual-property",
          "international",
          "landlord-tenant-non-residential",
          "landlord-tenant-residential",
          "licensing",
          "other",
          "other-common-law",
          "personal-injury",
          "planning",
          "professional-discipline",
          "professional-negligence",
          "public-law-1",
          "revenue"
        ],
        "enumTitles": [
          "Admiralty",
          "Arbitrator, umpire or mediator",
          "Chancery (contentious)",
          "Chancery (non-contentious)",
          "Commercial and Financial Services",
          "Competition",
          "Construction",
          "Crime",
          "Defamation",
          "Employment",
          "European",
          "Family - children",
          "Family - other",
          "Immigration",
          "Insolvency",
          "Intellectual property",
          "International",
          "Landlord & tenant (non-residential)",
          "Landlord & tenant (residential)",
          "Licensing",
          "Other",
          "Other common law",
          "Personal injury",
          "Planning",
          "Professional discipline",
          "Professional negligence",
          "Public Law",
          "Revenue"
        ],
        "type": "string"
      },
      "prefill": [],
      "title": "Areas of practice filter (mode=search)",
      "type": "array",
      "uniqueItems": true
    },
    "authorisedToConductLitigation": {
      "default": "any",
      "description": "Filter by whether the barrister is authorised to conduct litigation. Applies to mode=search (practising view only) and mode=authorisedBarristers.",
      "editor": "select",
      "enum": [
        "any",
        "yes",
        "no"
      ],
      "enumTitles": [
        "Any",
        "Authorised to conduct litigation only",
        "Not authorised to conduct litigation only"
      ],
      "prefill": "any",
      "title": "Authorised to conduct litigation (mode=search)",
      "type": "string"
    },
    "disciplinaryActionType": {
      "default": [],
      "description": "Restrict to findings with ANY of these sanction types. Leave empty for all types.",
      "editor": "select",
      "items": {
        "enum": [
          "disbarment",
          "fine",
          "other",
          "suspension"
        ],
        "enumTitles": [
          "Disbarment",
          "Fine",
          "Other",
          "Suspension"
        ],
        "type": "string"
      },
      "prefill": [],
      "title": "Disciplinary action type filter (mode=disciplinaryFindings)",
      "type": "array",
      "uniqueItems": true
    },
    "entityStatus": {
      "default": [],
      "description": "Restrict to BSB-regulated entities with these authorisation statuses. Leave empty for all statuses.",
      "editor": "select",
      "items": {
        "enum": [
          "authorised",
          "licensed",
          "previouslyAuthorised"
        ],
        "enumTitles": [
          "Currently authorised (BSB Authorised Body)",
          "Currently licensed (BSB Licensed Body / ABS)",
          "Previously authorised (no longer regulated)"
        ],
        "type": "string"
      },
      "prefill": [],
      "title": "Entity status filter (mode=entities)",
      "type": "array",
      "uniqueItems": true
    },
    "fetchFullProfile": {
      "default": true,
      "description": "For mode=search and mode=disciplinaryFindings: fetch each record's full detail page for additional fields (chambers address, areas of practice, rights of audience, breach/offence details, etc). Uses one extra HTTP request per record. Not used by mode=authorisedBarristers (the CSV already contains the full record).",
      "prefill": false,
      "title": "Fetch full profile details",
      "type": "boolean"
    },
    "findingDateFrom": {
      "description": "Start of the custom decision-date range, format `YYYY-MM-DD` (e.g. `2020-01-01`).",
      "editor": "textfield",
      "title": "Finding date from (mode=disciplinaryFindings, findingDateRange=custom)",
      "type": "string"
    },
    "findingDateRange": {
      "default": "",
      "description": "Restrict findings to a decision-date window. `custom` uses `findingDateFrom`/`findingDateTo`. The window is applied to each finding's decision date.",
      "editor": "select",
      "enum": [
        "",
        "pastMonth",
        "pastYear",
        "custom"
      ],
      "enumTitles": [
        "Any time",
        "Past month",
        "Past year",
        "Custom date range"
      ],
      "prefill": "",
      "title": "Finding date range (mode=disciplinaryFindings)",
      "type": "string"
    },
    "findingDateTo": {
      "description": "End of the custom decision-date range, format `YYYY-MM-DD` (e.g. `2020-12-31`).",
      "editor": "textfield",
      "title": "Finding date to (mode=disciplinaryFindings, findingDateRange=custom)",
      "type": "string"
    },
    "findingStatus": {
      "default": [],
      "description": "Restrict to disciplinary findings with these statuses. Leave empty for all statuses.",
      "editor": "select",
      "items": {
        "enum": [
          "final",
          "openToAppeal",
          "appealPending"
        ],
        "enumTitles": [
          "Final",
          "Open to Appeal",
          "Appeal Pending"
        ],
        "type": "string"
      },
      "prefill": [],
      "title": "Finding status filter (mode=disciplinaryFindings)",
      "type": "array",
      "uniqueItems": true
    },
    "findingType": {
      "default": [],
      "description": "Restrict to findings from ANY of these hearing types. Leave empty for all types.",
      "editor": "select",
      "items": {
        "enum": [
          "determination-by-consent",
          "disciplinary-tribunal-3-person",
          "disciplinary-tribunal-5-person",
          "visitors-hearing-appeal"
        ],
        "enumTitles": [
          "Determination By Consent",
          "Disciplinary Tribunal (3 person)",
          "Disciplinary Tribunal (5 Person)",
          "Visitors Hearing (appeal)"
        ],
        "type": "string"
      },
      "prefill": [],
      "title": "Hearing type filter (mode=disciplinaryFindings)",
      "type": "array",
      "uniqueItems": true
    },
    "maxItems": {
      "default": 30,
      "description": "Hard cap on the number of records emitted in this run. The full authorised-practising register currently has about 18,700 rows.",
      "maximum": 20000,
      "minimum": 1,
      "prefill": 1,
      "title": "Max items",
      "type": "integer"
    },
    "mode": {
      "default": "search",
      "description": "What to fetch from the Bar Standards Board register.",
      "editor": "select",
      "enum": [
        "search",
        "authorisedBarristers",
        "disciplinaryFindings",
        "interimSuspensions",
        "byUrl",
        "entities"
      ],
      "enumTitles": [
        "Search the Barristers' Register (by name / chambers)",
        "Full authorised-practising register (bulk CSV, ~18,700 barristers)",
        "Browse past disciplinary findings",
        "Barristers with interim suspensions or conditions",
        "Fetch specific barrister / finding URLs",
        "BSB-regulated entities (chambers / legal businesses)"
      ],
      "prefill": "search",
      "title": "Mode",
      "type": "string"
    },
    "practisingStatus": {
      "default": [],
      "description": "Restrict to barristers with these practising statuses. Leave empty for all statuses. Applies to mode=search (practising view only) and mode=authorisedBarristers.",
      "editor": "select",
      "items": {
        "enum": [
          "dual-capacity",
          "employed",
          "self-employed"
        ],
        "enumTitles": [
          "Dual Capacity",
          "Employed",
          "Self Employed"
        ],
        "type": "string"
      },
      "prefill": [],
      "title": "Practising status filter (mode=search)",
      "type": "array",
      "uniqueItems": true
    },
    "publicAccessRegistered": {
      "default": "any",
      "description": "Filter by whether the barrister is registered to accept work directly from the public (Public Access scheme). Applies to mode=search (practising view only) and mode=authorisedBarristers.",
      "editor": "select",
      "enum": [
        "any",
        "yes",
        "no"
      ],
      "enumTitles": [
        "Any",
        "Public Access registered only",
        "Not Public Access registered only"
      ],
      "prefill": "any",
      "title": "Public Access registered (mode=search)",
      "type": "string"
    },
    "registerView": {
      "default": "practising",
      "description": "`Practising` = currently authorised practising barristers. `Sanctioned non-practising` = barristers disbarred or otherwise sanctioned who are no longer authorised to practise.",
      "editor": "select",
      "enum": [
        "practising",
        "sanctionedNonPractising"
      ],
      "enumTitles": [
        "Practising barristers",
        "Sanctioned non-practising barristers (disbarred etc.)"
      ],
      "prefill": "practising",
      "title": "Register view (mode=search)",
      "type": "string"
    },
    "searchField": {
      "default": "name",
      "description": "Whether `searchQuery` matches the barrister's name or their chambers/organisation (mode=search and mode=authorisedBarristers).",
      "editor": "select",
      "enum": [
        "name",
        "organisation"
      ],
      "enumTitles": [
        "Barrister name",
        "Chambers / organisation name"
      ],
      "prefill": "name",
      "title": "Search by (mode=search)",
      "type": "string"
    },
    "searchQuery": {
      "default": "",
      "description": "For mode=search: barrister name or chambers/organisation name (required). For mode=authorisedBarristers: optional name/chambers filter over the full register. For mode=disciplinaryFindings: optional barrister name filter — leave empty to browse all findings. For mode=entities: optional entity/trading name filter — leave empty to include all entities.",
      "editor": "textfield",
      "prefill": "smith",
      "title": "Search query (mode=search, authorisedBarristers, disciplinaryFindings, entities)",
      "type": "string"
    },
    "sortOrder": {
      "default": "recent",
      "description": "How to order the disciplinary findings listing.",
      "editor": "select",
      "enum": [
        "recent",
        "relevance"
      ],
      "enumTitles": [
        "Most recent first",
        "Relevance"
      ],
      "prefill": "recent",
      "title": "Sort order (mode=disciplinaryFindings)",
      "type": "string"
    },
    "startUrls": {
      "default": [],
      "description": "Full barstandardsboard.org.uk barrister-register or disciplinary_finding URLs to fetch directly.",
      "editor": "stringList",
      "prefill": [
        "https://www.barstandardsboard.org.uk/barristers-register/7C5DCA7B263721A6CB12F687568766BD.html"
      ],
      "title": "Barrister / finding URLs (mode=byUrl)",
      "type": "array"
    }
  },
  "required": [
    "mode"
  ],
  "schemaVersion": 1,
  "title": "Bar Standards Board Barrister Register Scraper Input",
  "type": "object"
}

Output schema

Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.

FieldTypeRequiredDescription
barristersstringoptionalDataset containing all scraped barrister, disciplinary-finding, interim-suspension and entity records.

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "Barristers, past disciplinary findings, interim suspensions and BSB-regulated entities from the Bar Standards Board's official public register (barstandardsboard.org.uk).",
  "properties": {
    "barristers": {
      "description": "Dataset containing all scraped barrister, disciplinary-finding, interim-suspension and entity records.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Bar Standards Board register records",
      "type": "string"
    }
  },
  "title": "Bar Standards Board Barrister Register Scraper Output"
}

Dataset schema

Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.

Download the published dataset schema

View complete JSON
{
  "actorSpecification": 1,
  "views": {
    "overview": {
      "display": {
        "component": "table",
        "properties": {}
      },
      "title": "Barristers, findings & entities",
      "transformation": {
        "fields": [
          "recordType",
          "barristerName",
          "currentPractisingStatus",
          "memberStatus",
          "dateOfCall",
          "innOfCourt",
          "primaryPracticeAddress",
          "areasOfPractice",
          "sourceUrl"
        ]
      }
    }
  }
}

Key-value schema

Published key-value store definitions, when provided by this build.

This definition is not present in the default published build. See the published README for available documentation.

Published README

Read the full published documentation

Bar Standards Board Barrister Register Scraper

Scrape the Bar Standards Board's official public register for England & Wales. Search the Barristers' Register by name or chambers, pull the complete authorised-practising register in a single run, browse past disciplinary findings with sanctions, costs and decision documents, check interim suspensions, export BSB-regulated entities, or fetch specific barrister and finding URLs directly. Everything comes from barstandardsboard.org.uk, the statutory regulator of barristers in England and Wales. No login, no cookies, no proxy configuration and no API key are needed.

What this actor does

  • Six modes:
    • authorisedBarristers — the full authorised-practising register (about 18,700 barristers) from the BSB's own published CSV, with contact details, member status, reserved activities and any current disciplinary finding
    • search — live search of the Barristers' Register by barrister name or chambers/organisation name
    • disciplinaryFindings — browse the public register of past disciplinary findings, sorted by date or relevance
    • interimSuspensions — barristers currently subject to an interim suspension or interim conditions
    • entities — BSB-regulated legal-services businesses (authorised bodies, licensed bodies/ABS, and previously-authorised bodies), including their reserved legal activities
    • byUrl — fetch one or more barrister-register or disciplinary-finding URLs directly
  • Filters that match the regulator's own register: practising status, 28 areas of practice, Public Access registration, conduct-of-litigation authorisation, register view (practising vs. sanctioned non-practising)
  • Disciplinary filters: finding status, sanction type, hearing type, and a decision-date window (past month, past year, or a custom range)
  • Deep profiles: call date, Inn of Court, practising certificate validity, chambers address and switchboard, other addresses and numbers, rights of audience, areas of practice, other entitlements, youth-courts registration and disciplinary history
  • Decision documents: finding records include sanction, costs, status and links to published decision/report documents where the BSB provides them
  • Empty fields are always omitted — every value is real extracted data, never null, N/A or a placeholder sentence

Output per barrister (recordType: "barrister")

search returns the listing fields plus enrichment from each profile page. authorisedBarristers returns the full CSV record, which also carries the address split and member status. Fields the source does not publish for an individual are omitted.

Field Description
barristerName Full name as published, including title and post-nominal honours where present
title / forenames / surname / honours Name parts from the full-register CSV
barristerId BSB register ID extracted from the profile URL (search / byUrl only)
barristerUrl / sourceUrl Canonical register profile URL, or the CSV download URL for full-register records
practisingStatusBadge Badge shown on the register, e.g. Practising, Disbarred
currentPractisingStatus Employed, Self Employed, Dual Capacity, Disbarred, etc.
memberStatus Membership position, e.g. Tenant, Door Tenant, Sole Practitioner, Manager (BSB Authorised Body)
dateOfCall Month and year called to the Bar
innOfCourt Inn of Court
practisingCertificateValid Practising certificate validity period
primaryPracticeAddress Main chambers / employer address
addressName, addressFloorStreet, addressTown, addressCounty, addressPostcode, addressCountry Address components from the full-register CSV
primaryPracticeSwitchboardNumber Main switchboard number
otherPracticeAddresses Additional practice addresses listed for the barrister
otherPracticeSwitchboardNumbers Additional switchboard numbers
fax Fax number, where the BSB publishes one
rightsOfAudience Rights of audience granted
publicAccessRegistered Whether registered for the Public Access scheme (boolean)
authorisedToConductLitigation Whether authorised to conduct litigation (boolean)
areasOfPractice Declared areas of practice
otherEntitlements Other regulatory entitlements, e.g. probate activities, reserved instrument activities, administration of oaths
youthCourtsRegistered Whether registered for youth courts (boolean)
disciplinaryFindings List of findings with findingId, findingDate, hearingType, findingUrl, breachDetails, offenceDetails, sanction, costs, findingStatus. findingDate is ISO 8601: YYYY-MM-DD for full decision dates, YYYY-MM for the month-precision summary boxes shown on barrister profiles. The summary boxes themselves carry only date/type/URL/ID; the other finding fields are available in disciplinaryFindings and byUrl finding records and in CSV-nested findings
registerView practising or sanctionedNonPractising
recordType, scrapedAt Always present

Output per disciplinary finding (recordType: "disciplinaryFinding")

Field Description
barristerName Barrister subject to the finding
barristerRegisterUrl / barristerId Link back to the barrister's register entry
findingUrl / findingId / sourceUrl Canonical finding URL and ID
sanction Sanction imposed
costs Costs order, where published
findingStatus Final, Open to Appeal or Appeal Pending
hearingType Tribunal / hearing type
findingDate Decision date in ISO 8601 (YYYY-MM-DD)
currentPractisingStatus, dateOfCall, innOfCourt Barrister's details at the time of the finding
breachDetails Rules / Code of Conduct provisions breached
offenceDetails Narrative description of the misconduct
documents Published decision/report documents as {documentTitle, documentUrl, documentType}

Output per interim suspension (recordType: "interimSuspension")

Field Description
barristerName Name of the suspended barrister
details Full text of the suspension or interim conditions
sourceUrl Link to the listing anchor
recordType, scrapedAt Always present

Output per entity (recordType: "entity")

Field Description
entityName Name of the BSB-regulated entity
tradingNameOf Underlying company name when the entity trades under a different name
entityStatus authorised, licensed or previouslyAuthorised
entityType Legal structure, e.g. Limited Liability Partnership, Private Limited Company
authorisationValidFrom Date authorisation or licence took effect
renewalDate Next renewal date (current entities)
authorisationValidTo Date authorisation ended (previously-authorised entities)
practisingAddress / practisingAddressSecondary Registered practice address(es)
telephone Telephone number, where published
managers Named managers / partners
headOfLegalPractice Head of Legal Practice (HOLP)
headOfFinanceAndAdministration Head of Finance and Administration (HOFA)
administrationOfOaths Authorised to administer oaths (boolean)
authorisedToConductLitigation Authorised to conduct litigation (boolean)
fullRightsOfAudience Authorised to exercise full rights of audience (boolean)
probateActivities Authorised for probate activities (boolean)
reservedInstrumentActivities Authorised for reserved instrument activities (boolean)
approvedTrainingOrganisation Approved training organisation (boolean)
immigrationAdvice Authorised to undertake immigration advice (boolean)
sourceUrl The BSB entities-register workbook URL
recordType, scrapedAt Always present

Input

Field Type Default Description
mode select search search / authorisedBarristers / disciplinaryFindings / interimSuspensions / entities / byUrl
searchQuery string – Barrister/chambers query for search (required); optional name/chambers filter for authorisedBarristers, disciplinaryFindings and entities
searchField select name Match searchQuery against name or organisation (mode=search and authorisedBarristers)
registerView select practising practising or sanctionedNonPractising (mode=search)
practisingStatus multi-select – Dual Capacity / Employed / Self Employed (mode=search, authorisedBarristers)
areasOfPractice multi-select – Any of 28 practice areas (mode=search, authorisedBarristers)
publicAccessRegistered select any any / yes / no (mode=search, authorisedBarristers)
authorisedToConductLitigation select any any / yes / no (mode=search, authorisedBarristers)
sortOrder select recent recent or relevance (mode=disciplinaryFindings)
findingStatus multi-select – Final / Open to Appeal / Appeal Pending (mode=disciplinaryFindings)
disciplinaryActionType multi-select – Disbarment / Fine / Other / Suspension (mode=disciplinaryFindings)
findingType multi-select – Determination by consent, Disciplinary Tribunal (3/5 person), Visitors Hearing (appeal) (mode=disciplinaryFindings)
findingDateRange select any pastMonth / pastYear / custom (mode=disciplinaryFindings)
findingDateFrom / findingDateTo string – Custom decision-date boundaries in YYYY-MM-DD (findingDateRange=custom)
entityStatus multi-select – authorised / licensed / previouslyAuthorised (mode=entities)
startUrls array – Barrister or finding URLs (mode=byUrl)
fetchFullProfile boolean true Fetch each search/finding detail page for extra fields (not used by authorisedBarristers)
maxItems integer 30 Hard cap on emitted records (1–20,000)

Example: pull the complete authorised-practising register

{
  "mode": "authorisedBarristers",
  "maxItems": 20000
}

Example: full register filtered to crime barristers with Public Access

{
  "mode": "authorisedBarristers",
  "areasOfPractice": ["crime"],
  "publicAccessRegistered": "yes",
  "maxItems": 500
}

Example: search barristers at a chambers

{
  "mode": "search",
  "searchQuery": "no5",
  "searchField": "organisation",
  "areasOfPractice": ["crime", "employment"],
  "authorisedToConductLitigation": "yes",
  "maxItems": 50
}

Example: browse recent disciplinary findings

{
  "mode": "disciplinaryFindings",
  "sortOrder": "recent",
  "maxItems": 50
}

Example: disbarment or suspension in a custom period

{
  "mode": "disciplinaryFindings",
  "disciplinaryActionType": ["disbarment", "suspension"],
  "findingDateRange": "custom",
  "findingDateFrom": "2020-01-01",
  "findingDateTo": "2020-12-31",
  "maxItems": 50
}

Example: barristers under interim suspension

{
  "mode": "interimSuspensions",
  "maxItems": 50
}

Example: currently-authorised BSB entities matching a name

{
  "mode": "entities",
  "searchQuery": "law",
  "entityStatus": ["authorised", "licensed"],
  "maxItems": 200
}

Example: fetch specific barrister or finding URLs

{
  "mode": "byUrl",
  "startUrls": [
    "https://www.barstandardsboard.org.uk/barristers-register/7C5DCA7B263721A6CB12F687568766BD.html",
    "https://www.barstandardsboard.org.uk/disciplinary_finding/183742.html"
  ]
}

Use cases

  • Due diligence — verify a barrister's practising status, certificate validity, Inn of Court and disciplinary history before instructing them
  • Legal directories and comparison sites — import the full authorised-practising register with chambers, contact details and practice areas
  • Compliance monitoring — track new disciplinary findings, sanctions and interim suspensions as they are published
  • Recruitment and chambers research — size practice areas, identify Public Access or litigation-authorised barristers, and map chambers
  • Regulatory analytics — measure the distribution of practising statuses, areas of practice and reserved activities across England & Wales
  • Journalism and legal research — cross-reference a finding's sanction, costs and published decision documents with case reporting

Limitations

  • The BSB's Disqualified persons page is currently empty ("There are currently no persons disqualified"), so it is not exposed as a mode. This is a currently-empty surface, not a proven unparseable page.
  • The full-register CSV does not publish a barrister profile URL or register ID. Those two fields are available in search and byUrl records, but not in authorisedBarristers records.
  • The register's own date filter is unreliable and can return the full findings list for any date selected. The actor therefore applies the decision-date window to each finding's actual decision date, so the filter works as expected.
  • Historical findings before 2002 are not published by the BSB.
  • Some addresses or phone numbers are genuinely unpublished by the BSB for a particular barrister; those fields are omitted rather than invented.

FAQ

Is this official data? Yes. Every record comes from the Bar Standards Board's own public register at barstandardsboard.org.uk, the statutory regulator for barristers in England and Wales.

What is the difference between the search and authorisedBarristers modes? search asks the live register for a name or chambers match and can enrich each result from its profile page. authorisedBarristers downloads the BSB's published full-register CSV in one request and returns every authorised practising barrister with the complete CSV field set. Use the CSV mode for bulk work and search for targeted lookups.

What is the difference between practising and sanctionedNonPractising? practising covers currently authorised barristers who hold a practising certificate. sanctionedNonPractising covers disbarred or unregistered barristers who have a current disciplinary finding.

Why do some barrister records have fewer fields than others? The register only publishes certain details for certain statuses. For example, a disbarred barrister has no current chambers address, so that field is omitted rather than shown as empty.

Does searchQuery support partial matches? Yes. The register performs a substring match on names or chambers/organisation names, the same as the site's own search box. The full-register mode applies the same partial-match rule to the CSV.

Can I get every barrister in one run? Yes. Use mode: "authorisedBarristers" and set maxItems to 20000, the current maximum and above the register size (18,739 rows at the latest verification).

How current is the register? The BSB updates the register continuously, with up to an hour of processing lag. The full-register CSV is regenerated by the BSB; sourceUrl identifies the current downloadable asset (the URL itself does not encode a snapshot date).

Can I look up a barrister when I only have a URL? Yes. Use mode: "byUrl" with full barrister-register or disciplinary_finding URLs.

Are decision documents always available? No. The BSB publishes a decision or report document for some findings only. When a document is published, it appears in documents; otherwise the field is omitted.

Do I need to set up a proxy? No. The actor connects to the public register directly. Just fill in the input and run it.

Python quickstart

Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.

Open the step-by-step Python guide →

Source build pxEtWDylYNl6lItlw. Documentation is regenerated from the default published build; private drafts are not included.