getregdata
Free agent skillsingapore-acra

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).

Install the skill
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 the API returns

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.
Authentication

Getting an API key

  1. None. No API key, no registration and no auth - the CKAN datastore is open.
  2. Pin the v1 datastore_search endpoint and the combined resource id below. A v2 API also exists; do not mix the two shapes.
  3. 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.

Reference

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}
Workflow

Running a KYB check end to end

  1. 1
    Resolve identity

    Search by name, read result.records and take the uen from the match. Skip if you already hold one.

  2. 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. 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.

Failure modes

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.

Where the free API stops

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.

Germany · Company, officers and capitalPoland · Beneficial owners (UBO)Spain · Company directory, NIF and officersFrance · Directors, financials, shareholdersItaly · Full profile, P.IVA and certified PECUAE (ADGM) · Company register and public filings
FAQ

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.

All agent skills Paid registry coverage