# Checkatrade Scraper — UK Tradespeople, Reviews & Leads (`trev0n/checkatrade-scraper`) Actor

Scrape Checkatrade.com — the UK's leading directory of vetted tradespeople. Extract trader profiles, ratings, full review history, areas served, services, contacts and website. Search by trade + location or feed direct URLs. Pay only for results.

- **URL**: https://apify.com/trev0n/checkatrade-scraper.md
- **Developed by:** [Paweł](https://apify.com/trev0n) (community)
- **Categories:** Developer tools, Lead generation, Automation
- **Stats:** 40 total users, 9 monthly users, 99.3% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## 🔥 Checkatrade Scraper — UK Tradespeople, Reviews & Leads

🎯 **The fastest way to pull thousands of vetted UK tradespeople straight from Checkatrade.com — into a spreadsheet, your CRM or Zapier.**

Get clean, structured business records for plumbers, roofers, electricians, builders, gardeners, locksmiths and every other trade Checkatrade lists. Every trader comes with ratings, full review history, phone numbers, website, services covered and areas served — ready for lead generation, market analysis or competitive research.

### 🚀 What Does It Do?

This scraper automatically pulls trader profiles from Checkatrade.com and collects **structured, ready-to-use data** — no manual browsing needed. Just pick a trade and a location (or paste in URLs) and hit Start.

💡 **Two modes of operation:**

1. **🔍 Discovery Mode** — Give it a trade + city (or paste a Search URL) and it walks every result page, deduplicates traders and extracts a full profile each.
2. **📋 Direct URL Mode** — Already have a list of trader profile URLs? Drop them in and the scraper goes straight to the source — perfect for enrichment workflows.

### 👥 Who Is This For?

| 🏢 Use Case                          | 💬 How It Helps                                                                                                        |
| ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- |
| 📞 **Lead Generation Agencies**      | Build call-out lists of vetted UK tradespeople by trade and postcode in minutes — name, phone, website, areas covered. |
| 📊 **Market Researchers**            | Map the competitive landscape in any UK city: who's there, how they're rated and what services they offer.             |
| 🏗️ **Trade Suppliers & Wholesalers** | Identify high-rated plumbers, roofers and builders to target with B2B offers.                                          |
| 🤖 **Data & AI Teams**               | Fuel directory, comparison and pricing apps with a refreshed snapshot of the UK's leading trades platform.             |
| 📰 **Journalists & Analysts**        | Audit trader quality, review patterns and accreditation coverage across cities.                                        |
| 🛠️ **Trade Businesses**              | Benchmark your own profile, ratings and reviews against direct competitors in your service area.                       |

### ✨ Features

- 🇬🇧 **UK-wide coverage** — every city, town and postcode area Checkatrade indexes
- 🧰 **All trades supported** — plumbers, electricians, roofers, builders, gardeners, locksmiths and beyond
- ⭐ **Ratings & full review history** — average score, total review count and the latest customer reviews with text, rating and date
- 📞 **Phone + website + social** — clean contact details, with Checkatrade's own footer links automatically filtered out
- 🗺️ **Areas served** — every neighbourhood, town or region a trader operates in
- 🛡️ **Accreditations** — Gas Safe, F Gas, NICEIC, UKAS and other scheme badges
- 🎛️ **Smart Filters** — minimum rating, minimum reviews count, require-phone, max results
- 🔁 **Deduplication** — every trader returned exactly once, even across multiple search URLs
- ⚡ **Fast & Scalable** — hundreds of traders per run with full pagination
- 📤 **Export Anywhere** — Download results as JSON, CSV, Excel, or push to Google Sheets, Zapier, Make, or your CRM

### 🎛️ Filters & Options

| Option                          | What It Does                                                                                                       |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| 🔗 **Search URLs**              | Paste one or more Checkatrade search URLs (e.g. `/Search/Plumber/in/London`) — the scraper paginates automatically |
| 🧰 **Trade / Category**         | Trade name to look up (Plumber, Roofer, Electrician, Builder, Painter Decorator…)                                  |
| 📍 **Location**                 | UK city, town or postcode area — London, Manchester, Birmingham, BS8, SW1…                                         |
| 🎯 **Direct Trader URLs**       | Skip search and scrape specific trader profile URLs directly                                                       |
| ⭐ **Minimum Rating**           | Drop any trader scoring below this value (0–10 scale)                                                              |
| 📝 **Minimum Reviews**          | Filter out brand-new traders with too few reviews                                                                  |
| 📞 **Require Phone**            | Only keep traders that publish a phone number — ideal for outbound lead lists                                      |
| 💬 **Extract Customer Reviews** | Include the latest reviews with author, date, rating and full body text                                            |
| 🔢 **Max Traders**              | Cap the run at any number of results (0 = unlimited)                                                               |
| 🚦 **Max Concurrency**          | Throttle parallel browser pages (1–8) to balance speed vs. anti-bot tolerance                                      |
| 🔁 **Max Retries**              | How many times a failed request should be retried                                                                  |
| 🌐 **Proxy Configuration**      | UK residential proxies recommended for the cleanest results                                                        |

### 📦 What You Get (Output Fields)

Every trader profile includes:

#### Identity

| Field       | Example                                                                                |
| ----------- | -------------------------------------------------------------------------------------- |
| id          | `plumblondonltd`                                                                       |
| name        | `Plumb London ltd`                                                                     |
| url         | `https://www.checkatrade.com/trades/plumblondonltd`                                    |
| trade       | `Air Conditioning`                                                                     |
| description | `Verified air conditioning in Pinner, rated 9.25/10 from 2422 reviews on Checkatrade.` |

#### Contact

| Field       | Example                                                      |
| ----------- | ------------------------------------------------------------ |
| phone       | `07411 527902`                                               |
| phones      | `["07411 527902"]`                                           |
| email       | `null` *(Checkatrade hides email behind a contact form)*     |
| website     | `https://www.plumblondon.com/`                               |
| socialLinks | `[]` *(Checkatrade does not publish trader social profiles)* |

#### Location & Coverage

| Field      | Example                           |
| ---------- | --------------------------------- |
| city       | `Pinner`                          |
| areaServed | `["Pinner", "Harrow", "Wembley"]` |
| country    | `GB`                              |

#### Ratings & Reputation

| Field          | Example                                       |
| -------------- | --------------------------------------------- |
| rating         | `9.25`                                        |
| reviewsCount   | `2422`                                        |
| bestRating     | `10`                                          |
| accreditations | `["Gas Safe Register", "F Gas Register.com"]` |

#### Services

| Field    | Example                                                                                 |
| -------- | --------------------------------------------------------------------------------------- |
| services | `["Air Conditioning Installation", "Bathroom Fitter", "Gas Boiler Servicing / Repair"]` |

#### Media

| Field      | Example                                               |
| ---------- | ----------------------------------------------------- |
| logo       | `https://lh3.googleusercontent.com/cNtTeM4Y...=w1024` |
| coverImage | `https://lh3.googleusercontent.com/XmufevW2...=w1024` |

#### Latest Reviews

| Field         | Example                                                                        |
| ------------- | ------------------------------------------------------------------------------ |
| latestReviews | `[{ "author": "Sally F", "date": "2026-05-04", "rating": 10, "body": "..." }]` |

#### Run Info

| Field     | Example                    |
| --------- | -------------------------- |
| scrapedAt | `2026-05-12T10:42:55.797Z` |

### 📊 Example Output

```json
{
    "id": "plumblondonltd",
    "name": "Plumb London ltd",
    "url": "https://www.checkatrade.com/trades/plumblondonltd",
    "trade": "Air Conditioning",
    "services": [
        "Air Conditioning Installation",
        "Bathroom Fitter",
        "Gas Boiler Servicing / Repair",
        "Plumbing Repairs"
    ],
    "phone": "07411 527902",
    "phones": ["07411 527902"],
    "email": null,
    "website": "https://www.plumblondon.com/",
    "socialLinks": [],
    "city": "Pinner",
    "areaServed": ["Pinner"],
    "country": "GB",
    "rating": 9.25,
    "reviewsCount": 2422,
    "bestRating": 10,
    "description": "Verified air conditioning in Pinner, rated 9.25/10 from 2422 reviews on Checkatrade.",
    "logo": "https://lh3.googleusercontent.com/cNtTeM4Y...=w1024",
    "coverImage": "https://lh3.googleusercontent.com/XmufevW2...=w1024",
    "accreditations": ["F Gas Register.com", "Gas Safe Register"],
    "latestReviews": [
        {
            "author": "Sally F",
            "date": "2026-05-04T16:48:04.999Z",
            "rating": 10,
            "body": "Mo from Plumb London did a brilliant job servicing our air conditioning unit — neat, tidy and quick."
        },
        {
            "author": "Rovell G",
            "date": "2026-04-30T17:19:30.695Z",
            "rating": 8.67,
            "body": "Booked the job hassle free. Good job done and received my service certificate promptly through email."
        }
    ],
    "scrapedAt": "2026-05-12T10:42:55.797Z"
}
```

### 📋 Dataset Views

The Apify Console gives you **4 ready-made table views** to quickly browse your results:

| View                   | What It Shows                                                                |
| ---------------------- | ---------------------------------------------------------------------------- |
| 📊 **Overview**        | Trader, trade, city, phone, website, rating, reviews, profile URL            |
| 📞 **Lead Generation** | Trader, phone, website, city, areas served, trade, services, rating, reviews |
| ⭐ **Reviews**         | Trader, average rating, total reviews and the full `latestReviews` array     |
| 📋 **Full Details**    | Every single field — the complete dataset                                    |

### ❓ FAQ

**🤔 Which UK locations can I search?**
Anything Checkatrade itself indexes — every major city (London, Manchester, Birmingham, Glasgow, Edinburgh, Cardiff, Belfast, Bristol, Liverpool, Newcastle, Sheffield, Leeds) plus thousands of towns and postcode areas.

**🤔 How many trades are covered?**
Every category on Checkatrade — Plumber, Roofer, Electrician, Builder, Painter Decorator, Gardener, Locksmith, Handyman, Bathroom Fitter, Kitchen Fitter, Damp Proofer, Gas Boiler Servicing, Driveway Cleaner, Removals and dozens more.

**🤔 Do I get full customer reviews?**
Yes — when **Extract Customer Reviews** is on, every record includes the latest reviews with author name, date, individual rating and the review body text.

**🤔 Can I filter by rating or review count?**
Absolutely. Use **Minimum Rating** to drop low-scored traders and **Minimum Reviews** to filter out brand-new accounts.

**🤔 Will it find traders with no phone listed?**
By default yes. Flip **Require Phone Number** on to build call-out lead lists that only include traders with a callable number.

**🤔 Can I export the data?**
Yes — JSON, CSV, Excel, XML, HTML, RSS. You can also push data directly to Google Sheets, Zapier, Make, or any webhook/API endpoint.

**🤔 How often should I run this?**
For fresh ratings and reviews, run weekly or monthly. You can schedule automatic runs on Apify with just a few clicks.

**🤔 Does it work with proxies?**
Yes — UK residential proxies are strongly recommended for the cleanest results. The scraper works with Apify's built-in proxy service out of the box.

### 🛠️ Need Custom Filters or Features?

**I'm happy to customize this scraper for your specific needs!** 🤝

Whether you need:

- 🎯 Additional filters (specific accreditations, year established, multi-trade businesses, traders with social media presence)
- 📊 Extra data fields or custom output formats
- 🔄 Integration with your CRM, Google Sheets, or database
- ⏰ Scheduled scraping with automatic deduplication and change tracking
- 🌐 Scraping from other UK trades platforms alongside Checkatrade (Trustatrader, MyBuilder, Rated People, Bark)

👉 **Don't hesitate to reach out via private message** — I respond quickly and I'm always open to building exactly what you need. No request is too small or too specific!

### ⚖️ Legal & Ethical Use

This scraper collects **only publicly available information** from Checkatrade.com — the same data any visitor can see by browsing trader profiles. It does not access private member areas, bypass authentication, or harvest customer data. Please use the results responsibly and in compliance with applicable laws and platform terms of service.

# Actor input Schema

## `searchUrls` (type: `array`):

Checkatrade.com search URLs. Format: https://www.checkatrade.com/Search/{Trade}/in/{Location}/ e.g. https://www.checkatrade.com/Search/Plumber/in/London , https://www.checkatrade.com/Search/Roofer/in/Manchester

## `trade` (type: `string`):

Pick from the official Checkatrade trade list (1596 categories). Used only when `searchUrls` is empty. Power users can still pass any custom slug via `searchUrls`.

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

UK city, town or postcode area (e.g. 'London', 'Manchester', 'Birmingham', 'SW1', 'BS8'). Used only when searchUrls is empty.

## `directUrls` (type: `array`):

Optional list of individual trader profile URLs to scrape directly (e.g. https://www.checkatrade.com/trades/plumblondonltd). Bypasses search.

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

Maximum number of trader profiles to extract (0 = unlimited). Each search returns up to ~20 results per page; pagination is automatic.

## `extractReviews` (type: `boolean`):

Include the latest customer reviews on each trader profile (author, date, rating, body). Adds depth for quality analysis and competitive research.

## `requirePhone` (type: `boolean`):

Drop traders that don't expose a phone number on their profile. Useful when building call-out lead lists.

## `minRating` (type: `integer`):

Drop traders whose average rating is below this value. Checkatrade ratings are 0–10. Set to 0 to keep all traders.

## `minReviews` (type: `integer`):

Drop traders with fewer than this many reviews. Helps filter out brand-new accounts.

## `maxConcurrency` (type: `integer`):

Max parallel requests (1-20). Higher is faster but more likely to trigger Cloudflare challenges. Default 8 is balanced.

## `maxRequestsPerMinute` (type: `integer`):

Throttle requests to avoid rate limits. 240 is safe with residential proxies; lower if you see frequent retries.

## `maxRequestRetries` (type: `integer`):

How many times to retry a failed request. Cloudflare may serve interactive challenges — 5+ is recommended.

## `proxyConfiguration` (type: `object`):

Proxy settings. The Apify shared proxy pool (no group selected) is the cost-optimal default — got-scraping's Chrome TLS fingerprint passes Cloudflare on Checkatrade listing/profile pages. Add RESIDENTIAL only if you see frequent 403s at very high concurrency (>15) or need precise UK geo.

## Actor input object example

```json
{
  "searchUrls": [
    {
      "url": "https://www.checkatrade.com/Search/Plumber/in/London"
    }
  ],
  "location": "London",
  "maxItems": 100,
  "extractReviews": true,
  "requirePhone": false,
  "minRating": 0,
  "minReviews": 0,
  "maxConcurrency": 8,
  "maxRequestsPerMinute": 240,
  "maxRequestRetries": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `leadGeneration` (type: `string`):

No description

## `reviews` (type: `string`):

No description

## `fullDetails` (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 = {
    "searchUrls": [
        {
            "url": "https://www.checkatrade.com/Search/Plumber/in/London"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("trev0n/checkatrade-scraper").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 = {
    "searchUrls": [{ "url": "https://www.checkatrade.com/Search/Plumber/in/London" }],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("trev0n/checkatrade-scraper").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 '{
  "searchUrls": [
    {
      "url": "https://www.checkatrade.com/Search/Plumber/in/London"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call trev0n/checkatrade-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=trev0n/checkatrade-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/owtbUVdffovQS1EQw/builds/fMmEizcXWSNNZy9mo/openapi.json
