Vexaloom Labs

Use General Osteopathic Council Register Scraper with Python

Search the General Osteopathic Council's public register (osteopathy.org.uk) by postcode/town, surname, or practice features, or look up exact registration numbers. Returns status, qualifications, training, and practice details.

1. Choose the data you need

Review the published README for supported collection modes, examples, and limits. The recipe below uses the current published input definition.

2. Prepare a source-based input

This JSON contains published prefills and required-field defaults. Review every value for your task before running it; it is not a promise of successful collection.

{
  "disabilityAccess": false,
  "homeVisit": false,
  "maxItems": 3,
  "mode": "search",
  "radius": "10mi",
  "registrationNumbers": [
    "1766"
  ],
  "status": "",
  "surname": "Smith",
  "welshSpoken": false
}

Download input.example.json and save your reviewed copy as input.json.

FieldTypeRequiredDescription
modestringrequiredChoose how to query the register.
surnamestringoptionalExact surname as held by the register, case-insensitive (for example Smith). Partial surnames such as Smit do not match. Combine with location or practice features to narrow results.
locationstringoptionalExact town, county or country name, or a UK postcode/outcode such as SW1A 1AA or SW1A. Town names must match the register's own location labels.
radiusstringoptionalRadius used when location is a UK postcode or outcode. Town and county searches use the register's own boundary.
firstNamestringoptionalOptional case-insensitive contains filter applied to the first-name part of the register name.
disabilityAccessbooleanoptionalOnly return osteopaths whose practice reports disabled access. Partial access counts as access, matching the register's own filter.
homeVisitbooleanoptionalOnly return osteopaths whose practice reports home visits.
welshSpokenbooleanoptionalOnly return osteopaths whose practice reports that Welsh is spoken.
statusstringoptionalOptional exact status filter applied after each register entry is read. Leave blank for every status.
registeredAfterstringoptionalOptional ISO date (YYYY-MM-DD). Only return entries whose date of registration is on or after this date.
registeredBeforestringoptionalOptional ISO date (YYYY-MM-DD). Only return entries whose date of registration is on or before this date.
qualificationContainsstringoptionalOptional case-insensitive text filter over the published qualifications, for example Ost or DO.
registrationNumbersarrayoptionalExact registration numbers for byRegistrationNumbers mode. Strings or integers are accepted; duplicates and leading zeros are normalised. Only the first 10,000 unique numbers are read.
maxItemsintegeroptionalHard cap on emitted osteopath records. The full practice-linked register currently holds about 5,688 unique registrants.

3. Start an Actor run

Set APIFY_TOKEN in your environment. Python 3.10 or newer is sufficient; this recipe uses no third-party packages.

Execution may incur charges. Review current pricing on Apify. The request asks for a 120-second timeout and a charge limit; these settings are subject to Apify’s pricing and do not guarantee an all-inclusive spending cap.

import json
import os
import urllib.request

# Save the schema-derived example as input.json; review and edit it first.
with open("input.json", encoding="utf-8") as stream:
    actor_input = json.load(stream)

token = os.environ["APIFY_TOKEN"]
request = urllib.request.Request(
    "https://api.apify.com/v2/acts/D0z92JrueW1JAhXKL/runs?timeout=120&maxTotalChargeUsd=0.50",
    data=json.dumps(actor_input).encode("utf-8"),
    headers={"Authorization": "Bearer " + token, "Content-Type": "application/json"},
    method="POST",
)
# This starts a potentially billable run. Do not automatically retry this POST.
with urllib.request.urlopen(request, timeout=40) as response:
    run = json.load(response)["data"]
print("Run ID:", run["id"])
print("Status:", run["status"])
# Inspect and download results in Apify Console once the run succeeds.

4. Inspect the actual results

Open the run in Apify Console and wait for a successful completion. Use the published output schema to locate results and the dataset schema to understand declared views. Missing or optional record fields must not be treated as guaranteed values.

Osteopaths from the General Osteopathic Council public register: identity, GOsC registration number, practising status and regulatory flags, hearing-notes link, registration and qualification dates, every practice with contacts, primary-practice fields and optional distance.

Questions before you run

Which inputs are required?

The published required fields are mode

What does this guide verify?

The fields, prefills, and schema links are rendered from the published build. This is a usage recipe, not a paid live extraction test. Source availability and collection results can vary.

What if the run request times out?

Check Apify Console before retrying. The first request may already have created a run. Do not automatically repeat a run-creation POST.

Generated from source build SH8rgwf1fMdTdbNJP and its README and schemas. Source changes regenerate this guide; no third-party editorial claims are inferred.