Company Verification Checker (Not-Found Free)
Pricing
from $1.10 / 1,000 company checks
Company Verification Checker (Not-Found Free)
Verify a company by name, LEI, VAT or UK company number: official name, registry status, incorporation date, registered address, LEI parents, VAT check digits and an OFAC, UK and EU sanctions screen with risk flags. No API key needed, and not-found rows are free. $2 per 1,000 companies.
Pricing
from $1.10 / 1,000 company checks
Rating
0.0
(0)
Developer
locaihost data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 days ago
Last modified
Categories
Share
Run a KYB check on any company in one call, from its name, LEI, VAT number or UK company number: the official record from UK Companies House or GLEIF, its parent companies, an offline VAT check and an entity sanctions screen against the OFAC, UK and EU lists, with plain-language risk flags, one row per company. No login and no API key needed, even for UK companies.
- Onboard business customers: does the company exist, is it active, is it on a sanctions list, and is its parent?
- Check suppliers: screen a whole supplier file and re-run it on a schedule to catch status changes and new listings.
- Clean up a CRM: legal name, LEI, registry number and registered address for every account, and dissolved companies flagged before you quote.
- Give an AI agent a counterparty check: one call answers "is this company real, active, VAT-format-valid and not on a sanctions list?".
Quick start
Paste this into the JSON tab of the input and click Start:
{"companies": [{"name": "Tesco PLC", "country": "GB", "companyNumber": "00445790"},{"name": "Siemens AG", "country": "DE"},"529900S21EQ1BO4ESM68","FR40303265045","Microsoft Corporation"]}
You get 5 rows, five companies given in five different ways, usually in about 25 seconds (the sanctions lists load at the start of every run). Strings and objects can be mixed; an object can carry name, country, companyNumber, lei and vatNumber, and a country makes name lookups more precise.
What data can I get?

| Group | Fields |
|---|---|
| Match | input, found, matchedName, matchedVia (LEI, company number, VAT number or name), nameMatchScore, matchConfidence, candidates (up to 3 closest Companies House names for a name lookup) |
| Official record | registryStatus, registryStatusSource, incorporationDate, dissolutionDate, registeredAddress, address, legalForm, sicCodes, sic (codes with descriptions), country |
| Identifiers | identifiers (LEI, company number, VAT number, registration authority) |
| UK register detail | companiesHouse (link, status detail, insolvency history, charges, accounts and confirmation statement overdue, next due dates, last accounts date, dataAsOf), companiesHouseSource |
| LEI | lei (registration and entity status, renewal date, direct and ultimate parent or GLEIF's reason none is reported), leiStatus |
| VAT | vat, vatValid (format and check digits, offline) |
| Sanctions | sanctionsHitCount, sanctionsHits (list, entry ID, matched name, score, method, programmes, listing date, link), sanctionsScreened (lists, threshold, names screened) |
| Flags | riskFlags: SANCTIONS_POSSIBLE_MATCH, PARENT_SANCTIONS_POSSIBLE_MATCH, NOT_FOUND, NOT_ACTIVE, LEI_LAPSED, LEI_NOT_ISSUED, VAT_INVALID, NAME_MISMATCH, ID_MISMATCH, INSOLVENCY_HISTORY, ACCOUNTS_OVERDUE, CONFIRMATION_STATEMENT_OVERDUE, RECENTLY_INCORPORATED, COMPANY_NUMBER_NOT_FOUND, LEI_NOT_FOUND, SANCTIONS_NOT_SCREENED, LOOKUP_FAILED, INPUT_WARNING, SOLE_PROPRIETOR |
| Run detail | sources, warnings, errors, checkedAt |
One real row (run on 2026-10-18 with the quick-start input, shortened):
{"input": {"name": "Tesco PLC", "country": "GB", "companyNumber": "00445790"},"found": true,"matchedName": "TESCO PLC","matchedVia": "company-number","nameMatchScore": 1,"country": "GB","identifiers": {"lei": "2138002P5RNKC5W2JZ46", "companyNumber": "00445790", "vatNumber": null, "registrationAuthority": "Companies House"},"registryStatus": "active","registryStatusSource": "companies-house","incorporationDate": "1947-11-27","registeredAddress": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, AL7 1GA, United Kingdom","sicCodes": ["47110"],"legalForm": "Public limited company","companiesHouse": {"hasInsolvencyHistory": false, "accountsOverdue": false, "confirmationStatementOverdue": false, "accountsNextDue": "2027-08-26", "source": "companies-house-web"},"matchConfidence": 1,"lei": {"registrationStatus": "ISSUED", "entityStatus": "ACTIVE", "nextRenewalDate": "2027-01-10", "directParent": null, "directParentException": "NON_CONSOLIDATING"},"sanctionsHitCount": 0,"sanctionsScreened": {"lists": ["OFAC SDN", "OFAC Consolidated", "UK Sanctions List", "EU Consolidated"], "threshold": 0.9, "names": 2},"riskFlags": [],"warnings": [],"errors": []}
The dataset has two views (KYB results, Sanctions hits) and exports to JSON, CSV, Excel or HTML. The run's SUMMARY record lists the sanctions lists used with their publication dates, plus risk-flag counts and any invalid entries.
How the sanctions matching works
- Entities only. Individuals, vessels and aircraft are removed from the lists before matching, so the Actor never matches or returns a person.
- Names screened: the name you gave, the official registry or LEI name (plus GLEIF's other names), and the direct and ultimate parent. If a list records an LEI for an entity, an LEI match counts as a certain hit.
- Normalisation: case, accents and punctuation are ignored, and legal forms are dropped (Ltd = Limited = PLC; GmbH; OOO, PJSC, Sp. z o.o. and others). Descriptive words such as Bank or Group are kept.
- Score (0-1), best of several methods:
exactafter normalisation;jaro-winklerper word for misspellings (each word must be within typo distance);token-sortfor word-order changes;token-setfor names contained in a longer name (scores 0.85-0.99, never 1). Scores are rounded down. - Typos must look like typos: every word has to be the same word, perhaps misspelt. Two names that share one long word but differ in a short one ("KT Logistics" and "KG Logistics") are not a hit.
- Threshold: default 0.9. In our October 2026 test on 1,500 ordinary active companies from GLEIF, 1.1% got any hit at 0.9. Listed names with one wrong letter (after the first three) were found 99.9% of the time, and with the words in a different order 100%. Use 0.95 for fewer reviews, or 0.85 for wider recall.
Sources and licences
| Source | Used for | Licence |
|---|---|---|
| UK Companies House register: the public website (no key), or the Public Data API (your own key) | Company overview and company search only. Never officers, PSC or filed documents | Open Government Licence v3.0 |
| GLEIF LEI API | LEI records, parents, legal forms | CC0 |
| OFAC SDN and Consolidated (non-SDN) lists | Entity screening | US Government work, public domain |
| UK Sanctions List (FCDO) | Entity screening | Open Government Licence v3.0 |
| EU Financial Sanctions Files | Entity screening | © European Union, reuse under Commission Decision 2011/833/EU |
Contains public sector information licensed under the Open Government Licence v3.0. Lists are downloaded fresh at the start of every run.
How much does it cost?
You pay per company checked, and only when the company is identified or there is a possible sanctions match. There is no charge for Apify platform usage on top.
| Row | Free and Starter | Scale | Business |
|---|---|---|---|
| Company checked | $2.00 per 1,000 | $1.50 per 1,000 | $1.10 per 1,000 |
Plus $0.00005 per run start. Apify's free $5 monthly credit covers about 2,500 companies. Free-plan runs check up to 25 companies each; any paid Apify plan removes the cap.
What's free: invalid entries, "not found" results, sole-proprietor LEIs (no name is returned for those), rows where every lookup failed for technical reasons, and companies not reached before the run's time limit. Not-found and failed rows still appear in the dataset, so you can see why. Duplicates are merged first. Set maxResults to stop after a number of companies, or Maximum cost per run in the run options to cap a run's spend.
Limits, stated up front
- VAT numbers are validated offline (format and official check digits, cross-checked against a reference implementation on 76,000 numbers). VIES is not queried, because its terms forbid retransmitting its answers. For legal proof that a VAT number is registered, check it yourself on the EU VIES website.
- The UN Security Council list is not screened separately: its terms allow personal, non-commercial use only. UN designations are carried into the UK, EU and US lists, which are screened.
- UK companies need no key. Without one, the Actor reads the public Companies House website at no more than one request a second. The website doesn't show a company's
jurisdiction, so that field isnullon the keyless route; your own free Companies House key fills it in. A name with no country is looked up in GLEIF first (worldwide), and in the UK register when GLEIF has no match. Non-UK companies are covered through GLEIF. - Fuzzy matching only compares names that share the first three letters of at least one word, so a typo in the first letters of every word is missed. Non-Latin scripts are not transliterated.
- Up to 1,000 companies per run (duplicates merged first); split longer lists across runs or tasks.
- GLEIF allows 60 requests a minute, so expect about 40 companies a minute when you give LEIs and fewer for name-only lookups (the default 1-hour timeout covers 1,000 companies). If the time limit comes first, the run stops cleanly: companies already checked are kept, the rest are not charged, and the status message says how many were left.
- A sanctions list whose server doesn't deliver within 2.5 minutes is skipped for that run: the status message and
SUMMARYname it, and each row'ssanctionsScreenedlists only the lists actually used. - A screening aid, not legal advice. A hit is a possible match that a person must review. No hit does not prove a company is clean: lists change daily, names vary, and ownership or control can make a company subject to sanctions even when it is not listed. Check results against the official sources before you decide. The Actor is not affiliated with or endorsed by Companies House, GLEIF, OFAC, the FCDO or the European Commission.
Schedules
Each run downloads the current official lists and reads the registers live. To monitor counterparties, save your list as a task and add a schedule under Schedules in Apify Console: a weekly run catches status changes, overdue filings and new listings.
Integrations: API, n8n, Make and AI agents
API. Run it and get the rows back in one call:
curl -X POST "https://api.apify.com/v2/acts/locaihost~kyb-check/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"companies": [{"name": "Tesco PLC", "country": "GB"}, "529900S21EQ1BO4ESM68"]}'
Apify's API clients for Python and JavaScript work the same way.
n8n, Make, Zapier, Google Sheets, Slack, webhooks. Apify's built-in integrations send each run's dataset wherever you need it, for example an alert when riskFlags is not empty.
AI agents (MCP). Add this Actor to Claude, Cursor or any MCP client with https://mcp.apify.com/?tools=locaihost/kyb-check, then ask something like "Is Acme Shipping Ltd, UK company 01234567, active, and do it or its parent appear on any sanctions list?" The agent passes companies and reads riskFlags and sanctionsHits.
FAQ
How much does a company check cost?
$2.00 per 1,000 companies on the Free and Starter plans, less on Scale and Business, charged only when the company is identified or there is a possible sanctions match. Not-found results are free. Apify's free $5 monthly credit covers about 2,500 companies.
Can I use it through the API or from Python?
Yes. Use the run-sync-get-dataset-items call above, or Apify's Python and JavaScript clients. Every run's data is also available as JSON, CSV or Excel from its dataset.
Can I use it from an AI agent?
Yes. No sign-up with any registry and no API key are needed. Use the Apify MCP server (https://mcp.apify.com/?tools=locaihost/kyb-check) or the run-sync API.
Is it legal to use this data?
Every source is an official open source with a published licence (see the table above), and the Actor reads only public records. It never logs in. You remain responsible for how you use the results, including your own compliance duties.
Does it return personal data?
No. People are filtered out of the sanctions lists before matching. From Companies House only the company overview and company search are read, never the officers or PSC pages. Addresses are company registered offices, and a "c/o" part of an address (which can name a person) is dropped. GLEIF also issues LEIs to sole proprietors: for those the row says SOLE_PROPRIETOR and gives the LEI status and country, but no name, address, registration number or creation date, and it is not charged.
Why are some fields empty?
Fields come from the source that matched: UK companies have Companies House detail, others only what GLEIF records. jurisdiction is empty on the keyless UK route, vat is empty unless you give a VAT number, and parents are empty when GLEIF reports none (the reason is in directParentException).
Do I need a Companies House API key?
No. UK companies are read from the public Companies House register website. If you add your own free key, the official API route is used instead; rows have the same fields, plus jurisdiction.
More from locaihost data
- Company Enrichment by Domain: name, description, logo, socials and role contact addresses from each company's own website.
- LinkedIn Company Scraper: industry, size band and headquarters from each company's public LinkedIn page.
- Tech Stack & Domain Lookup: email provider, DNS, SSL and registrar for each company's domain.
- SEC EDGAR Financials & Filings: fundamentals and filings for US-listed companies.
Did it help?
If this saved you time, a quick rating on the Store helps other people find it.
Support
Something not working, or a register you need covered? Open an issue on the Issues tab: we answer issues within 24 hours.