Singapore ACRA Company Registry Scraper avatar

Singapore ACRA Company Registry Scraper

Pricing

from $11.54 / 1,000 results

Go to Apify Store
Singapore ACRA Company Registry Scraper

Singapore ACRA Company Registry Scraper

Look up Singapore companies and businesses from the official ACRA corporate register on data.gov.sg. Get UEN, entity status, incorporation date, registered address, SSIC industry codes, officer count, former names and audit firms. Export to JSON, CSV or Excel.

Pricing

from $11.54 / 1,000 results

Rating

4.7

(2)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

11 days ago

Last modified

Share

Singapore ACRA Company Registry Scraper

Singapore ACRA Company Registry Scraper

Here is one real result, with every field the actor returns:

{
"uen": "196800306E",
"entityName": "DBS BANK LTD.",
"entityStatus": "Live Company",
"entityType": "Local Company",
"businessConstitution": null,
"companyType": "Public Company Limited by Shares",
"registrationIncorporationDate": "1968-07-16",
"uenIssueDate": "1968-07-16",
"address": "12, MARINA BOULEVARD, MARINA BAY FINANCIAL CENTRE, Singapore 018982",
"addressType": "LOCAL",
"block": "12",
"streetName": "MARINA BOULEVARD",
"floorUnit": null,
"buildingName": "MARINA BAY FINANCIAL CENTRE",
"otherAddressLines": null,
"postalCode": "018982",
"isActive": true,
"entityAgeYears": 58,
"pafConstitution": null,
"primarySsicCode": "64120",
"primarySsicDescription": null,
"primaryActivity": null,
"secondarySsicCode": null,
"secondarySsicDescription": null,
"secondaryActivity": null,
"noOfOfficers": 102,
"accountDueDate": "2027-07-31",
"annualReturnDate": "2026-06-03",
"formerNames": ["THE DEVELOPMENT BANK OF SINGAPORE"],
"auditFirms": null,
"issuanceAgency": "ACRA",
"source": "ACRA corporate entities (data.gov.sg)",
"observedAt": "2026-08-10T14:40:23.029Z"
}

The most complete Singapore ACRA registry scraper available. It returns every field the official corporate register exposes for each entity, from UEN, status and incorporation date to the parsed registered address, SSIC industry codes, officer count, former names and audit firms, plus derived fields like entity age, so you get clean KYB data on any Singapore company or business in one run.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor reads the official ACRA corporate entities register published on data.gov.sg, matches entities by company name keyword or UEN, applies any status, type and SSIC filters, and writes one normalized record per entity to the run's dataset. Each record carries the UEN, entity name, status and type, incorporation date, the registered address parsed into block, street, floor/unit, building and postal code, the primary and secondary SSIC industry codes and descriptions, officer count, former names and audit firms, plus derived fields such as isActive and entityAgeYears.

The register is split into one file per entity-name initial. By default the actor picks the file matching your search term for a fast lookup; enable Scan the whole register to search every initial. Missing source values are returned as null and lists as empty arrays, never invented.

Quickstart

Open the actor, paste this into the input, and press Run. It looks up companies matching DBS.

{
"searchQuery": "DBS",
"maxCompanies": 10
}

To pull every company in one industry, filter by SSIC code and scan the whole register:

{
"ssicCode": "64202",
"entityStatus": "Live Company",
"scanAllInitials": true,
"maxCompanies": 500
}

Every field is optional. With an empty input the actor lists entities from the default initial file.

Input reference

FieldTypeRequiredDefaultDescription
searchQuerystringnoDBSCompany/business name keyword or a UEN, for example DBS or 198600294G. Full-text match across each record.
nameInitialenumnoAutoWhich entity-name initial file to read. Auto uses the first letter of the search term. Pick a letter to browse it, or Others for names starting with a number or symbol.
scanAllInitialsbooleannofalseWhen on, searches every initial file A to Z plus Others. Thorough but slower because the open-data portal rate-limits anonymous requests.
entityStatusstringno(any)Exact match on registration status, for example Live Company, Registered, Struck Off.
entityTypestringno(any)Exact match on entity type, for example Local Company, Sole Proprietorship/ Partnership.
ssicCodestringno(any)Exact match on the primary SSIC industry code, for example 64202.
maxCompaniesintegerno10Maximum number of entities to collect. Range 1 to 1000000. Free Apify plans are capped at 10 per run.

Output reference

One dataset item per entity. Types: string, integer, boolean, string[], or null when the source value is absent.

FieldTypeDescription
uenstringUnique Entity Number (unique per entity).
entityNamestringRegistered entity name.
entityStatusstringRegistration status, for example Live Company.
entityTypestringEntity type, for example Local Company.
businessConstitutionstringBusiness constitution, or null.
companyTypestringCompany type, for example Public Company Limited by Shares.
registrationIncorporationDatestringRegistration or incorporation date (YYYY-MM-DD).
uenIssueDatestringDate the UEN was issued (YYYY-MM-DD).
addressstringFull registered address, single line.
addressTypestringAddress type, for example LOCAL.
blockstringBlock or house number, or null.
streetNamestringStreet name, or null.
floorUnitstringFloor and unit, or null.
buildingNamestringBuilding name, or null.
otherAddressLinesstringExtra address lines, or null.
postalCodestringPostal code.
isActivebooleantrue when the entity status is a live/active one.
entityAgeYearsintegerWhole years since incorporation.
pafConstitutionstringPAF constitution, or null.
primarySsicCodestringPrimary SSIC industry code.
primarySsicDescriptionstringPrimary SSIC description, or null.
primaryActivitystringPrimary activity text, or null.
secondarySsicCodestringSecondary SSIC code, or null.
secondarySsicDescriptionstringSecondary SSIC description, or null.
secondaryActivitystringSecondary activity text, or null.
noOfOfficersintegerNumber of registered officers.
accountDueDatestringNext accounts due date (YYYY-MM-DD), or null.
annualReturnDatestringLast annual return date (YYYY-MM-DD), or null.
formerNamesstring[]Previous registered names, or null.
auditFirmsstring[]Registered audit firms, or null.
issuanceAgencystringAgency that issued the UEN, for example ACRA.
sourcestringAlways ACRA corporate entities (data.gov.sg).
observedAtstringISO 8601 timestamp of when the record was collected.

Example output record

Real record from a live run (input {"searchQuery": "DBS", "maxCompanies": 10}), a dissolved entity:

{
"uen": "197700546G",
"entityName": "DBS PTE. LTD.",
"entityStatus": "Dissolved - Members Voluntary Winding Up",
"entityType": "Local Company",
"businessConstitution": null,
"companyType": "Private Company Limited by Shares",
"registrationIncorporationDate": "1977-03-17",
"uenIssueDate": "1977-03-17",
"address": "6, SHENTON WAY, OUE DOWNTOWN, Singapore 068809",
"addressType": "LOCAL",
"block": "6",
"streetName": "SHENTON WAY",
"floorUnit": null,
"buildingName": "OUE DOWNTOWN",
"otherAddressLines": null,
"postalCode": "068809",
"isActive": false,
"entityAgeYears": 49,
"pafConstitution": null,
"primarySsicCode": "64201",
"primarySsicDescription": "HOLDING COMPANIES",
"primaryActivity": null,
"secondarySsicCode": null,
"secondarySsicDescription": "HOLDING COMPANIES",
"secondaryActivity": null,
"noOfOfficers": 19,
"accountDueDate": "2001-07-31",
"annualReturnDate": "2000-03-30",
"formerNames": null,
"auditFirms": null,
"issuanceAgency": "ACRA",
"source": "ACRA corporate entities (data.gov.sg)",
"observedAt": "2026-08-10T14:40:23.030Z"
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~singapore-acra-entities-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"searchQuery":"DBS","maxCompanies":25}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~singapore-acra-entities-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"ssicCode":"64202","entityStatus":"Live Company","scanAllInitials":true,"maxCompanies":500}'

Apify CLI:

apify call scrapers_lat/singapore-acra-entities-scraper \
--input '{"searchQuery":"198600294G"}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per entity returned (result event). See the pricing tab for the current per-result price.
  • No charge on failure. If a run errors, the actor does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 records per run. Upgrade for higher maxCompanies.
  • Source rate limits. The data.gov.sg open-data portal rate-limits anonymous requests, so whole-register scans (scanAllInitials) run slower than a single-file lookup.

FAQ and troubleshooting

A run returned 0 companies. Why? The keyword or filters matched nothing in the initial file that was read. Try scanAllInitials, loosen the filters, or confirm the UEN. Zero-result runs are not charged.

How do I search the whole register, not just one letter? Enable scanAllInitials. By default the actor reads only the initial file matching your search term for speed.

Why is primarySsicDescription or auditFirms null? Not every entity has that value published in the open dataset. Missing source values are returned as null, never invented.

How do I pull every company in one industry? Set ssicCode to the primary SSIC code and enable scanAllInitials. Add entityStatus to keep only live companies.

Is this an official ACRA tool? No. This actor is independent and has no affiliation with ACRA or the government of Singapore. It reads only the publicly available open dataset on data.gov.sg. Use it in accordance with the data.gov.sg terms.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with ACRA or the government of Singapore. Accesses only the publicly available open dataset on data.gov.sg. Use in accordance with the data.gov.sg terms of service.