ACRA API
ACRA entity data is published free on data.gov.sg as a keyless CKAN datastore of roughly 2.1 million records. It gives you UEN, entity name, status, entity type and registered address. It is identity only: officers, shareholders and financials sit behind ACRA’s paid BizFile API.
Free and keyless, under the Singapore Open Data Licence - free reuse with attribution. Read-only, and refreshed monthly rather than in real time. Official docs: Entities Registered with ACRA (data.gov.sg).
npx skills add Nolpak14/getregdata -g -y
Teaches your agent the endpoints, the auth pattern and the failure modes below - so it runs the check correctly rather than guessing. Read SKILL.md
What you get, for free
- Entity identity
- entity_name and uen, the Unique Entity Number that is the canonical Singapore business identifier.
- Status
- uen_status_desc - Registered, Deregistered and similar. This single string carries the whole liveness signal in the free dataset.
- Entity type
- entity_type_desc, the legal form, for example Local Company.
- Registration and address
- uen_issue_date, reg_street_name and reg_postal_code, plus issuance_agency_desc naming the agency that issued the UEN.
Getting an API key
- None. No API key, no registration and no auth - the CKAN datastore is open.
- Pin the v1 datastore_search endpoint and the combined resource id below. A v2 API also exists; do not mix the two shapes.
- Page with limit and offset rather than pulling the whole 2.1 million-record set.
BASE="https://data.gov.sg/api/action/datastore_search" RID="d_3f960c10fed6145404ca7b821f263b87" # name -> candidate entities curl "$BASE?resource_id=$RID&q=DBS&limit=1" # UEN -> exact record via filter curl "$BASE?resource_id=$RID&filters=%7B%22uen%22%3A%22196800306E%22%7D"
Results come back under result.records with result.total for the match count. ACRA also splits the same data A-Z into about 27 separate datasets if you need them.
Endpoints
| Purpose | Call |
|---|---|
| Search by name | GET /api/action/datastore_search?resource_id={id}&q={name} |
| Lookup by UEN (free text) | GET /api/action/datastore_search?resource_id={id}&q={UEN} |
| Lookup by UEN (exact filter) | GET /api/action/datastore_search?resource_id={id}&filters={"uen":"{UEN}"} |
| Paginate | GET /api/action/datastore_search?resource_id={id}&limit={n}&offset={m} |
Running a KYB check end to end
- 1 Resolve identity
Search by name, read result.records and take the uen from the match. Skip if you already hold one.
- 2 Confirm it is registered
Filter exactly on uen and require uen_status_desc to read Registered. Record entity_type_desc, uen_issue_date and the registered address.
- 3 Note the ceiling
Officers, shareholders, SSIC industry code and financials are not in this dataset. If the check needs them, escalate to the paid BizFile Business Profile API.
What bites people
Identity only - do not read absence as low risk
The free dataset carries no officers, shareholders, beneficial owners, SSIC code or financials. "No directors found" here means the dataset does not carry directors, not that the company has none. That distinction matters in a KYB file.
Refreshed monthly, not in real time
A very recent incorporation, deregistration or address change may simply not be there yet. For a time-critical status check, confirm against BizFile rather than trusting a monthly snapshot.
Pin the resource id and the API version
Older documentation floats legacy UUID resource ids and a mix of API versions. Use the d_ prefixed resource with the v1 datastore_search endpoint, and do not mix v1 and v2 response shapes.
UEN is a string, not a number
A UEN such as 196800306E mixes digits and letters. Take the canonical uen from a name search verbatim into the exact-filter lookup.
The depth is a paid service, and not ours
Officer, shareholder and financial depth lives in ACRA’s own BizFile Business Profile API, which is paid per document. There is no getregdata Singapore actor - this is a genuinely open datastore with no wall to scrape past.
The jurisdictions with no free equivalent
The UK is the outlier. Most European registers publish through portals built for people, not a general-purpose API - so the next jurisdiction you need probably has no free option. These read the official source live and return the same shape of structured record.
Is there a free ACRA API?
Yes, in a limited sense. ACRA publishes its entity register free and keyless on data.gov.sg as a CKAN datastore. It answers whether an entity exists, whether it is registered, what type it is and where - and nothing deeper.
What is a UEN?
The Unique Entity Number, Singapore’s canonical business identifier. It is a string mixing digits and letters, such as 196800306E, and it is what you should key on rather than the name.
Can I get Singapore company directors for free?
No. Officers, shareholders and financials are not in the open dataset. They are available through ACRA’s paid BizFile Business Profile API, which charges per document. That is ACRA’s service, not ours.
How current is the free ACRA data?
It refreshes monthly. That is fine for identity confirmation but not for a time-critical status check on a recently incorporated or recently struck-off entity.