UK Trade Credentials Verifier
Pricing
from $12.00 / 1,000 multi-register verifications
UK Trade Credentials Verifier
Checks a UK tradesperson or business against Gas Safe, NICEIC, FMB, TrustMark, and Companies House to confirm active licensing, registration and insurance status. From £0.007 per register match.
Pricing
from $12.00 / 1,000 multi-register verifications
Rating
0.0
(0)
Developer
joseph fadero
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Checks a UK tradesperson or business name (or Companies House registration number) against Gas Safe, NICEIC, FMB, TrustMark, and Companies House to confirm active licensing, registration and insurance status. From £0.007 per register match.
Inputs
| Field | Default | Description |
|---|---|---|
businessName | C Smith Carpentry & Joinery Ltd | UK tradesperson/business name. Real, currently-listed business (confirmed live on both Companies House and the FMB register during build) — used as the default so the Actor returns a real match with zero config. |
registrationNumber | — | Companies House registration number, used instead of/alongside businessName for a direct Companies House lookup. |
checkSources | all 5 | Which registers to check: gasSafe, niceic, fmb, trustmark, companiesHouse. |
postcode | — | Optional, disambiguates common business names in the output record (not currently used to filter FMB results, since FMB's name-search endpoint does not require it). |
At least one of businessName or registrationNumber must be supplied, or the run fails clearly.
Outputs
One record per run, results holding one entry per checked register:
{"businessName": "C Smith Carpentry & Joinery Ltd","postcode": null,"results": [{ "source": "fmb", "status": "active", "registrationId": "c-smith-carpentry-joinery-ltd", "expiryDate": null, "detail": "..." },{ "source": "companiesHouse", "status": "active", "registrationId": "15552718", "expiryDate": null, "detail": "..." },{ "source": "gasSafe", "status": "unavailable", "registrationId": null, "expiryDate": null, "detail": "..." }],"matchCount": 2,"registersChecked": 5,"companiesHouseStatus": "active","incorporationDate": "2023-04-11","sicCodes": ["43320"],"lastVerifiedAt": "2026-09-15T17:29:45.703Z","chargedEvent": "multi-register-match"}
status is one of active, lapsed, not-found, or unavailable (a source that could not be checked for a real, documented technical reason — see below).
Which registers actually work (honest status, confirmed live 2026-09-15)
| Register | Status | Why |
|---|---|---|
| FMB (Federation of Master Builders) | Working | GET https://www.fmb.org.uk/find-a-builder.html?name=<query> returns real, server-rendered HTML with no auth or JS required. Confirmed live against a real search ("Smith" → 24 real results) and parsed with cheerio (article.article-list-item .article-title-link + .article-teaser p). |
| Companies House | Working (needs a free API key) | Official REST API (api.company-information.service.gov.uk), HTTP Basic auth with the API key as username. Reads the key from COMPANIES_HOUSE_API_KEY. Get a free key at https://developer.company-information.service.gov.uk/. If the env var is unset, this source alone reports unavailable — it never crashes the run. |
| Gas Safe Register | unavailable | The entire site is behind Incapsula/Imperva bot-protection — confirmed live: every request (including a plain homepage GET with a real browser User-Agent) returns HTTP 403 with an Incapsula challenge page. Not solvable with HTTP + cheerio; would need a headless browser plus a residential proxy, which this Actor deliberately does not use. |
| NICEIC | unavailable | The public search widget on niceic.com embeds a separate legacy ASP.NET WebForms app (proximity.niceic.com/mainform.aspx). It's reachable over plain HTTP, but the search action is a stateful __VIEWSTATE/__EVENTVALIDATION postback AND the form carries a hidden gRecaptchaResponse field — confirming the real search is reCAPTCHA-gated server-side. Not solvable without a headless browser and CAPTCHA-solving. |
| TrustMark | unavailable | The whole site (including the tradesperson-search pages) is an Angular SPA shell (<app-root>, ng-version) with no server-rendered content. The compiled JS bundle (~3MB) was fetched and inspected live; it only exposes CMS/content API routes (/api/news, /api/navigation, /api/businesses/NumberOfActiveBusinesses, etc.) — no public, unauthenticated tradesperson-search endpoint could be found. Not solvable with HTTP + cheerio. |
Each register is checked independently — one being down, blocked, or impractical never crashes or blocks the others. Small delays (400ms) are added between source checks to stay polite to these low-volume public sites.
Pricing (Pay Per Event)
| Event | Price | Trigger |
|---|---|---|
| Actor Start | $0.05 | Charged once per run (built-in). |
| Business Checked No Match | $0.002 | Zero requested registers returned a real match (built-in dataset-item event). |
| Single-Register Verification | $0.007 | A real match on exactly 1 requested register. |
| Multi-Register Verification (primary) | $0.012 | A real match on 2+ requested registers. |
| Companies House Enrichment | $0.004 | companiesHouse was requested AND real incorporation/SIC data came back — stacks on top of whichever match event applies. |
Notes
- Pure HTTP + cheerio, no headless browser, no Dockerfile.
- Set
COMPANIES_HOUSE_API_KEYas an environment variable on the Actor to enable Companies House lookups (free to obtain).