Malaysia & Singapore Open Data API (OpenDOSM, BNM, data.gov.sg)
Pricing
from $0.50 / 1,000 records
Malaysia & Singapore Open Data API (OpenDOSM, BNM, data.gov.sg)
Official open data of Malaysia and Singapore as clean JSON: data.gov.my, OpenDOSM (CPI, GDP, labour), Bank Negara Malaysia (exchange rates, OPR) and data.gov.sg, with the licence attribution text on every record.
Pricing
from $0.50 / 1,000 records
Rating
0.0
(0)
Developer
Adrian LHH
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Malaysia & Singapore Open Data API (data.gov.my, OpenDOSM, BNM, data.gov.sg)
One Actor for the official open data of Malaysia and Singapore. Pull any dataset from data.gov.my, OpenDOSM (Department of Statistics Malaysia), Bank Negara Malaysia OpenAPI (exchange rates, OPR, interbank rates, Kijang Emas...) and data.gov.sg as clean JSON rows, each with the publisher, licence and the attribution text the licence requires. $0.50 per 1,000 records.
What does it do?
- Fetches datasets by id with filters, sorting and limits, across four official government APIs, in one run and one schema.
- Every row carries
source,datasetId,datasetName, therecorditself, dataset metadata (last updated, frequency, coverage, publisher) andlicence,licenceUrl,attribution,sourceUrl. - An
ATTRIBUTIONrecord in the key-value store lists the attribution notice for every dataset used, ready to paste into your app, report or dashboard. - Rate limits of each portal are respected automatically (data.gov.my: 4 requests/minute; data.gov.sg: 4 per 10 s without key).
- Two views: Records and Licence & attribution.
Input
| Field | Default | What it does |
|---|---|---|
datasets | required | List of { "source", "id", ... } (max 200). Shorthand strings such as "opendosm:cpi_headline" work too. |
maxRecordsPerDataset | 100 | Per dataset unless the item sets its own limit (max 100,000). |
flattenNested | true | Flatten nested objects (e.g. BNM rate tables) into a_b columns. |
excludePersonalDataColumns | true | Drop columns that look personal (names, IC/NRIC, e-mail, phone, address of persons); listed in droppedColumns. |
dataGovSgApiKey | – | Optional data.gov.sg API key (secret) for higher rate limits. |
Per source:
data.gov.myandopendosm:idfrom the catalogue (e.g.fuelprice,population_malaysia,cpi_headline,gdp_qtr_real,lfs_month); optionalfilter,ifilter,contains,icontains,range,sort(e.g.-date),date_start,date_end,include,exclude.bnm: one ofexchange-rate,opr,interest-rate,interest-volume,islamic-interbank-rate,interbank-swap,kijang-emas,usd-interbank-intraday-rate,kl-usd-reference-rate,fx-turn-over; optionalpath(date/2026-10-01,year/2026/month/9) andquery({"session":"1200","quote":"rm"}).data.gov.sg: dataset id liked_8b84c4ee58e3cfc0ece0d773c8ca6abc; optionalq,filtersobject,sort(e.g.month desc).
{"datasets": [{ "source": "opendosm", "id": "cpi_headline", "filter": "overall@division", "sort": "-date", "limit": 12 },{ "source": "bnm", "id": "exchange-rate" },{ "source": "data.gov.my", "id": "fuelprice", "sort": "-date", "limit": 10 },{ "source": "data.gov.sg", "id": "d_8b84c4ee58e3cfc0ece0d773c8ca6abc", "sort": "month desc", "limit": 50 }]}
Output
Example rows (shortened):
{"source": "bnm", "datasetId": "opr", "datasetName": "BNM opr","record": { "year": 2026, "date": "2026-09-03", "change_in_opr": 0, "new_opr_level": 2.75 },"lastUpdated": "2026-09-03 15:03:15", "publisher": "Bank Negara Malaysia","licence": "Terms of Use for BNM Datasets", "licenceUrl": "https://www.bnm.gov.my/terms-of-use-bnm-datasets","attribution": "Source: Bank Negara Malaysia. Data and information are subject to Terms of Use for BNM Datasets (https://www.bnm.gov.my/terms-of-use-bnm-datasets). Retrieved 2026-10-27.","sourceUrl": "https://api.bnm.gov.my/public/opr"}
{"source": "data.gov.sg", "datasetId": "d_8b84c4ee58e3cfc0ece0d773c8ca6abc","datasetName": "Resale flat prices based on registration date from Jan-2017 onwards","record": { "month": "2026-10", "town": "ANG MO KIO", "flat_type": "2 ROOM", "storey_range": "04 TO 06", "floor_area_sqm": "44.00", "resale_price": "290000" },"publisher": "Housing & Development Board", "licence": "Singapore Open Data Licence v1.0","attribution": "Contains information from Resale flat prices based on registration date from Jan-2017 onwards accessed on 2026-10-27 from data.gov.sg which is made available under the terms of the Singapore Open Data Licence version 1.0 (https://data.gov.sg/open-data-licence)."}
Datasets that fail are listed with error / errorCode (INVALID_DATASET_SPEC, DATASET_NOT_FOUND, NO_RECORDS, RATE_LIMITED, TIMEOUT, HTTP_5xx) and are not charged.
How much does it cost?
| Event | Price |
|---|---|
| Record | $0.0005 |
- 1,000 records ≈ $0.50. A daily BNM exchange-rate snapshot ≈ $0.01.
- Apify's tiny run-start fee applies (512 MB default). Set Maximum cost per run to cap spending.
- Large data.gov.my/OpenDOSM pulls are limited by the portal's 4 requests per minute (each request returns many rows).
Licences and attribution (please read)
The data is not ours. Each portal's licence applies to your use, and the attribution field gives you the required notice.
| Source | Licence | What you must do |
|---|---|---|
| data.gov.my / OpenDOSM | CC BY 4.0 | Credit the agency (e.g. "Source: Department of Statistics Malaysia, OpenDOSM"), link the licence and say the data was reformatted. |
| Bank Negara Malaysia | Terms of Use for BNM Datasets | State "Source: Bank Negara Malaysia" and "Data and information are subject to Terms of Use for BNM Datasets"; do not imply BNM endorsement; do not use BNM's logo. |
| data.gov.sg | Singapore Open Data Licence v1.0 | Show a notice with the dataset name, access date and licence link (the attribution text); do not imply endorsement. |
This Actor is independent and not affiliated with or endorsed by the Government of Malaysia, DOSM, Bank Negara Malaysia, GovTech Singapore or any agency. Records are passed through as published (numbers are not modified); the Actor only reshapes them into rows. BNM datasets that contain third-party bank rates (base-rate) or named entities (consumer-alert) are not offered.
Personal data
Government open data is aggregate, but some tables can contain names or contact details. By default, columns that look personal (names of persons, IC/NRIC, e-mail, phone, personal address) are dropped and listed in droppedColumns; contact e-mails in dataset metadata are never returned. Switch off excludePersonalDataColumns only if you have a lawful basis under PDPA.
Use it from code or an AI agent
curl -X POST "https://api.apify.com/v2/acts/thriving_adder~sea-open-data/run-sync-get-dataset-items" \-H "Authorization: Bearer YOUR_APIFY_TOKEN" -H 'Content-Type: application/json' \-d '{"datasets":["bnm:exchange-rate"]}'
Also available as a tool in Apify's MCP server.
Use cases
- Dashboards: Malaysian CPI, inflation, GDP, fuel prices or the ringgit exchange rate in Looker Studio, Power BI or Google Sheets on a schedule.
- Fintech and pricing apps: BNM exchange rates, OPR and interbank rates with the required attribution text included.
- Property research: Singapore HDB resale prices and other data.gov.sg datasets.
- AI agents: let an agent fetch official statistics instead of guessing numbers.
- Research and journalism with licence-correct attribution for every figure.
FAQ
Where do I find dataset ids? In the catalogue URL: data.gov.my/data-catalogue/fuelprice, open.dosm.gov.my/data-catalogue/cpi_headline, data.gov.sg/datasets/d_....
Problems or ideas (more countries: Indonesia, Thailand, Philippines)? Open an issue in the Issues tab. We answer within 2 business days.
Related Actors
By the same publisher, built on the same safe, pay-per-result design:
- SEC EDGAR Filings & XBRL Financials: US company filings and XBRL financials.
- Academic Paper Search (OpenAlex, Crossref, arXiv): research papers that use these statistics.
- Web Page to Markdown & llms.txt Generator: convert public reports and pages into Markdown.