Singapore ACRA Company Registry Scraper
Pricing
from $11.54 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
11 days ago
Last modified
Categories
Share
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
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
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
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchQuery | string | no | DBS | Company/business name keyword or a UEN, for example DBS or 198600294G. Full-text match across each record. |
nameInitial | enum | no | Auto | Which 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. |
scanAllInitials | boolean | no | false | When on, searches every initial file A to Z plus Others. Thorough but slower because the open-data portal rate-limits anonymous requests. |
entityStatus | string | no | (any) | Exact match on registration status, for example Live Company, Registered, Struck Off. |
entityType | string | no | (any) | Exact match on entity type, for example Local Company, Sole Proprietorship/ Partnership. |
ssicCode | string | no | (any) | Exact match on the primary SSIC industry code, for example 64202. |
maxCompanies | integer | no | 10 | Maximum 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.
| Field | Type | Description |
|---|---|---|
uen | string | Unique Entity Number (unique per entity). |
entityName | string | Registered entity name. |
entityStatus | string | Registration status, for example Live Company. |
entityType | string | Entity type, for example Local Company. |
businessConstitution | string | Business constitution, or null. |
companyType | string | Company type, for example Public Company Limited by Shares. |
registrationIncorporationDate | string | Registration or incorporation date (YYYY-MM-DD). |
uenIssueDate | string | Date the UEN was issued (YYYY-MM-DD). |
address | string | Full registered address, single line. |
addressType | string | Address type, for example LOCAL. |
block | string | Block or house number, or null. |
streetName | string | Street name, or null. |
floorUnit | string | Floor and unit, or null. |
buildingName | string | Building name, or null. |
otherAddressLines | string | Extra address lines, or null. |
postalCode | string | Postal code. |
isActive | boolean | true when the entity status is a live/active one. |
entityAgeYears | integer | Whole years since incorporation. |
pafConstitution | string | PAF constitution, or null. |
primarySsicCode | string | Primary SSIC industry code. |
primarySsicDescription | string | Primary SSIC description, or null. |
primaryActivity | string | Primary activity text, or null. |
secondarySsicCode | string | Secondary SSIC code, or null. |
secondarySsicDescription | string | Secondary SSIC description, or null. |
secondaryActivity | string | Secondary activity text, or null. |
noOfOfficers | integer | Number of registered officers. |
accountDueDate | string | Next accounts due date (YYYY-MM-DD), or null. |
annualReturnDate | string | Last annual return date (YYYY-MM-DD), or null. |
formerNames | string[] | Previous registered names, or null. |
auditFirms | string[] | Registered audit firms, or null. |
issuanceAgency | string | Agency that issued the UEN, for example ACRA. |
source | string | Always ACRA corporate entities (data.gov.sg). |
observedAt | string | ISO 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:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "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 (
resultevent). 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
maxTotalChargeUsdon 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.
Related scrapers
- Australia ASIC Registers Scraper: Australian company and licence registers.
- Australia ABN Lookup Scraper: Australian Business Number records.
- Hong Kong SFC Licensees Scraper: Hong Kong SFC licensed firms and individuals.
- Indonesia Companies Scraper: Indonesian listed company profiles.
- GLEIF LEI Company Records Scraper: global LEI company records.
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.
