Checkatrade Scraper [$3/1kπŸ’°] | Reviews | UK Trades Leads avatar

Checkatrade Scraper [$3/1kπŸ’°] | Reviews | UK Trades Leads

Pricing

from $2.97 / 1,000 results

Go to Apify Store
Checkatrade Scraper [$3/1kπŸ’°] | Reviews | UK Trades Leads

Checkatrade Scraper [$3/1kπŸ’°] | Reviews | UK Trades Leads

Scrape Checkatrade, the UK's vetted tradespeople directory: company name, trade, location, rating out of 10, review count, phone and latest review text. Build UK trades lead lists, run review intelligence and research the home-services market β€” a real Checkatrade API alternative.

Pricing

from $2.97 / 1,000 results

Rating

0.0

(0)

Developer

Ahmed Jasarevic

Ahmed Jasarevic

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

24 days ago

Last modified

Categories

Share

Checkatrade Scraper

Scrape Checkatrade (checkatrade.com) β€” the UK's largest directory of vetted tradespeople with verified reviews. Extract company name, trade/location, rating, review count + review text, phone, website, owner name, years on platform, services and descriptions.

Built for lead-gen agencies selling to trades, insurers, suppliers and home-services franchisors doing UK outreach.

What does Checkatrade Scraper do?

This Actor crawls Checkatrade search result pages (e.g. /Search/Plumber/in/Greater-London) and tradesperson profile pages (/trades/{slug}), extracting structured lead data for every listed tradesperson. It returns clean JSON rows ready for CSV/Excel export, CRM import or enrichment pipelines.

The Actor runs on the Apify platform β€” you get API access, scheduling, proxy rotation and monitoring out of the box.

Why use Checkatrade Scraper?

  • Complete lead profile β€” phone, website, owner name, years on platform, services, rating and review text in one dataset.
  • No browser needed β€” the data is extracted from the structured JSON embedded in Checkatrade's server-rendered HTML (schema.org ld+json + Next.js App Router flight data). This makes runs fast and cheap (CheerioCrawler, 256 MB).
  • UK-wide coverage β€” combine any trade with any county/location to build a national lead list.
  • Review intelligence β€” capture review text and ratings to qualify leads (reputation, response quality, review velocity).

How to use Checkatrade Scraper

  1. Open the Actor in Apify Console and click Start.
  2. Configure the input (see below) β€” pick trades + locations, or paste search URLs directly.
  3. Wait for the run to finish, then download the dataset as JSON, HTML, CSV or Excel.
  4. Or call it via the Apify API from your own pipeline.

Input

FieldTypeDescription
startUrlsarrayCheckatrade search URLs to start from (e.g. https://www.checkatrade.com/Search/Plumber/in/Greater-London) β€” overrides trades + locations
tradesarrayTrades to search (e.g. Plumber, Electrician, Builder) β€” combined with locations
locationsarrayUK locations/counties (e.g. Greater-London, Kent, Essex)
maxItemsintegerMax tradespeople to scrape (0 = unlimited)
pageDelayMsintegerDelay between page requests (default 1000)
proxyConfigurationobjectApify proxy settings. Use the RESIDENTIAL group for the best success rate

Example input:

{
"trades": ["Plumber", "Electrician"],
"locations": ["Greater-London", "Kent"],
"maxItems": 500,
"pageDelayMs": 1000,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Output

Each dataset row is one tradesperson from a search page. Example:

{
"companyName": "FASTFIX LONDON Ltd",
"uniqueName": "fastfixlondonltd",
"profileUrl": "https://www.checkatrade.com/trades/fastfixlondonltd",
"trade": "Plumber",
"searchLocation": "Greater-London",
"locality": "London",
"addressCountry": "GB",
"rating": 9.52,
"totalReviews": 176,
"phone": "+447727668354",
"reviewBody": "Dino was super helpful, fixed the leak under my kitchen sink...",
"reviewAuthor": "Homeowner",
"reviewRating": 10
}

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Data table

FieldDescription
companyNameTradesperson / company name
uniqueNameCheckatrade profile slug
profileUrlCheckatrade profile URL https://www.checkatrade.com/trades/{slug}
tradeTrade category searched (e.g. Plumber)
searchLocationLocation searched (e.g. Greater-London)
localityCompany service locality
addressCountryCountry code (GB)
ratingAverage rating (out of 10)
totalReviewsNumber of reviews
phonePhone number (E.164)
reviewBodyLatest review text
reviewAuthorLatest review author name
reviewRatingLatest review rating (out of 10)

Technical notes β€” how the bypass works

This Actor uses the embedded JSON bypass β€” no browser, no DOM scraping, no internal API calls:

  1. Search pages (/Search/{Trade}/in/{Location}?page=N): the tradesperson list is embedded in a schema.org application/ld+json ItemList blob in the served HTML. Each item contains name, profile URL, phone, address, rating, review count and one review. Parsed directly with JSON.parse β€” no selectors needed.
  2. Fallback β€” if the ItemList is missing, the Next.js App Router flight data (self.__next_f.push(...) chunks) is parsed for the same fields.
  3. Pagination β€” the total page count is read from the <noscript> pagination block, and each next page is enqueued automatically.

Why this strategy: The original Actor hit Checkatrade's internal JSON API (api.checkatrade.com/...), which is protected by Cloudflare and blocks datacenter IPs and non-browser TLS fingerprints. This version drops the API entirely. Instead, it fetches normal HTML pages with a Chrome-impersonating HTTP client (@crawlee/impit-client) that reproduces the browser's TLS/JA3 and HTTP/2 fingerprints β€” the same technique as curl-cffi/curl-impersonate, but native to Node.js. Combined with the Apify residential proxy, this gets past fingerprinting. Keeps the Actor on CheerioCrawler at 256 MB β€” far cheaper than a browser-based scraper.

Pricing / Cost estimation

This is a CheerioCrawler Actor sized at 256 MB, so runs are cheap. A typical run of 500 tradespeople (search pages only, 12 results/page) uses roughly 42–50 requests. On Apify's pay-per-use pricing this typically costs well under a dollar. Free Apify accounts get a capped preview (10 items).

Tips / Advanced options

  • Coverage: use the sitemap at https://www.checkatrade.com/sitemap/trades.xml to enumerate all trade categories, and https://www.checkatrade.com/sitemap/locations.xml for all locations.
  • Reliability: keep useApifyProxy: true with the RESIDENTIAL group. If you still hit blocks, increase pageDelayMs.
  • Cost control: set maxItems to bound the run; each page yields ~10 tradespeople.
  • Pagination: search pages paginate via ?page=N. The Actor follows them automatically until maxItems is reached.

FAQ, disclaimers, and support

Is scraping Checkatrade legal? Scraping publicly available business directory data for lead generation is generally acceptable, but you should review Checkatrade's Terms of Service and applicable data protection law (UK GDPR) before using the data commercially. This Actor only extracts publicly displayed business information.

Known limitations: Social media links are only captured when Checkatrade exposes them in the profile's contact data (most profiles don't list socials). Some profiles hide the phone number behind a "call to reveal" interaction β€” those show the number as displayed on the page.

Support: Open an issue on the Actor's Issues tab, or contact us for custom scraping solutions.