Checkatrade Scraper [$3/1kπ°] | Reviews | UK Trades Leads
Pricing
from $2.97 / 1,000 results
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
Maintained by CommunityActor 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
- Open the Actor in Apify Console and click Start.
- Configure the input (see below) β pick trades + locations, or paste search URLs directly.
- Wait for the run to finish, then download the dataset as JSON, HTML, CSV or Excel.
- Or call it via the Apify API from your own pipeline.
Input
| Field | Type | Description |
|---|---|---|
startUrls | array | Checkatrade search URLs to start from (e.g. https://www.checkatrade.com/Search/Plumber/in/Greater-London) β overrides trades + locations |
trades | array | Trades to search (e.g. Plumber, Electrician, Builder) β combined with locations |
locations | array | UK locations/counties (e.g. Greater-London, Kent, Essex) |
maxItems | integer | Max tradespeople to scrape (0 = unlimited) |
pageDelayMs | integer | Delay between page requests (default 1000) |
proxyConfiguration | object | Apify 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
| Field | Description |
|---|---|
companyName | Tradesperson / company name |
uniqueName | Checkatrade profile slug |
profileUrl | Checkatrade profile URL https://www.checkatrade.com/trades/{slug} |
trade | Trade category searched (e.g. Plumber) |
searchLocation | Location searched (e.g. Greater-London) |
locality | Company service locality |
addressCountry | Country code (GB) |
rating | Average rating (out of 10) |
totalReviews | Number of reviews |
phone | Phone number (E.164) |
reviewBody | Latest review text |
reviewAuthor | Latest review author name |
reviewRating | Latest 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:
- Search pages (
/Search/{Trade}/in/{Location}?page=N): the tradesperson list is embedded in a schema.orgapplication/ld+jsonItemList blob in the served HTML. Each item contains name, profile URL, phone, address, rating, review count and one review. Parsed directly withJSON.parseβ no selectors needed. - Fallback β if the ItemList is missing, the Next.js App Router flight data (
self.__next_f.push(...)chunks) is parsed for the same fields. - 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.xmlto enumerate all trade categories, andhttps://www.checkatrade.com/sitemap/locations.xmlfor all locations. - Reliability: keep
useApifyProxy: truewith theRESIDENTIALgroup. If you still hit blocks, increasepageDelayMs. - Cost control: set
maxItemsto bound the run; each page yields ~10 tradespeople. - Pagination: search pages paginate via
?page=N. The Actor follows them automatically untilmaxItemsis 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.