Audit-ready KYB · source-stamped verdicts · free to start
Verify any African business
in one API call
Business verification (KYB) for Africa: one call returns a decision-ready verdict — registration, status, sanctions screening and risk signals across 1M+ companies and 18 registries. Every field carries its source, the date checked and a confidence signal. Read access is free with an API key.
How we compare: OpenCorporates, Pappers and Dun & Bradstreet.
Built for
Know the business you're onboarding
Fintech & PSP onboarding
Verify a merchant the moment they sign up, registered, active, not sanctioned.
Lending & credit KYB
Confirm the borrowing entity and pull risk signals before you underwrite.
Marketplace seller vetting
Screen business sellers at scale across 18 African registries.
AML / CDD & EDD
Sanctions screening (OFAC, UN) and an audit-ready, sourced decision trail.
Quick start
One call, a decision
Every request needs a free API key. Send it in an Authorization: Bearer header (or x-api-key) — issue yourself one instantly from the dashboard. Then verify a business:
curl -X POST -H "Authorization: Bearer $FYLINGS_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Dangote Cement Plc","country":"NG"}' \
"https://www.fylings.com/api/v1/verify"Returns a decision-ready verdict:
{
"result": "verified", // verified | review | not_found
"registered": true,
"match_confidence": 0.97,
"company": {
"legal_name": "DANGOTE CEMENT PLC",
"registration_no": "208767",
"country": "NG",
"status": "active",
"entity_type_label": "Public Limited Company (PLC)",
"incorporation_date": "1992-11-04",
"source": "CAC (Corporate Affairs Commission)",
"registry_url": "https://www.fylings.com/company/ng/208767/dangote-cement-plc"
},
"sanctions": { "screened": true, "result": "clear", "hits": [] },
"data_confidence": 0.96,
"signals": { "listed": true, "has_government_contracts": true, "has_trademarks": false },
"sources": ["CAC", "OFAC SDN", "OFAC Consolidated", "UN"],
"checked_at": "2026-06-29T18:00:00Z"
}Prefer raw data? /v1/search returns matching records and /v1/company returns one full record, see the endpoints below.
Reference
Endpoints
/api/v1/verify{ name?, registration_no?, country? }Decision-ready KYB verdict for one business: resolves the company, screens it against OFAC + UN, and returns verified / review / not_found with the evidence. Name OR registration number required.
Returns: result, registered, match_confidence, company, sanctions, data_confidence, signals, sources.
/api/v1/search?q={name|regno}&country={cc}Search companies by name or registration number. Scope to one country with country, or omit it to search broadly. On a cache miss it queries the live registry and caches the result, so real companies always resolve.
Returns: query, count, source (db | live), checked_registries, and a results array.
/api/v1/company/{country}/{regno}Fetch one company's full record by country code and registration number, legal name, status, entity type, incorporation date, and any officers we hold.
Returns: A single company object, or 404 if not found.
Example record fetch: https://www.fylings.com/api/v1/company/mu/C40612
Raw search, match by name or registration number:
curl -H "Authorization: Bearer $FYLINGS_KEY" \
"https://www.fylings.com/api/v1/search?q=dangote&country=ng"{
"query": "dangote",
"country": "NG",
"count": 12,
"source": "db",
"results": [
{
"legal_name": "DANGOTE CEMENT PLC",
"registration_no": "208767",
"country": "NG",
"status": "active",
"entity_type": "company",
"entity_type_label": "Public Limited Company (PLC)",
"incorporation_date": "1992-11-04",
"listed_ticker": "DANGCEM",
"source": "CAC (Corporate Affairs Commission)",
"source_url": "https://www.cac.gov.ng"
}
]
}The data
What every record carries
legal_name | Registered legal name |
registration_no | Registry number (RC / RCCM / file no.) |
status | active · dormant · dissolved · unknown |
entity_type / _label | Normalised type + human label |
incorporation_date | ISO date, where the registry publishes it |
source / source_url | The registry it came from + its public page |
listed_ticker | Stock ticker, for listed companies |
Every field is provenance-tracked, the registry it came from and its public page, and we never fabricate: where a registrar doesn't publish a value, it's left null rather than guessed.
Beyond the registry
Not just company records
Government procurement
500,000+ public-contract awards matched to the companies that won them, across Nigeria, Tanzania, Uganda, Zambia, Ghana and Kenya. Each award carries the buyer, title, value and date.
Sanctions screening
Every company is screened against the OFAC SDN, OFAC Consolidated and UN Security Council lists, with a name-match confidence so you can prioritise review.
Trademarks (where available)
For companies with registered marks (OAPI / ARIPO), the brand portfolio with status and classes, live where the IP office publishes it.
Reference
Responses & errors
200 | Success, JSON body as documented above |
401 | Missing or invalid API key (send it as Authorization: Bearer or x-api-key) |
404 | Company not found (company endpoint only) |
429 | Rate limit / monthly quota exceeded, back off and retry |
Authentication errors look like this:
HTTP/1.1 401 Unauthorized
{ "error": "invalid_api_key", "message": "This API key is not valid or has been revoked." }
HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 2026-08-01T00:00:00.000Z
{ "error": "quota_exceeded", "message": "Monthly quota of 100 requests reached. ..." }Every authenticated response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset headers, so your client can budget without guessing.
Pagination: /v1/search takes limit (default 25, max 100) and offset; the response's count is the total number of matches, page until your offset reaches it.
The free key includes 100 requests/month, and paid plans start at $49/month (pricing). Machine-readable spec: /api/openapi.json (OpenAPI 3.1, feeds SDK generators and AI agents).
Free to evaluate, priced to build on
Issue yourself a key with 100 requests/month from the dashboard, no card, no sales call, enough to evaluate every endpoint. Paid plans start at $49/month and add shareholding data, bulk verification and procurement, see pricing. For bulk delivery, monitoring with change alerts, or an SLA, tell us what you need at [email protected].
