UK GMC Doctors Register Scraper (LRMP Verification)
Pricing
from $17.00 / 1,000 results
UK GMC Doctors Register Scraper (LRMP Verification)
Scrape the UK GMC List of Registered Medical Practitioners. Search doctors by name or GMC reference number and get full name, GMC number, registration status, licence to practise, GP and Specialist register entries, specialty, qualification and registration dates. Export to JSON, CSV or Excel.
Pricing
from $17.00 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
3 hours ago
Last modified
Categories
Share
UK GMC Doctors Register Scraper (LRMP Verification)
Here is one real result, with every field the actor returns:
{"recordType": "doctor","fullName": "Aaron David SMITH","gmcReferenceNumber": "7490012","profession": "Doctor","registrationStatus": "Registered with a licence to practise","onGpRegister": false,"onSpecialistRegister": false,"specialistRegisterSpecialty": null,"trainingProgramme": "Gastroenterology","registeredQualification": "MB ChB 2015 University of Manchester","provisionalRegistrationDate": "20 Jul 2015","fullRegistrationDate": "03 Aug 2016","gender": "Male","subjectToRevalidation": true,"designatedBody": "NHSE Education North West","responsibleOfficer": "Roisin Haslett","detailUrl": "https://www.gmc-uk.org/registrants/7490012","source": "UK General Medical Council (GMC) Register","observedAt": "2026-08-10T14:36:26.827Z","qualificationYear": "2015","searchQuery": "Smith"}
The most complete UK GMC doctors register scraper available. It returns every field the GMC List of Registered Medical Practitioners publishes for each doctor, plus optional full-profile enrichment (GP and Specialist register status, specialty, qualification, registration dates and revalidation), and gives you four filters to target exactly the doctors you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor searches the UK General Medical Council List of Registered Medical Practitioners (LRMP), applies the filters you pass as input (names, GMC numbers, register, sounds-like matching), reads each matching registrant, and writes one normalized record per doctor to the run's dataset. Each record carries the full name, GMC reference number, profession and registration status. When fetchDetails is on, the actor opens each doctor's profile and adds GP and Specialist register status and specialty, training programme, registered qualification, provisional and full registration dates, revalidation status, designated body and responsible officer. Missing source values are returned as null.
The GMC register sits behind a Cloudflare challenge. The actor is HTTP-only; each page is fetched through a hosted solver service, so you never configure a proxy or a browser. Because each read passes through the solver, larger runs take longer than an unprotected source.
Quickstart
Open the actor, paste this into the input, and press Run. It returns registered doctors named Smith with full profile detail.
{"queries": ["Smith"],"registerType": "doctors","maxRecords": 20}
Provide at least one name in queries, or at least one GMC number in registrationNumbers. GMC-number lookups are the fastest and most exact. Each name runs its own search across the register.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
queries | string[] | conditional | (none) | One or more doctor names to search, for example ["Smith"] or ["John Smith"]. Each is searched separately. Required unless you pass registrationNumbers. |
registrationNumbers | string[] | no | (none) | Look up specific doctors directly by 7-digit GMC reference number. Fastest and most exact. |
registerType | enum | no | doctors | Which registrants to include when searching by name: doctors, gp (on the GP Register), specialist (on the Specialist Register), or all. |
soundsLike | boolean | no | false | Broaden a name search to phonetically similar spellings. |
fetchDetails | boolean | no | true | Open each doctor's profile to add register status, specialty, qualification, registration dates and revalidation. Turn off for a faster name, status and gender listing. |
maxRecords | integer | no | 20 | Maximum number of doctors to collect across all searches. |
At least one of queries or registrationNumbers must be supplied.
Output reference
One dataset item per doctor. Types: string, boolean, or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
recordType | string | Always doctor. |
fullName | string | Full registered name of the doctor. |
gmcReferenceNumber | string | 7-digit GMC reference number, unique per doctor. |
profession | string | Profession label, for example Doctor. |
registrationStatus | string | Registration status, for example Registered with a licence to practise. |
onGpRegister | boolean | true if on the GP Register, false if not, null when not fetched. |
onSpecialistRegister | boolean | true if on the Specialist Register, false if not, null when not fetched. |
specialistRegisterSpecialty | string | Specialty held on the Specialist Register, or null. |
trainingProgramme | string | Training programme when in training, or null. |
registeredQualification | string | Primary registered medical qualification and awarding body. |
provisionalRegistrationDate | string | Date of provisional registration. |
fullRegistrationDate | string | Date of full registration. |
gender | string | Male, Female, or null when not published. |
subjectToRevalidation | boolean | true if subject to revalidation, false if not, null when unknown. |
designatedBody | string | Designated body responsible for revalidation, or null. |
responsibleOfficer | string | Responsible officer for the doctor, or null. |
qualificationYear | string | Year of primary qualification when shown in the list row. |
detailUrl | string | Direct link to the doctor's page on the GMC register. |
searchQuery | string | The name query this record was found under, or absent for a direct GMC-number lookup. |
source | string | Always UK General Medical Council (GMC) Register. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | Present only on a failed run; a single item with this field is written instead of doctors. |
Example output record
Real record from a live run (input {"queries":["Smith"],"registerType":"doctors","maxRecords":20}):
{"recordType": "doctor","fullName": "Aaron David SMITH","gmcReferenceNumber": "7490012","profession": "Doctor","registrationStatus": "Registered with a licence to practise","onGpRegister": false,"onSpecialistRegister": false,"specialistRegisterSpecialty": null,"trainingProgramme": "Gastroenterology","registeredQualification": "MB ChB 2015 University of Manchester","provisionalRegistrationDate": "20 Jul 2015","fullRegistrationDate": "03 Aug 2016","gender": "Male","subjectToRevalidation": true,"designatedBody": "NHSE Education North West","responsibleOfficer": "Roisin Haslett","detailUrl": "https://www.gmc-uk.org/registrants/7490012","source": "UK General Medical Council (GMC) Register","observedAt": "2026-08-10T14:36:26.827Z","qualificationYear": "2015","searchQuery": "Smith"}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~uk-gmc-doctors-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"queries":["Smith"],"registerType":"doctors","maxRecords":20}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~uk-gmc-doctors-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"queries":["Patel"],"registerType":"specialist","maxRecords":100}'
Apify CLI:
apify call scrapers_lat/uk-gmc-doctors-scraper \--input '{"registrationNumbers":["7490012"]}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per doctor returned (
resultevent). See the pricing tab for the current per-result price. - Detail add-on. When
fetchDetailsis on, each doctor whose full profile is successfully fetched also charges adetailsevent. SetfetchDetailstofalseto skip this. - No charge on failure. If a run errors or matches nothing, the actor writes a single item with an
errorfield and does not charge for it. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run. Upgrade for a higher
maxRecords. - Solver-fronted source. The GMC register is behind Cloudflare, so pages are fetched through a hosted solver. Runs work within a wall-clock budget; very large name searches are best split into smaller runs.
FAQ and troubleshooting
A run returned only an error record. Why?
You ran with neither queries nor registrationNumbers, or the search matched nothing. Add a name or a GMC number. These cases are not charged.
What is the fastest way to verify one doctor?
Put their 7-digit GMC reference number in registrationNumbers. This skips the name search and reads the profile directly.
Why are the GP or Specialist register fields null?
Those come from each doctor's profile and appear only when fetchDetails is on. With fetchDetails off, the actor returns the fast name, status and gender fields.
How do I find only GPs or only specialists?
Set registerType to gp or specialist when searching by name. Then read onGpRegister and onSpecialistRegister on each record.
A big search seems to stop early. Why? Each read passes through the Cloudflare solver, so the actor works within a wall-clock budget and stops cleanly when it runs low. Split large jobs into several runs or use exact GMC numbers.
Is this an official GMC tool? No. This actor is independent and has no affiliation with the General Medical Council. It reads only data the GMC publishes in its public List of Registered Medical Practitioners. Use it in accordance with the GMC terms.
Related scrapers
- UK GDC Dentists & Dental Professionals Register Scraper: UK General Dental Council register.
- UK GPhC Pharmacists Register Scraper: UK pharmacists and pharmacy technicians.
- UK HCPC Professionals Register Scraper: UK health and care professionals register.
- UK Food Hygiene Ratings & Business Scraper: UK food business hygiene ratings and contacts.
- Healthgrades Doctors Scraper: US doctor profiles and ratings.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US, UK, European and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with the UK General Medical Council. Accesses only the publicly available GMC List of Registered Medical Practitioners. Use in accordance with the GMC terms.
