
Congress Stock Trades Scraper
scrape.ly/store/querystone/congress-trades-scraperNewsBusiness
3 monthly users

Scrape Checkatrade UK tradespeople by trade and postcode, town or URL: name, phone, website, rating, reviews, owner, VAT, company type, insurance, services, coverage area, member since, optional reviews.
Extract UK tradespeople from Checkatrade by trade and location (postcode, postcode district or town), from Checkatrade search URLs, or from trade profile URLs. Each trade comes with phone number, website, rating, review counts, owner, company type, VAT number, insurance, member-since date, coverage area, services, work types and, optionally, its newest reviews. No login, no browser, fast and cheap.
Plumber, Roofer, Boiler Repair) or category IDs, in as many postcodes, districts or towns as you like.Plumber) and one or more locations (for example E6 1AE, GL1 or Gloucester). Or paste Checkatrade search or profile URLs.| Field | Description |
|---|---|
categories | Trade names or Checkatrade category IDs, for example Plumber, Electrician, 20 |
locations | UK postcodes (E6 1AE), districts (GL1) or towns (Gloucester) |
startUrls | Search URLs (/Search/Plumber/in/E61AE) or profiles (/trades/example) |
maxItems | Maximum trades in total (default 20, 0 = no limit) |
maxItemsPerSearch | Optional cap per trade and location |
requirePhone | Skip trades without a phone number |
includeProfileDetails | Load each profile for website, owner, VAT, insurance, coverage (default on) |
maxReviewsPerTrade | Newest reviews to add per trade (default 0) |
{
"categories": ["Plumber", "Roofer"],
"locations": ["E6 1AE", "Gloucester"],
"maxItems": 100,
"maxItemsPerSearch": 25,
"maxReviewsPerTrade": 5
}
| Field | Description |
|---|---|
name, profileUrl, companyId, uniqueName | Trade name and Checkatrade profile |
phone, phoneDisplay, otherPhones, website, email, contactName | Contact details as shown on the profile |
location, region, coverageArea | Where the trade is based and works |
rating, reviewCount, recentReviewCount, ratingBreakdown | Score out of 10, review totals and per-criterion scores |
primaryTrade, trades, services, workTypes, accreditations | What they do (for example Domestic Work, Free Estimates) |
owner, companyType, vatRegistered, vatNumber, publicLiabilityInsurance, insuredBy, memberSince, fullyVetted, guaranteed | Vetting information |
summary, description, logoUrl, photos, latestReviewExcerpt, reviews | Profile text, media and reviews |
searchCategory, searchLocation, searchPostcode, scrapedAt | Which search found the trade, and when |
Example (one trade, shortened, fictional data):
{
"companyId": 1234567,
"name": "Example Bathrooms Ltd",
"profileUrl": "https://www.checkatrade.com/trades/examplebathrooms",
"phone": "+447700900123",
"phoneDisplay": "07700 900123",
"website": "https://www.example-bathrooms.co.uk/",
"contactName": "Mr John Example",
"location": "London",
"region": "Newham",
"coverageArea": "Newham",
"rating": 9.92,
"reviewCount": 30,
"recentReviewCount": 16,
"ratingBreakdown": {"workmanship": 9.94, "reliability": 9.88},
"primaryTrade": "Bathrooms",
"services": ["Bathroom Fitter", "Wet Rooms", "Tiler"],
"workTypes": ["Domestic Work", "Commercial Work", "Free Estimates"],
"owner": "Mr John Example",
"companyType": "Ltd Company",
"vatRegistered": true,
"vatNumber": "123456789",
"publicLiabilityInsurance": "Current: Verified 07/02/2026",
"memberSince": "March 2026",
"guaranteed": true,
"reviews": [
{"title": "Amazing new bathroom", "text": "Did an amazing job, would highly recommend.", "rating": 9.33, "workmanship": 9, "reliability": 9, "communication": 10, "date": "2026-09-24T17:00:08Z", "service": "Bathroom Fitter", "reviewerPostcode": "SE15"}
],
"searchCategory": "Plumber",
"searchLocation": "E6 1AE",
"searchPostcode": "E6 1AE",
"scrapedAt": "2026-10-16T02:00:00Z"
}
You pay $3.30 per 1,000 trades ($0.0033 per trade), plus a small amount of platform usage (compute and datacenter proxy traffic, usually a few cents per 1,000 trades). Reviews are included in the trade row at no extra charge. Example: 1,000 trades with profile details cost about $3.30 in events plus a few cents of usage. Trades skipped by the phone filter and failed results are never charged.
Is it legal to scrape Checkatrade? The scraper reads only public information that anyone can see without an account. Make sure your use of the data (for example cold calling) follows UK GDPR, PECR and the other rules that apply to you.
Do I need a Checkatrade account or a proxy? No account. The default datacenter proxy works; if it gets blocked, the scraper switches to UK residential exits by itself.
How many results can I get? As many as Checkatrade lists for each trade and location (for example about 115 plumbers for E6 1AE). Add more locations for wider coverage; duplicates are removed.
Why is a field empty? Not every trade fills in every detail. Website, email and accreditations only appear when the trade has added them. With profile details off, rows contain the search data only.
Can I schedule it or use the API? Yes. Schedule runs in the console, or start them through the API and read the dataset as JSON, CSV or Excel.
I used another Checkatrade scraper. Is the input compatible? The old location, category (ID), max_pages and require_phone_number fields work as they are.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
categoriesarrayOptionalTrades
Trades to search, by name (Plumber, Electrician, Roofer, Builder, Painter & Decorator, Gas Engineer, Boiler Repair...) or Checkatrade category ID (20 = Plumber). Each trade is searched in every location below.
locationsarrayOptionalLocations
UK locations: a full postcode (E6 1AE), a postcode district (GL1, M1) or a town or city (Gloucester). Checkatrade lists the trades that cover each location.
startUrlsarrayOptionalCheckatrade URLs
Optional Checkatrade URLs: search pages (https://www.checkatrade.com/Search/Plumber/in/E61AE) or trade profiles (https://www.checkatrade.com/trades/example).
maxItemsintegerOptionaldefault 20Max trades
Maximum number of trades to save in total (0 = no limit).
maxItemsPerSearchintegerOptionaldefault 0Max trades per search
Optional cap per trade and location, so every location gets its share of a bigger job. 0 = no per-search cap.
requirePhonebooleanOptionaldefault falseOnly trades with a phone number
Skip trades that show no phone number (skipped trades are not charged).
includeProfileDetailsbooleanOptionaldefault trueInclude profile details
Load each trade's profile for website, contact name, owner, company type, VAT number, insurance, member since, coverage area, all services, work types and accreditations. Turn off for faster runs with search data only (name, phone, rating, trades).
maxReviewsPerTradeintegerOptionaldefault 0Reviews per trade
Number of the newest reviews to add to each trade (0 = none). Reviews are included in the trade row at no extra charge.
maxConcurrencyintegerOptionaldefault 10Max concurrency
Profiles loaded in parallel.
proxyobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter exits work for Checkatrade; the scraper moves to UK residential exits automatically if they get blocked.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| name | any | Trade |
| phoneDisplay | any | Phone |
| website | any | Website |
| rating | any | Rating /10 |
| reviewCount | any | Reviews |
| location | any | Location |
| region | any | Region |
| coverageArea | any | Works in |
| primaryTrade | any | Main trade |
| companyType | any | Company type |
| owner | any | Owner |
| memberSince | any | Member since |
| vatRegistered | any | VAT registered |
| guaranteed | any | Guaranteed |
| searchCategory | any | Searched trade |
| searchLocation | any | Searched location |
| profileUrl | any | Profile |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Trade | One Checkatrade tradesperson saved (search data plus profile details when enabled). Reviews are included at no extra charge. | $0.0033 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('cornerledger/checkatrade-scraper').call({
"categories": [
"Plumber"
],
"locations": [
"E6 1AE"
],
"maxItems": 20,
"proxy": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run cornerledger/checkatrade-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=cornerledger/checkatrade-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Profiles with 2 reviews per trade.
Quick list of tradespeople near a postcode.
Only trades that list a phone number.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.