# MyBuilder Scraper \[$0.002💰] | Tradespeople | Reviews + Leads (`ahmed_jasarevic/mybuilder-scraper`) Actor

Scrape UK tradespeople from MyBuilder by trade and city: electricians, plumbers, builders. Get name, ratings, reviews, verified badges, services, LocalBusiness schema for trade lead generation. Pay per result.

- **URL**: https://apify.com/ahmed\_jasarevic/mybuilder-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Categories:** Lead generation, Automation, Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.97 / 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/actors/running/actors-in-store.md#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

## MyBuilder Scraper — UK Tradespeople Leads by Trade & City

**MyBuilder Scraper** extracts UK tradespeople data from [MyBuilder.com](https://www.mybuilder.com) directory listings and profile pages — one row per tradesperson with business name, star rating, review count, verified/featured badges, and profile URL, plus full profile enrichment (services, reviews, LocalBusiness schema) for **trade lead generation and UK contractor databases**.

### Main Use Cases

- **Electrician leads London and other cities** — build targeted lists of electricians, plumbers, and builders by trade + city.
- **UK tradespeople database** — assemble a structured directory of home improvement professionals with ratings and locations.
- **Trade lead generation** — export verified/featured tradespeople with strong reviews for marketing and outreach.
- **Home improvement market research** — analyze review scores, review counts, and trade competition per city.
- **Contractor vetting / counterparty research** — check ratings, review text, and services of tradespeople before partnering or hiring.
- **Local business directory scraping UK** — a reusable pattern for UK local-business data projects.

### How It Works

The actor uses a fast **CheerioCrawler** (plain HTTP + HTML parsing, no browser) against MyBuilder's server-side rendered pages. Listing cards embed structured JSON (`data-track-visibility-contexts` with review score, verified/featured flags, position), and profile pages embed a `LocalBusiness` JSON-LD block. Since MyBuilder SSR-renders the data, no JavaScript is needed — making this actor ~10x faster and cheaper than browser-based scrapers. Apify **Residential proxy (country GB)** is used by default because MyBuilder is Cloudflare-protected and UK-geofenced.

### Build a UK Tradespeople Database Without a Directory API

MyBuilder has no public API for directory data. This actor fills that gap: give it listing URLs by trade + city (e.g. `https://www.mybuilder.com/electrical/electrician-tradespeople/london`), set a max, and export a clean dataset of UK tradespeople — verified badges, ratings, review counts, and full profiles included when you enable profile fetching.

### Generate Verified Trade Leads by Trade and City

Filter the output client-side by `isVerified` / `isFeatured` flags, `avgReviewScore` (e.g. ≥ 4.8), and `locationText` to build qualified lead lists. Enable **Fetch Profile Details** to pull full "About" text, services, and sample reviews for each tradesperson — the depth needed for serious lead scoring.

### Input

| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
| `startUrls` | array | **yes** | — | MyBuilder listing URLs by trade + city, e.g. `.../electrical/electrician-tradespeople/london` or `.../find-trades/manchester`. |
| `maxItems` | integer | optional | 50 | Max tradespeople across all URLs (0 = no limit). |
| `maxPagesPerUrl` | integer | optional | 3 | Safety cap on result pages per listing URL (~16 per page). |
| `includeProfileDetails` | boolean | optional | false | Also fetch each profile page for description, services, sample reviews (doubles request count). |
| `proxyConfiguration` | object | optional | Residential GB | Apify Residential proxy, country GB (required — datacenter is Cloudflare-blocked). |

### Output

Each run writes one dataset with a row per tradesperson (or per profile, if enrichment is on). Download as JSON, CSV, Excel, or HTML, or pull via the dataset API URL.

| Field | Source | Description |
|---|---|---|
| `serviceProId` | tracking JSON | MyBuilder internal ID |
| `businessName` | HTML + JSON-LD | Tradesperson/business name |
| `tradeCategory` | URL | Trade type (electrical, plumbing, …) |
| `locationText` / `locationSlug` | HTML / URL | Display location and city slug |
| `avgReviewScore` | tracking JSON | Star rating (0–5) |
| `reviewCount` | tracking JSON | Total reviews |
| `reviewSnippet` | HTML | Latest review text snippet |
| `isVerified` / `isFeatured` | tracking JSON | Verified badge / featured listing |
| `positionInList` | tracking JSON | Rank in search results |
| `profileUrl` / `profileSlug` | HTML / URL | Full profile page and slug |
| `legalName`, `description`, `addressLocality`, `addressCountry` | JSON-LD | Profile enrichment (full About text, legal name, location) |
| `services` | JSON-LD | List of services offered (profile) |
| `sampleReviews` | JSON-LD | Reviews with author, date, rating, text (profile) |
| `photos` | HTML | Profile photo URLs (profile) |

#### Example Input

```json
{
  "startUrls": [
    { "url": "https://www.mybuilder.com/electrical/electrician-tradespeople/london" },
    { "url": "https://www.mybuilder.com/find-trades/manchester" }
  ],
  "maxItems": 100,
  "maxPagesPerUrl": 5,
  "includeProfileDetails": true
}
```

#### Example Output

```json
{
  "serviceProId": 2932038,
  "businessName": "Emergency service 247 Ltd",
  "tradeCategory": "electrical",
  "locationText": "Bromley By Bow, London",
  "avgReviewScore": 4.9,
  "reviewCount": 374,
  "reviewSnippet": "Very good electrician...",
  "isVerified": true,
  "isFeatured": false,
  "positionInList": 1,
  "profileUrl": "https://www.mybuilder.com/profile/lpi_property_service_ltd",
  "profileSlug": "lpi_property_service_ltd",
  "profileFetched": true,
  "services": ["Fault finding", "Fuse boards", "Lighting"],
  "sampleReviews": [
    { "author": "Sarah", "date": "2026-08-01", "rating": 5, "text": "..." }
  ]
}
```

### Integrations & Automation

- **API** — each run's dataset has a permanent API URL for pipelines and CRMs.
- **Webhooks** — notify a downstream system when a run finishes.
- **Scheduling** — run weekly/monthly to keep a fresh UK tradespeople database or monitor new businesses entering a trade/city.
- **Zapier / Make** — official Apify integrations push results to spreadsheets and automation flows.
- Recommended recurring schedule: **monthly** for database refreshes; **weekly** for active lead-gen campaigns.

### Related Actors

- **[Checkatrade Scraper by trev0n](https://apify.com/trev0n/checkatrade-scraper)** — the strongest actor in the adjacent UK trades-leads cluster.
- **[Checkatrade Scraper by memo23](https://apify.com/memo23/checkatrade-scraper)** — another option for Checkatrade directory data.
- **[RAG Web Browser](https://apify.com/apify/rag-web-browser)** — general web research around UK home-services competitors.

### FAQ

**Does MyBuilder have an API?**
No public API exists. This actor extracts the same listing and profile data from MyBuilder's SSR pages — no login, no token.

**How do I find electricians in London programmatically?**
Start with `https://www.mybuilder.com/electrical/electrician-tradespeople/london`, set `maxItems`, and enable profile details. Export as JSON/CSV and filter by `isVerified` and `avgReviewScore`.

**What are MyBuilder alternatives (Checkatrade, Rated People)?**
For data from Checkatrade, use the [trev0n](https://apify.com/trev0n/checkatrade-scraper) or [memo23](https://apify.com/memo23/checkatrade-scraper) actors. This actor covers MyBuilder's own directory with verified/featured signals.

**Can I scrape MyBuilder without a proxy?**
No — MyBuilder sits behind Cloudflare with managed challenges and is UK-geofenced. The actor defaults to Apify Residential proxy (country GB); datacenter IPs are blocked.

**Is this contact enrichment?**
No. MyBuilder doesn't publish phone/email/website for tradespeople — contact happens through its "post a job" form. Treat this as a **lead-scoring** dataset: names, trades, locations, ratings, reviews, and services.

**How to do UK home improvement market research?**
Crawl `find-trades/<city>` pages per city, aggregate `avgReviewScore`/`reviewCount`, and compare trade supply and review distributions across London, Manchester, Birmingham, Leeds, and Glasgow.

### For AI Agents & LLM Apps

- **Purpose**: returns structured UK tradespeople lead data (name, trade, rating, review count, verified/featured flags, location, profile URL) from MyBuilder listing URLs.
- **Minimal working input**:

```json
{
  "startUrls": [{ "url": "https://www.mybuilder.com/electrical/electrician-tradespeople/london" }],
  "maxItems": 50
}
```

- **Variant inputs**: enrichment mode via `includeProfileDetails: true` (adds `description`, `services`, `sampleReviews`, `photos`); multi-city crawl via multiple `startUrls`; unlimited crawl via `maxItems: 0`.
- **Output fields**: `serviceProId`, `businessName`, `tradeCategory`, `locationText`, `avgReviewScore`, `reviewCount`, `reviewSnippet`, `isVerified`, `isFeatured`, `positionInList`, `profileUrl`, `profileSlug` (+ `legalName`, `description`, `services`, `sampleReviews`, `photos` when `includeProfileDetails: true`).
- **Behaviors an agent should know**:
  - `startUrls` is required and must be MyBuilder listing URLs (not arbitrary pages).
  - **Residential GB proxy is mandatory** — the default `proxyConfiguration` handles this; do not set datacenter proxy.
  - `includeProfileDetails: true` roughly doubles the request count (visits each profile page).
  - `maxPagesPerUrl` caps pagination per listing URL (~16 results per page).
  - There is no mode priority conflict: listing data is always returned; profile fields populate only when enrichment is on.
- **Billing**: pay-per-event — $0.00005/run start; results from ~$0.002 per row (price tier varies); profiled results $0.004 each.

### Legal & Compliance Disclaimer

This actor is independent and not affiliated with, endorsed by, or sponsored by MyBuilder.com (Homeserve Group). It accesses only publicly available pages — no login bypass, no CAPTCHA solving. You are responsible for complying with MyBuilder's Terms of Service and applicable data-protection law; some fields (business names, review-author names, review text) may constitute personal data under UK GDPR. Scrape only what you are entitled to and handle data lawfully. Do not use the data for unsolicited commercial outreach that violates applicable law.

### SEO Keywords

mybuilder scraper, uk tradespeople data, uk tradespeople leads, electrician leads london, plumber database uk, builder directory data, uk contractor database, trade lead generation, home improvement market research, verified tradespeople, checkatrade alternative, scrape mybuilder without api, construction leads uk, local business directory scraping, tradespeople ratings data, find local builders uk, manchester tradespeople, uk home services data, trades directory export

# Actor input Schema

## `startUrls` (type: `array`):

MyBuilder directory listing URLs by trade + city, e.g. https://www.mybuilder.com/electrical/electrician-tradespeople/london or https://www.mybuilder.com/find-trades/manchester

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

Maximum number of tradespeople to scrape across all URLs. 0 = no limit.

## `maxPagesPerUrl` (type: `integer`):

Safety cap on pages to walk per listing URL (~16 per page). 0 = walk until listing ends.

## `includeProfileDetails` (type: `boolean`):

Also fetch each tradesperson's profile page for full description, services, and review text from LocalBusiness schema. Doubles request count.

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

MyBuilder requires Apify Residential proxy (country GB). Datacenter proxy is blocked by Cloudflare.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.mybuilder.com/electrical/electrician-tradespeople/london"
    }
  ],
  "maxItems": 50,
  "maxPagesPerUrl": 3,
  "includeProfileDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "GB"
  }
}
```

# Actor output Schema

## `dataset` (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 = {
    "startUrls": [
        {
            "url": "https://www.mybuilder.com/electrical/electrician-tradespeople/london"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/mybuilder-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 = { "startUrls": [{ "url": "https://www.mybuilder.com/electrical/electrician-tradespeople/london" }] }

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/mybuilder-scraper").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 '{
  "startUrls": [
    {
      "url": "https://www.mybuilder.com/electrical/electrician-tradespeople/london"
    }
  ]
}' |
apify call ahmed_jasarevic/mybuilder-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/mybuilder-scraper"
        }
    }
}
```

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/FufT2xZ48e7umcAtv/builds/4eoVIyMcY2lckTcQt/openapi.json
