GOC Optician & Optometrist Register Scraper

Search the General Optical Council's Specialist Register (str.optical.org) for UK optometrists, dispensing opticians, students and optical businesses - by name, exact GOC number, specialty, company or postcode radius, with practice addresses and FTP decision documents.

Open in Apify Store$0.99 / 1K on Free

Short answer

GOC Optician & Optometrist Register Scraper is an Apify Store Actor that returns 15 published output fields, including name, companyName, gocNumber, registerType. It lists $0.99 per 1,000 results on the Free plan (pay per event), $0.49 on the Business plan. It takes 15 input settings; one is required (mode). Last updated Nov 5, 2026.

From the public Store listing and published build schema, synced 2026-11-12.
Lead generationAutomationOther

What it returns

15 fields from the published dataset schema. Export as JSON, CSV or Excel, or read the dataset through the Apify API.

  • name
  • companyName
  • gocNumber
  • registerType
  • registrationStatus
  • registrationDate
  • specialities
  • qualifications
  • town
  • practiceAddresses
  • ftpDecisions
  • hasConditions
  • isSuspended
  • searchTerm
  • sourceUrl

Input

Input settings for GOC Optician & Optometrist Register Scraper
SettingTypeRequiredDefaultWhat it does
mode string Yes registrant Choose the task. `registrant` searches individuals by name, register type, specialty, address, postcode, or GOC number. `bodyCorporate` searches registered businesses. `byGocNumber` checks a list of exact GOC numbers and detects registrants vs businesses automatically. `allBusinesses` exports the fu
surnames array No [] One or more surnames to search. Each surname runs its own search and results are merged without duplicates. Leave empty if you search by company, register type, specialty, address, postcode, or GOC number instead. Latin-script values only: the GOC search ignores non-Latin text.
forename string No – Optional first-name filter applied to every surname search in registrant mode.
soundsLikeSurname boolean No false Match surnames phonetically (e.g. 'Smyth' also finds 'Smith') instead of as a literal substring.
registerType string No – Restrict registrant searches to one registration category.
speciality string No – Restrict registrant searches to one specialty annotation.
addresses array No [] One or more address, town, or postcode-area text searches for registrant mode. Each value runs its own search and results are merged. Latin-script values only.
companyNames array No [] One or more optical-business names to search in bodyCorporate mode. Each value runs its own search and results are merged. Latin-script values only.
gocNumbers array No [] Exact GOC registration numbers, e.g. 01-12294, D-9396, SO-44231, CO-4310. In byGocNumber mode this is the whole lookup list (registrants and businesses can be mixed). Missing hyphens, lowercase, and a missing leading zero are normalised. In search modes the numbers are combined (AND) with the other
postcode string No – UK postcode or outward code (SW1A 1AA or EH1) used with radiusMiles. Works for registrant and business searches. Only real postcodes return results.
Show the other 5 settings
More input settings for GOC Optician & Optometrist Register Scraper
SettingTypeRequiredDefaultWhat it does
radiusMiles integer No 50 Distance in miles from the postcode. Only used when postcode is set.
sortBy string No – Sort registrant results by surname. The GOC register ignores this for business searches.
fetchDetails boolean No true Visit each result's detail page to capture qualifications, town, every practice address, postcodes, and FTP decision documents. Slower and dependent on the GOC's flaky detail pages; disable for a fast list-only run. Ignored in allBusinesses mode, which is always list-only.
maxDetailedItems integer No 2000 Only used when fetchDetails is on. The first N records are enriched; the rest are emitted with list-level fields. Keep this modest for large runs. Ignored in allBusinesses mode.
maxItems integer No 50 Hard cap on records emitted across all searches. The registrant register is about 33,359 rows at 5 per page, so a complete registrant export cannot finish in one default run. The full business register is about 2,973 rows and allBusinesses is list-only.

Example input

Built from the input form's published example values and defaults.

{
  "mode": "byGocNumber",
  "surnames": [],
  "soundsLikeSurname": false,
  "addresses": [],
  "companyNames": [],
  "gocNumbers": [
    "01-12294"
  ],
  "radiusMiles": 50,
  "fetchDetails": false,
  "maxDetailedItems": 1,
  "maxItems": 1
}

Run it from code or an AI agent

The same run through the Apify API, with the example input. You need an Apify API token; the run is billed to your account at the Store price.

Python

from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
    "mode": "byGocNumber",
    "surnames": [],
    "soundsLikeSurname": False,
    "addresses": [],
    "companyNames": [],
    "gocNumbers": [
        "01-12294"
    ],
    "radiusMiles": 50,
    "fetchDetails": False,
    "maxDetailedItems": 1,
    "maxItems": 1
}

run = client.actor("nimbryxo-studio/goc-optician-and-optometrist-register-scraper").call(run_input=run_input)
if run is None:
    raise RuntimeError("The Actor run was not found.")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

pip install apify-client

JavaScript

import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: "<YOUR_APIFY_TOKEN>" });
const input = {
    "mode": "byGocNumber",
    "surnames": [],
    "soundsLikeSurname": false,
    "addresses": [],
    "companyNames": [],
    "gocNumbers": [
        "01-12294"
    ],
    "radiusMiles": 50,
    "fetchDetails": false,
    "maxDetailedItems": 1,
    "maxItems": 1
};

const run = await client.actor("nimbryxo-studio/goc-optician-and-optometrist-register-scraper").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

npm install apify-client

cURL

curl -X POST "https://api.apify.com/v2/actors/nimbryxo-studio~goc-optician-and-optometrist-register-scraper/run-sync-get-dataset-items"   -H "Authorization: Bearer $APIFY_TOKEN"   -H "Content-Type: application/json"   -d '{"mode":"byGocNumber","surnames":[],"soundsLikeSurname":false,"addresses":[],"companyNames":[],"gocNumbers":["01-12294"],"radiusMiles":50,"fetchDetails":false,"maxDetailedItems":1,"maxItems":1}'

Waits for the run and returns the dataset items (runs over 300 seconds return HTTP 408; start an async run instead).

MCP (AI agents)

{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=nimbryxo-studio/goc-optician-and-optometrist-register-scraper",
      "headers": {
        "Authorization": "Bearer <YOUR_APIFY_TOKEN>"
      }
    }
  }
}

Adds this Actor as a tool in an MCP client that takes a remote server URL (Cursor, VS Code, Claude Code) through Apify's hosted MCP server. OAuth sign-in also works without the header. Clients that only start local servers can wrap the URL with npx mcp-remote.

What a run costs

The result rate falls on higher Apify plans. Each figure is the published per-result rate times the number of results.

Cost of GOC Optician & Optometrist Register Scraper results by Apify plan
Apify planPer 1,00010,000 results100,000 results
Free plan$0.99$9.90$99
Starter plan$0.82$8.20$82
Scale plan$0.66$6.60$66
Business plan$0.49$4.90$49
  • Every run also has a start event, charged per GB of memory (minimum one): $0.10 on Free, $0.03 on Business. At its default memory of 1 GB a run starts at $0.10 on Free. Fewer, larger runs keep this small.
  • The Free plan includes $5 of monthly usage (Apify pricing, checked 2026-11-11); at the Free rate that covers at most about 5,050 results, less start events and platform usage.
  • Worked example: 10,000 results in one run on the Free plan cost $10 ($9.90 for results + $0.10 start), plus Apify platform usage (compute), billed separately by Apify.
  • Pay per event. Platform usage (compute) is billed by Apify on top of the event prices. Compare other tools in the cost estimator.

What people use it for

  • search optical register
  • check registration details

2GIS Business Directory Extractor for CIS & Middle East

Search 2GIS for businesses by category and city across Russia, the UAE, Kazakhstan and the wider CIS, and get name, address, rating, hours,…

66 output fields $0.99 per 1K

General Osteopathic Council Register Scraper

Search the General Osteopathic Council's public register (osteopathy.org.uk) by postcode/town, surname, or practice features, or look up exact…

8 output fields $0.99 per 1K

Google Maps Business Lead & Email Finder

Find business leads on Google Maps by category, keyword, or location and collect name, address, phone, website, rating, review count, and…

39 output fields $0.99 per 1K

YellowPagesPK Business Directory & Lead Finder

Browse Pakistan's YellowPagesPK.com directory by business category, run a keyword search, or fetch full profiles by listing URL. Get business…

10 output fields $0.99 per 1K

Bing Maps Local Business Finder

Find restaurants, shops, hotels, and other local businesses on Bing Maps by keyword and city, or by a precise latitude/longitude and radius, with…

14 output fields $0.99 per 1K

Florida Sunbiz Registry Lookup by Name, Agent & FEI

Look up Florida business entities on the Sunbiz registry by entity name, officer, registered agent, FEI/EIN, document number, ZIP, or street…

10 output fields $0.99 per 1K

Questions people ask

How much does GOC Optician & Optometrist Register Scraper cost?

The published result rate depends on your Apify plan: $0.99 per 1,000 on Free, $0.82 per 1,000 on Starter, $0.66 per 1,000 on Scale, $0.49 per 1,000 on Business. So 10,000 results cost about $9.90 on the Free plan and $4.90 on Business, plus a start fee of $0.10 per run per GB of memory on Free. Platform usage is billed separately.

What data does GOC Optician & Optometrist Register Scraper return?

Its published output schema lists 15 fields: name, companyName, gocNumber, registerType, registrationStatus, registrationDate, specialities, qualifications, town, practiceAddresses, ftpDecisions, hasConditions, and 3 more. A listed field is not guaranteed to be filled in every row.

What input does GOC Optician & Optometrist Register Scraper need?

Required: mode. Optional settings include surnames, forename, soundsLikeSurname, registerType, speciality, addresses.

How do I run GOC Optician & Optometrist Register Scraper from Python or the API?

Use the Apify API client: in Python, ApifyClient(token).actor("nimbryxo-studio/goc-optician-and-optometrist-register-scraper").call(run_input=...), then read the run's default dataset (run.default_dataset_id); in JavaScript the same call is client.actor("nimbryxo-studio/goc-optician-and-optometrist-register-scraper").call(input). Without a client, POST the input JSON to https://api.apify.com/v2/actors/nimbryxo-studio~goc-optician-and-optometrist-register-scraper/run-sync-get-dataset-items with your API token. Ready-to-paste code with the example input is on this page.

Sources

Actor updated 2026-11-05 Data synced 2026-11-12
Cite this page

Scraper Finder. "GOC Optician & Optometrist Register Scraper." https://scraperfinder.com/catalogue/goc-optician-and-optometrist-register-scraper/ (data checked 2026-11-12).

Run GOC Optician & Optometrist Register Scraper

$0.99 per 1,000 results. Paste the example input above, set your target query, then export the dataset.

Open in Apify Store