# UK Electrician Leads Extractor (`b2b_lead_generation/uk-electrician-leads-extractor`) Actor

UK electrician leads extractor that searches by town, county, and postcode and returns clean, deduplicated company details with phone numbers, websites, and full addresses, so sales and lead-gen teams get accurate UK electrician contacts ready to use.

- **URL**: https://apify.com/b2b\_lead\_generation/uk-electrician-leads-extractor.md
- **Developed by:** [B2B Lead Generation](https://apify.com/b2b_lead_generation) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.99 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## UK Electrician Leads Extractor: Targeted Electrician Contacts by Town, County, and Postcode

<p align="center">
  <img src="https://imgur.com/PDBLwT3.png" alt="USA Automotive Leads Hub" style="max-width:100%; border-radius:14px; width:680px;" />
</p>

UK Electrician Leads Extractor gives you a targeted list of electrician business contacts anywhere in the United Kingdom, filtered by the exact towns, counties, and postcodes you care about. Type in the locations you want, and it returns a clean, structured company-details file with business names, phone numbers, emails, coordinates, and full addresses. There is no live scraping, so you never hit a blocked page or a 403, and there is no proxy to configure. Every run finishes in seconds and every row is ready to drop straight into your CRM or dialler.

If you sell to electricians, install alongside them, or build lead lists for clients, this actor removes the slow part: finding accurate contacts in the right places. You control exactly how wide or how narrow the search is, and the output is consistent every time.

### Why use this actor

- Precise location targeting down to a single postcode, not a rough radius
- Clean output with phone numbers already fixed to include the leading zero
- Built-in latitude and longitude, so you can map or route leads immediately
- No proxy, no blocking, no rate limits, and no failed runs
- Predictable structured fields that stay the same on every run

### What data you get

For every electrician that matches your locations, the actor returns a full contact record: business name, up to two extra address lines, town, county, postcode, latitude, longitude, a primary and secondary phone number, and an email address. It also tags each row with the input value it matched and which field that value came from, so you can always trace a lead back to the location you asked for.

### Use cases

- **Sales prospecting**: build a call list of electricians in the exact towns and postcodes your reps cover
- **Lead generation agencies**: pull location-specific electrician leads for clients without hours of manual searching
- **Local marketing campaigns**: gather contacts for a postcode-level flyer, email, or SMS drop
- **Field sales routing**: use the built-in coordinates to plan efficient visit routes and territories
- **Wholesaler and supplier outreach**: reach electricians near your branches to grow trade accounts
- **CRM enrichment**: feed clean, deduplicated company details straight into your pipeline

### Input

Provide at least one of towns, counties, or postcodes. Each field takes a list, one value per line. A lead must match every section you fill in, and within a single section any of the values can match. So filling one section gives you a broad pull, while filling two or three narrows it down to precise leads.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `towns` | array | `[]` | Towns or cities to match. A lead is kept only if its town exactly matches one of these values (case-insensitive). One town per line. |
| `counties` | array | `[]` | Counties to match. A lead is kept only if its county exactly matches one of these values. One county per line. |
| `postcodes` | array | `[]` | Full postcodes (M1 1AE) or outward codes (M1). An outward code matches every postcode in that district; a full postcode matches exactly. Spaces and case are ignored. |
| `maxItems` | integer | `100` | Maximum number of leads to return. Raise it to pull more matches per run. |

#### How the matching works

The number of sections you fill in decides how tight the filter is:

| You fill in | A lead must match |
|-------------|-------------------|
| Town only | that town |
| Town and county | that town and that county |
| Town, county, and postcode | all three at once |

Within one section you can list several values, and any of them counts as a match. For example, three towns on three lines returns electricians in any of those towns. Add a county on top and the results shrink to electricians that are in one of those towns and in that county.

#### Example input

```json
{
    "towns": ["Brighton"],
    "counties": ["East Sussex"],
    "postcodes": ["BN1"],
    "maxItems": 100
}
````

### Output

The actor stores results in a dataset you can view, download as CSV, Excel, or JSON, or push to another app. Each entry looks like this:

```json
{
    "companyName": "MBO Electrical Ltd",
    "addressLine2": "",
    "addressLine3": "",
    "town": "Brighton",
    "county": "East Sussex",
    "postcode": "BN1 8UJ",
    "latitude": 50.866703,
    "longitude": -0.142467,
    "phonePrimary": "07766632336",
    "phoneSecondary": "07766632336",
    "email": "info@mboelectricalltd.com",
    "matchedLocation": "BN1",
    "matchedField": "postcode"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `companyName` | string | Business name of the electrician company. |
| `addressLine2` | string | Secondary address line, such as an estate or building name. |
| `addressLine3` | string | Additional address line when present. |
| `town` | string | Town or city of the business. |
| `county` | string | County of the business, when available. |
| `postcode` | string | UK postcode of the business. |
| `latitude` | number | Latitude of the business location. |
| `longitude` | number | Longitude of the business location. |
| `phonePrimary` | string | Primary phone number, with the leading zero restored. |
| `phoneSecondary` | string | Secondary phone number. |
| `email` | string | Contact email address, lowercased. |
| `matchedLocation` | string | The input value this lead matched. |
| `matchedField` | string | Which input field matched: town, county, or postcode. |

### How it works

1. The actor reads your towns, counties, and postcodes and treats each field as an exact-match filter.
2. It checks a curated dataset of UK electrician businesses against those filters.
3. A lead is kept only if it fully matches every section you filled in.
4. Phone numbers get their leading zero restored, emails are lowercased, and coordinates are parsed as numbers.
5. Duplicate businesses are removed by name, postcode, and phone before the results are saved.

### Tips for better results

- Start with a single town or postcode to see the full pool, then add a county or postcode to tighten it.
- Use outward codes like `LS1` or `M3` to sweep a whole postcode district in one go.
- Enter several towns on separate lines to cover a sales patch in one run.
- Raise `maxItems` when a large city returns more leads than the default 100.
- Remember that some records have a blank county, so filtering by county will skip those rows.

### FAQ

**How does exact matching work?**
Your values are compared to each lead character for character, ignoring case and postcode spacing. An outward code such as M1 matches every postcode in the M1 district, while a full postcode such as M1 1AE matches only that exact postcode.

**Can I filter on several locations at once?**
Yes. Add as many towns, counties, and postcodes as you need, one per line. Any value inside a section can match, and a lead must satisfy every section you fill in.

**Does this actor need a proxy?**
No. There is nothing to fetch from the open web, so there is no IP to block and no proxy setting to worry about.

**Why do phone numbers start with a zero now?**
Source phone numbers sometimes drop the leading zero. The actor restores it, so `7766632336` becomes `07766632336` and is ready to dial.

**Do all leads include an email?**
Most do, but a small number of records have no email, so that field can occasionally be empty.

**How fresh is the data?**
The dataset is maintained and refreshed on a regular basis so the contact details stay usable for outreach.

### Integrations

Connect UK Electrician Leads Extractor with other apps and services using [Apify integrations](https://apify.com/integrations). You can integrate with Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and many more. You can also use [webhooks](https://docs.apify.com/integrations/webhooks) to trigger actions whenever a fresh batch of electrician leads is ready.

<p align="center">
  <img src="https://imgur.com/0LIMbrs.png" alt="USA Automotive Leads Hub" style="max-width:100%; border-radius:14px; width:680px;" />
</p>

Enter a few towns and postcodes, run it, and you will have a clean list of UK electrician contacts ready for outreach in minutes.

# Actor input Schema

## `towns` (type: `array`):

Towns or cities to match. A lead is returned only if its town exactly matches one of these values (case-insensitive). Enter one town per line.

## `counties` (type: `array`):

Counties to match. A lead is returned only if its county exactly matches one of these values (case-insensitive). Enter one county per line.

## `postcodes` (type: `array`):

Full postcodes (M1 1AE) or outward codes (M1). Outward codes match every postcode in that district; full postcodes match exactly. Spaces and case are ignored. Enter one per line.

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

Maximum number of electrician leads to return. Raise it to pull more matches per run.

## Actor input object example

```json
{
  "towns": [
    "Manchester",
    "Leeds"
  ],
  "counties": [
    "Greater Manchester",
    "West Yorkshire"
  ],
  "postcodes": [
    "M1 1AE",
    "LS1"
  ],
  "maxItems": 100
}
```

# 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 = {
    "towns": [
        "Manchester",
        "Leeds"
    ],
    "counties": [
        "Greater Manchester"
    ],
    "postcodes": [
        "M1"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("b2b_lead_generation/uk-electrician-leads-extractor").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 = {
    "towns": [
        "Manchester",
        "Leeds",
    ],
    "counties": ["Greater Manchester"],
    "postcodes": ["M1"],
}

# Run the Actor and wait for it to finish
run = client.actor("b2b_lead_generation/uk-electrician-leads-extractor").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "towns": [
    "Manchester",
    "Leeds"
  ],
  "counties": [
    "Greater Manchester"
  ],
  "postcodes": [
    "M1"
  ]
}' |
apify call b2b_lead_generation/uk-electrician-leads-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=b2b_lead_generation/uk-electrician-leads-extractor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "UK Electrician Leads Extractor",
        "description": "UK electrician leads extractor that searches by town, county, and postcode and returns clean, deduplicated company details with phone numbers, websites, and full addresses, so sales and lead-gen teams get accurate UK electrician contacts ready to use.",
        "version": "0.0",
        "x-build-id": "0Gc8qgVUZth2lNhk6"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/b2b_lead_generation~uk-electrician-leads-extractor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-b2b_lead_generation-uk-electrician-leads-extractor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/b2b_lead_generation~uk-electrician-leads-extractor/runs": {
            "post": {
                "operationId": "runs-sync-b2b_lead_generation-uk-electrician-leads-extractor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/b2b_lead_generation~uk-electrician-leads-extractor/run-sync": {
            "post": {
                "operationId": "run-sync-b2b_lead_generation-uk-electrician-leads-extractor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "towns": {
                        "title": "Towns",
                        "type": "array",
                        "description": "Towns or cities to match. A lead is returned only if its town exactly matches one of these values (case-insensitive). Enter one town per line.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "counties": {
                        "title": "Counties",
                        "type": "array",
                        "description": "Counties to match. A lead is returned only if its county exactly matches one of these values (case-insensitive). Enter one county per line.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "postcodes": {
                        "title": "Postcodes",
                        "type": "array",
                        "description": "Full postcodes (M1 1AE) or outward codes (M1). Outward codes match every postcode in that district; full postcodes match exactly. Spaces and case are ignored. Enter one per line.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Maximum results",
                        "minimum": 1,
                        "maximum": 50000,
                        "type": "integer",
                        "description": "Maximum number of electrician leads to return. Raise it to pull more matches per run.",
                        "default": 100
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
