Web Scraping Layers for AI & Automation

back to blog

How to automate company verification with Companies House, BBB, and Owler data

ParseBird·06 Sep 2026

Key Takeaways

What's the difference between "does this company exist" and "is this company trustworthy"? Existence is a registry fact — Companies House confirms a UK company is legally incorporated, active, and who's behind it. Trustworthiness is reputational — BBB's letter grade and complaint history reflect how the business actually treats customers, which a registry check can't tell you.

Do any of these require paying for API access? No — all three read public data: Companies House's bulk snapshot is a free government dataset, BBB.org and Owler's company profiles are publicly browsable pages with no login required.

Is UK Companies House data really more complete than commercial company databases? For UK companies specifically, yes — it's the actual government company register (5 million+ companies), not a third party's aggregation of it. Commercial tools like D&B or Owler add value on top (revenue estimates, competitor graphs) but the underlying "does this company legally exist" fact is more authoritative straight from Companies House.

Three KYB Questions, Three Data Sources

QuestionSourceCoverage
Does it legally exist, and who's behind it?UK Companies HouseUK only, but 5M+ companies, free government registry
Is it a trustworthy vendor?BBBUS and Canada, rating + complaint history
Who competes with it, and who funded it?OwlerGlobal, firmographics + competitor graph + funding

UK Companies House: The Free Government Registry, Filterable

Companies House publishes its full company register as a free bulk snapshot — but it's a single ~500 MB ZIP containing 5 million+ rows, and the official Companies House API only supports per-company lookups, not sector-wide scans. The UK Companies House Scraper streams and filters that snapshot server-side:

{
  "companyName": "EXAMPLE SOFTWARE LTD",
  "companyNumber": "12345678",
  "status": "Active",
  "category": "Private Limited Company",
  "incorporationDate": "2019-03-14",
  "sicCodes": ["62012 - Business and domestic software development"],
  "address": { "postTown": "LONDON", "postcode": "EC1A 1BB" },
  "previousNames": []
}

Filters combine — sicCodePrefixes: ["62", "63"] plus postTowns: ["LONDON"] returns only London-based software companies, stopping as soon as maxResults is hit rather than always scanning the full 5-million-row register. That makes a narrow query (one SIC prefix, one city) finish in a couple of minutes even though the underlying dataset is enormous.

BBB: Reputation, Not Just Existence

Existing legally says nothing about how a business treats its customers. The BBB Scraper reads Better Business Bureau listings across the US and Canada:

{
  "businessName": "Acme Roofing Co",
  "bbbRating": "A+",
  "isAccredited": true,
  "phone": "(214) 555-0100",
  "complaintsLast12Mo": 2,
  "reviewCount": 47,
  "averageReviewRating": 4.6,
  "yearsInBusiness": 12
}

Search mode (the default) returns rating, accreditation, and contact fields fast, across a whole search result page. scrapeDetails: true opens each profile individually for the deeper vetting fields — complaint history broken down by 12-month/3-year/all-time windows, owner name, license numbers, and government actions — which costs more per business but is the layer that actually matters for vendor risk decisions, not just a headline grade.

Owler: Competitors, Funding, and the Bigger Picture

Companies House and BBB both answer questions about one company at a time. The Owler Company Scraper answers a different question — who else operates in this space, and how well-funded are they:

{
  "name": "Acme Analytics",
  "domain": "acmeanalytics.com",
  "employeesRange": "51-200",
  "revenueRange": "$10M - $50M",
  "ceo": { "name": "Jane Doe" },
  "competitors": [{ "name": "DataCorp", "revenueRange": "$50M - $100M" }],
  "totalCompetitors": 14,
  "funding": { "rounds": [{ "amount": "$8M", "date": "2024-03", "investors": ["Acme Ventures"] }] }
}

Feed it website domains straight from a CRM export (the most precise input mode) or start from a presetsaas, fintech, ai-ml, ecommerce, gaming, or crypto-web3 — to traverse Owler's live competitor graph up to 4 hops out from ~20 curated anchor companies, effectively mapping an entire market from a handful of seed names.

Chaining the Three Into One Vendor Check

async function verifyVendor(companyName, ukCompanyNumber, domain) {
  const [registry, reputation, intel] = await Promise.all([
    ukCompanyNumber ? runActor("uk-companies-house-scraper", { nameContains: companyName }) : null,
    runActor("bbb-scraper", { keyword: companyName, scrapeDetails: true }),
    runActor("owler-company-scraper", { companyDomains: [domain] }),
  ]);

  return {
    legallyActive: registry?.[0]?.status === "Active",
    bbbRating: reputation?.[0]?.bbbRating,
    complaintsLast12Mo: reputation?.[0]?.complaintsLast12Mo,
    revenueRange: intel?.[0]?.revenueRange,
  };
}

FAQ

Does Companies House cover companies outside the UK? No — it's the UK's own government registry. For other countries, Dun & Bradstreet's directory covers 190+ countries with lighter per-country depth, or Owler's domain-based lookup works globally regardless of country of incorporation.

How current is the Companies House snapshot? It's Companies House's own published bulk data file, refreshed on their schedule (roughly monthly) — recent incorporations may take a few weeks to appear, the same lag you'd see checking the register directly.

Browse ParseBird's developer tools for more data-cleaning and enrichment actors to pair with a vendor-verification pipeline.