Checkatrade Scraper avatar

Checkatrade Scraper

Pricing

from $8.00 / 1,000 tradesperson records

Go to Apify Store
Checkatrade Scraper

Checkatrade Scraper

Search and extract public Checkatrade tradesperson profiles with contact, service, rating, and review data.

Pricing

from $8.00 / 1,000 tradesperson records

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

6 days ago

Last modified

Share

Checkatrade Scraper is an Apify Actor for finding and extracting public Checkatrade tradesperson profiles by trade and UK location, or by copied Checkatrade search and profile URLs. It accepts a trade and location, search URLs, or direct profile URLs, and returns one validated business record per public profile. Each record can include business name, profile URL, public phone number, website, rating, review count, description, service labels, service areas, location fields, optional recent reviews, and an extraction timestamp.

Best fit and connected workflows

Use this Actor when your workflow starts with public Checkatrade discovery and needs structured records for outreach preparation, local market research, CRM enrichment, or AI-assisted shortlist building.

Typical routing patterns:

  • Trade + location search: find profiles for a UK trade in a town, city, postcode, or postcode area.
  • Copied search URL: reuse a Checkatrade search page from a browser session.
  • Direct profile URLs: refresh or re-extract known Checkatrade profile pages.
  • Filtered runs: narrow results by phone availability, minimum rating, or minimum review count.
  • Detailed enrichment: enable profile scraping and recent review extraction for deeper records.

focused workflow

Checkatrade Scraper is designed as a focused workflow.

Practical scenario

A local marketing analyst wants a list of electricians in Manchester with public contact details and strong public ratings. They start with trade = "Electrician" and location = "Manchester", then set requirePhone = true, minRating = 9, and minReviews = 10. The run returns fields such as businessName, phone, rating, reviewCount, services, locality, and profileUrl. The analyst can review the returned profiles, open the linked Checkatrade pages, and use the dataset to build a call list or a verified research shortlist.

Input fields

FieldTypePurpose
tradestringTrade or service to search, such as Plumber or Electrician.
locationstringUK town, city, postcode, or postcode area for the search.
searchUrlsarrayCopied Checkatrade search-result URLs to crawl and paginate.
directUrlsarrayIndividual Checkatrade profile URLs to scrape directly.
maxResultsintegerMaximum validated profiles to return in the run.
scrapeDetailsbooleanEnrich discovered profiles with contact, service, rating, and review fields.
extractReviewsbooleanInclude up to ten visible recent review objects per profile.
requirePhonebooleanReturn only profiles with a public phone number.
minRatingnumberMinimum public Checkatrade rating from 0 to 10.
minReviewsintegerMinimum public review count required for a returned profile.
proxyConfigurationobjectOptional Apify proxy configuration for public Checkatrade requests.

Focused JSON example

{
"trade": "Electrician",
"location": "Manchester",
"maxResults": 25,
"scrapeDetails": true,
"extractReviews": false,
"requirePhone": true,
"minRating": 9,
"minReviews": 10
}

Output fields

FieldTypeMeaning
businessNamestringPublic Checkatrade business or tradesperson name.
profileUrlstringCanonical public Checkatrade profile URL.
phonestring or nullPublic profile phone number, when shown.
websitestring or nullPublic external website, when shown.
emailstring or nullAlways null in this Actor.
ratingnumber or nullPublic Checkatrade rating, typically on a 0-10 scale.
reviewCountinteger or nullPublic profile review count.
descriptionstring or nullPublic business description.
servicesarrayPublic service labels.
addressstring or nullPublic street address, when supplied.
localitystring or nullPublic town or city.
regionstring or nullPublic county or region.
postalCodestring or nullPublic postcode, when supplied.
areasServedarrayPublic service-area labels.
imageUrlstring or nullPublic profile image URL.
reviewsarrayUp to ten recent visible public reviews when enabled.
searchTradestring or nullTrade supplied for the run, if any.
searchLocationstring or nullLocation supplied for the run, if any.
scrapedAtstringISO 8601 extraction timestamp.
sourcestringConstant source label: checkatrade.

Illustrative output record

{
"businessName": "Example Electrical Services",
"profileUrl": "https://www.checkatrade.com/trades/exampleelectricalservices",
"phone": "+44 20 1234 5678",
"website": "https://exampleelectricalservices.co.uk",
"email": null,
"rating": 9.4,
"reviewCount": 128,
"description": "Public Checkatrade business description",
"services": ["Electrician", "Rewiring", "Lighting"],
"address": null,
"locality": "Manchester",
"region": "Greater Manchester",
"postalCode": null,
"areasServed": ["Manchester", "Salford"],
"imageUrl": null,
"reviews": [],
"searchTrade": "Electrician",
"searchLocation": "Manchester",
"scrapedAt": "2026-07-19T12:34:56.000Z",
"source": "checkatrade"
}

How it works

This Actor searches public Checkatrade results by trade and UK location, or it processes copied Checkatrade search URLs and direct profile URLs. Search-result URLs are crawled and paginated. Direct profile URLs are scraped directly. For search discovery, scrapeDetails enriches each discovered profile with public profile fields. extractReviews adds up to ten visible recent review objects per returned profile. Results are saved as validated records in the default dataset, and the run also writes terminal output records to the default key-value store.

Pricing

Checkatrade Scraper uses Pay per event plus Apify platform usage. The charged events are:

  • Actor start
  • Tradesperson record

The Tradesperson record event is charged once for each validated Checkatrade tradesperson record written to the dataset. The current pricing details are shown in the live Pricing tab in Apify. As an example, a run that saves one hundred profiles produces one hundred Tradesperson record events plus one Actor start event, along with Apify platform usage charges.

Use with AI agents (MCP)

This Actor is available as an Apify Actor usable through Apify MCP. The precise Actor identity is khadinakbar/checkatrade-scraper.

Tool description: use it to discover and extract public Checkatrade tradesperson profiles, then read the dataset items for structured records and the key-value store for run outcome and summary metadata.

Find up to 20 public electricians in London with public phone numbers and rating of at least 9. Return the dataset rows and summarize the most relevant fields for outreach review.

Output interpretation: dataset items contain one record per validated profile. The results output points to the default dataset items endpoint. output contains the terminal run outcome, and runSummary contains a compact execution summary. Provenance is preserved through the public profileUrl, source, and scrapedAt fields. Scope is limited to public Checkatrade data. Pagination is handled through search URLs and search discovery. Costs scale with the number of validated persisted records, so maxResults is the main control for run size.

Apify API example

import { ApifyClient } from "apify-client";
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const actorId = "khadinakbar/checkatrade-scraper";
const input = {
trade: "Electrician",
location: "Manchester",
maxResults: 10,
scrapeDetails: true,
extractReviews: false,
};
const run = await client.actor(actorId).call(input);
const datasetItems = await client
.dataset(run.defaultDatasetId)
.listItems();
console.log("Run ID:", run.id);
console.log("Dataset items:", datasetItems.items);

Best results and outcome guidance

Use a narrow trade and location pair when you want a focused public directory slice. Use searchUrls when you already have a browser-copied Checkatrade result page. Use directUrls when you already have profile URLs and want direct extraction. Set requirePhone, minRating, and minReviews to shape the returned list before downstream review. Enable extractReviews when you need a compact sample of visible review content alongside the profile fields. Keep maxResults aligned with the number of records you actually need.

Continue the workflow

Design note

I found that the dataset contract includes email with a fixed null meaning, which is a clear signal that this Actor returns public profile data without email enrichment.

FAQ

Yes. Provide trade and location to discover Checkatrade profiles for that market.

Can I scrape a copied Checkatrade search page?

Yes. Put the browser-copied search URL in searchUrls.

Yes. Put individual profile URLs in directUrls.

How do I narrow the output to profiles with phones and stronger public ratings?

Use requirePhone = true, set minRating, and optionally set minReviews.

Can I get recent review samples?

Yes. Set extractReviews = true to include up to ten visible recent review objects per profile.

Does this Actor return one record per profile?

Yes. The contract defines one validated business record per profile, and the primary billable event is one Tradesperson record per persisted dataset row.

Responsible use

Use public Checkatrade data in ways that respect applicable privacy, marketing, and data protection requirements, including UK GDPR and PECR where relevant. Verify profile details before contacting a business. Use the data for lawful research, operational workflows, or other legitimate purposes that fit the public nature of the source.