# GB Grid Connection Queue – NESO TEC Register Scraper & Alerts (`ukopendatatools/gb-grid-connection-registers`) Actor

Every project in NESO's TEC, Embedded and Interconnector registers: customer, substation, plant type (BESS, solar, wind…), MW, connection date, status, Gate 1/2. Filter, or get alerts on new and changed projects.

- **URL**: https://apify.com/ukopendatatools/gb-grid-connection-registers.md
- **Developed by:** [UK Open Data Tools](https://apify.com/ukopendatatools) (community)
- **Categories:** Business, Lead generation, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## GB Grid Connection Queue – NESO TEC Register Scraper & Change Alerts

**Export every project in Great Britain's grid connection queue as clean JSON, CSV or Excel.** It reads NESO's official **Transmission Entry Capacity (TEC) Register**, **Embedded Register** and **Interconnector Register**, covering the project, customer company, connection site (substation/GSP), plant type (energy storage/BESS, solar PV, wind, demand…), MW connected/change/total, connection date, project status, agreement type, transmission owner and **Gate 1/Gate 2** status under the connections reform. You can filter the pipeline, or switch on **change detection** to get only new, changed (with old → new values) and removed projects since your last run. NESO updates the registers twice a week.

### What data does it return?

- **Project:** register, project name, project number and ID, plant type, project status (scoping, awaiting consents, consented, under construction, built), stage, Gate 1/2
- **Who and where:** customer company, connection site (substation or GSP), host transmission owner (NGET, SPT, SHET, OFTO), agreement type
- **Capacity and timing:** MW connected, MW change, MW total, export MW, connection (effective-from) date
- **Change mode:** `changeType` (new/changed/removed) and `changes[{field, from, to}]`

### Who is it for?

- **Renewable and BESS developers:** watch competitors' queue positions, MW and dates near your sites
- **Land agents and landowners:** find who is connecting where, by substation
- **EPCs, equipment suppliers and service providers:** lead lists of consented and under-construction projects
- **Investors and analysts:** pipeline by technology, region and Gate 2 status; spot date slips and withdrawals

### How to use it

1. Click **Try for free** / **Start**.
2. Choose registers and filters, e.g. plant type `Energy Storage`, exclude built projects, a minimum MW or a substation name.
3. For alerts, turn on **Only changes** with a `stateKey` and schedule twice a week. The first run saves a free baseline.
4. Export as JSON, CSV or Excel, or read the results through the Apify API, or push them to Slack, Sheets or email with Apify integrations.

### Input example

```json
{"plantTypeKeywords": ["Energy Storage"], "excludeBuilt": true, "onlyChanges": true, "stateKey": "bess"}
```

### Input reference

| Field | Description |
|---|---|
| registers | `TEC`, `EMBEDDED` (default both), `INTERCONNECTOR`. |
| plantTypeKeywords | e.g. "Energy Storage", "PV", "Wind". |
| projectStatuses | e.g. "Scoping", "Awaiting Consents", "Consents Approved", "Under Construction/Commissioning", "Built". |
| excludeBuilt | Pipeline only. |
| hostTos | NGET, SPT, SHET, OFTO. |
| customerKeywords / siteKeywords | Company/project or substation keywords. |
| minMw, effectiveFrom, effectiveTo, gates | Size, connection date range, Gate 1/2. |
| onlyChanges, stateKey, emitBaseline | Change-detection mode (first run saves a free baseline). |
| maxItems | Stop after N projects (default 1000). |

### Output example

One dataset item per project. This record is from a real test run:

```json
{
  "register": "TEC Register",
  "projectName": "Axminster",
  "customer": "HB825AXM LTD",
  "connectionSite": "Axminster 132kV Substation",
  "plantType": "Energy Storage System",
  "projectStatus": "Awaiting Consents",
  "agreementType": "Direct Connection",
  "hostTo": "NGET",
  "stage": null,
  "gate": 1,
  "mwConnected": 0,
  "mwChange": 120,
  "mwTotal": 120,
  "mwExportTotal": null,
  "mwEffectiveFrom": "2024-10-31",
  "projectNumber": "PRO-001017",
  "projectId": "a0l4L0000005ixvQAA",
  "key": "TEC|a0l4L0000005ixvQAA||Axminster 132kV Substation",
  "sourceUrl": "https://www.neso.energy/data-portal/transmission-entry-capacity-tec-register",
  "attribution": "Supported by National Energy SO Open Data",
  "license": "National Energy SO Open Data Licence v1.0 (https://www.neso.energy/data-portal/neso-open-licence)",
  "sourceUpdatedAt": "2026-10-27T16:04:32.246893",
  "scrapedAt": "2026-10-29T12:06:20.607Z"
}
```

Sorted by connection date.

### How much does it cost?

Pay per result: **$0.005 per project record ($5 per 1,000)**. In change-detection mode you only pay for changes – the baseline run and no-change runs cost nothing beyond the Actor start. Set a max charge per run and the Actor stops cleanly (the snapshot is then not advanced, so no change is lost).

| Project records | Cost |
|---|---|
| 100 | $0.50 |
| 1,000 | $5.00 |
| 10,000 | $50.00 |

### Coverage

TEC Register (~2,200 rows), Embedded Register (~560) and Interconnector Register (~35) on the NESO Data Portal; all rows are read each run.

### Legal and data protection

Source: the [NESO Data Portal](https://www.neso.energy/data-portal) (National Energy System Operator), published under the **NESO Open Data Licence v1.0** (based on the Open Government Licence v3.0): *"You are free to: copy, publish, distribute and transmit the Information; adapt the Information; exploit the Information commercially and non-commercially for example, by combining it with other Information, or by including it in your own product or application."* Every record carries the required attribution **"Supported by National Energy SO Open Data"** and a link to the source dataset. This Actor is not affiliated with or endorsed by NESO.

The Actor uses NESO's official CKAN API only (no scraping, no login) and follows NESO's rate guidance (at most two datastore requests per minute), so multi-source runs take ~30 s per extra query.

**Organisation data only:** customers are companies; no contact details exist in these registers.

### FAQ

- **What does Gate mean?** Under the 2025 connections reform, projects are Gate 1 (indicative) or Gate 2 (firm date and location).
- **TEC vs Embedded?** TEC covers plant connected directly to the transmission network. Embedded covers large distribution-connected plant with a transmission impact.
- **Does it include DNO (distribution) queues?** No. Only NESO's TEC, Embedded and Interconnector registers.
- **Is NESO the same as National Grid ESO?** Yes. The Electricity System Operator became the National Energy System Operator (NESO) in October 2024.
- **Need another field or register?** Open an issue on the Actor page.

# Actor input Schema

## `registers` (type: `array`):

Registers.

## `plantTypeKeywords` (type: `array`):

e.g. "Energy Storage", "PV", "Wind", "Demand". Empty = all.

## `projectStatuses` (type: `array`):

Exact statuses, e.g. "Scoping", "Awaiting Consents", "Consents Approved", "Under Construction/Commissioning", "Built".

## `excludeBuilt` (type: `boolean`):

Exclude built projects (pipeline only).

## `hostTos` (type: `array`):

NGET (England & Wales), SPT (south Scotland), SHET (north Scotland), OFTO.

## `customerKeywords` (type: `array`):

Customer / project keywords.

## `siteKeywords` (type: `array`):

e.g. a substation or GSP name.

## `minMw` (type: `integer`):

Minimum MW.

## `effectiveFrom` (type: `string`):

Connection date from (YYYY-MM-DD).

## `effectiveTo` (type: `string`):

Connection date before (YYYY-MM-DD).

## `gates` (type: `array`):

"1" or "2" (connections reform).

## `onlyChanges` (type: `boolean`):

Keeps a snapshot in a named key-value store. The first run saves a baseline and returns nothing (unless 'Emit baseline' is on).

## `emitBaseline` (type: `boolean`):

Emit baseline on first change-detection run.

## `stateKey` (type: `string`):

Separate snapshots for different monitors.

## `maxItems` (type: `integer`):

Stop after this many projects (0 = no limit). You are charged per result.

## Actor input object example

```json
{
  "registers": [
    "TEC",
    "EMBEDDED"
  ],
  "excludeBuilt": false,
  "onlyChanges": false,
  "emitBaseline": false,
  "maxItems": 1000
}
```

# Actor output Schema

## `results` (type: `string`):

All results in the default dataset, shown with the Overview table view by default.

# 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("ukopendatatools/gb-grid-connection-registers").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("ukopendatatools/gb-grid-connection-registers").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 ukopendatatools/gb-grid-connection-registers --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ukopendatatools/gb-grid-connection-registers"
        }
    }
}
```

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/47HZuCapmLyfRvsSs/builds/w91mOG76vaK7E5csC/openapi.json
