Company Verification Checker (Not-Found Free) avatar

Company Verification Checker (Not-Found Free)

Pricing

from $1.10 / 1,000 company checks

Go to Apify Store
Company Verification Checker (Not-Found Free)

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

locaihost data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 days ago

Last modified

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?

Real rows from this Actor's output: matched name, registry status, incorporation date, LEI parent, VAT check and sanctions-screen result for five companies

GroupFields
Matchinput, 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 recordregistryStatus, registryStatusSource, incorporationDate, dissolutionDate, registeredAddress, address, legalForm, sicCodes, sic (codes with descriptions), country
Identifiersidentifiers (LEI, company number, VAT number, registration authority)
UK register detailcompaniesHouse (link, status detail, insolvency history, charges, accounts and confirmation statement overdue, next due dates, last accounts date, dataAsOf), companiesHouseSource
LEIlei (registration and entity status, renewal date, direct and ultimate parent or GLEIF's reason none is reported), leiStatus
VATvat, vatValid (format and check digits, offline)
SanctionssanctionsHitCount, sanctionsHits (list, entry ID, matched name, score, method, programmes, listing date, link), sanctionsScreened (lists, threshold, names screened)
FlagsriskFlags: 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 detailsources, 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: exact after normalisation; jaro-winkler per word for misspellings (each word must be within typo distance); token-sort for word-order changes; token-set for 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

SourceUsed forLicence
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 documentsOpen Government Licence v3.0
GLEIF LEI APILEI records, parents, legal formsCC0
OFAC SDN and Consolidated (non-SDN) listsEntity screeningUS Government work, public domain
UK Sanctions List (FCDO)Entity screeningOpen Government Licence v3.0
EU Financial Sanctions FilesEntity 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.

RowFree and StarterScaleBusiness
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 is null on 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 SUMMARY name it, and each row's sanctionsScreened lists 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.

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

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.