# Gas Safe Register UK Scraper (`leadomi/gas-safe-register-uk`) Actor

Search the Gas Safe Register by UK town or postcode. Business records $0.10 each; engineer details +$0.05 and qualifications +$0.05 per business when returned. Apify platform usage is extra. Results may be incomplete.

- **URL**: https://apify.com/leadomi/gas-safe-register-uk.md
- **Developed by:** [Rohit Kumar](https://apify.com/leadomi) (community)
- **Stats:** 2 total users, 1 monthly users, 61.5% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $100.00 / 1,000 business records

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Gas Safe Register UK Business Search

Search the public Gas Safe Register by one UK town or postcode. Collect business registration and contact details, then optionally add engineer and qualification data.

Availability and result counts depend on the source. The Actor can be blocked, interrupted, or return partial results; it does not guarantee complete coverage. Verify current registration status directly with the official Gas Safe Register when it matters.

### Pricing

Apify charges event fees as follows:

- **Business record:** $0.10 for each unique business saved to the dataset.
- **Engineer details:** an additional $0.05 for each business when engineer details are returned.
- **Qualification details:** an additional $0.05 for each business when qualification details are returned.
- **Actor start:** $0.00005 per start event at 1 GB of memory (Apify charges one start event per GB, with a minimum of one).

A business with both engineer and qualification data returned costs $0.20 in event fees. If either optional detail set is not requested or no corresponding data is returned, its add-on event is not charged. Event fees are gross charges; Apify platform usage, including Actor compute and proxy usage, is separate and varies by run. Check the Actor's Pricing page and run cost breakdown for the current total.

### Start a search

1. Open **Input → Form** in Apify Console.
2. Enter a town or postcode. Plain **London** selects the register's **London, Middlesex** entry; enter **London, County Londonderry** to select the other source entry. For other ambiguous towns, enter **Town, County**.
3. Choose **Domestic** or **Commercial** service.
4. Set the maximum number of unique businesses (1–250; default 10).
5. Choose whether to include engineers and qualifications. Qualifications require engineers.
6. Start the run.

The Actor follows listing pages as needed, up to its internal safety limit, and deduplicates businesses by registration number. A requested maximum is a limit, not a promise: the source may provide fewer results, repeat listings between pages, block the run, or stop traversal early. There are about ten listings per source page, but page contents and totals can change.

The default form searches CB1 1JY for Domestic businesses, requests up to 10 unique businesses, and enables both detail options.

### Results

Each dataset item represents a unique business registration. Business fields include the registered name, registration number, public telephone and email when available, address, distance, service type, and source detail links.

When available and selected, engineer data includes public names, displayed registration status, contact details, and service information. Qualification rows include category, service, Natural Gas, LPG, and Building Regulations indicators. A check is represented as `true`, a cross as `false`, and a blank as `null`.

The Actor reports enrichment status and errors so partial detail collection is visible. It does not infer an engineer's registration status from their appearance in a result. The Console output includes business, engineer, and qualification views when those records exist, along with downloadable dataset exports.

### Errors and partial results

Confirmed no-results searches can complete successfully with zero businesses. Ambiguous towns other than plain London, blocked pages, changed page layouts, invalid requests, and exhausted resource limits are reported as errors or partial outcomes. Previously saved businesses remain available if a later page or detail request fails. Limited retries apply only to selected transient navigation failures; source blocks and validation or resource-limit errors are not retried.

Listing order can change between requests. Deduplication prevents repeated registration numbers in a run, but traversing every page does not guarantee that every business was found. Use a fresh run when changing the search input.

### Development

Use Node.js 24 and the committed lockfile:

```sh
npm ci
npm run build
npm run lint
npm test
apify validate-schema
```

Browser regression tests use synthetic pages and do not make external requests. Set `RUN_BROWSER_TESTS=1` to enable them when local Chrome is installed. Run locally with `apify run`; local storage is separate from Apify cloud storage.

# Actor input Schema

## `location` (type: `string`):

One UK town or postcode. Plain London selects the London, Middlesex entry; enter London, County Londonderry for the other source entry. For other ambiguous towns, enter Town, County.

## `serviceType` (type: `string`):

Choose the Gas Safe Register search category.

## `maxResults` (type: `integer`):

Maximum unique businesses to return, deduplicated by registration number. The Actor automatically reads enough listing pages (about 10 businesses per page) to reach this count, up to 250.

## `includeEngineers` (type: `boolean`):

Collect public engineer names, displayed status and contact details. Adds $0.05 per business when engineer details are returned.

## `includeQualifications` (type: `boolean`):

Collect Natural Gas, LPG and Building Regulations qualification details. Requires Include engineers. Adds $0.05 per business when qualification details are returned.

## Actor input object example

```json
{
  "location": "CB1 1JY",
  "serviceType": "Domestic",
  "maxResults": 10,
  "includeEngineers": true,
  "includeQualifications": true
}
```

# Actor output Schema

## `report` (type: `string`):

No description

## `dataset` (type: `string`):

No description

## `businessesCsv` (type: `string`):

No description

## `engineersCsv` (type: `string`):

No description

## `qualificationsCsv` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("leadomi/gas-safe-register-uk").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("leadomi/gas-safe-register-uk").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call leadomi/gas-safe-register-uk --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,leadomi/gas-safe-register-uk"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/7tSEDg7eo5c6gxyFL/builds/WRPxOPeyIwRsei6Qe/openapi.json
