publicsgdata
Python client for Singapore government open data: data.gov.sg today, LTA and OneMap later.
Install
uv pip install publicsgdata
Quickstart
from publicsgdata import DataGovSGClient
with DataGovSGClient() as client: # optional: api_key="..." or DATA_GOV_SG_API_KEY
catalog = client.collections.list()
print(f"{len(catalog.collections)} collections")
print(catalog.collections[0].name)
# HDB resale prices (swap in any dataset ID)
rows = client.datasets.list_rows("d_8b84c4ee58e3cfc0ece0d773c8ca6abc", limit=10)
for row in rows.rows:
print(row.model_dump())
pm25 = client.realtime.pm25.get()
print(pm25.items[0].readings)
Download full dataset
from publicsgdata import DataGovSGClient
with DataGovSGClient() as client:
path = client.datasets.download_file(
"d_8b84c4ee58e3cfc0ece0d773c8ca6abc",
"hdb-resale.csv",
)
print(path)
Async
from publicsgdata import AsyncDataGovSGClient
async with AsyncDataGovSGClient() as client:
rows = await client.datasets.list_rows("d_8b84c4ee58e3cfc0ece0d773c8ca6abc", limit=5)
print(len(rows.rows))
Custom HTTP client
Pass your own httpx client if you need custom timeouts, proxies, etc.
import httpx
from publicsgdata import DataGovSGClient
with httpx.Client(timeout=30.0) as http:
client = DataGovSGClient(http_client=http)
print(len(client.collections.list().collections))
Authentication
You can call the API without a key while experimenting. For regular use, get a key from data.gov.sg and set:
export DATA_GOV_SG_API_KEY="your-key"
Environment variables
| Variable | Required | Description |
|---|---|---|
DATA_GOV_SG_API_KEY |
No | data.gov.sg API key (x-api-key header) |
Roadmap
- v0.1.0:
DataGovSGClient - v0.2.0:
LTAClient(LTA DataMall) - v0.3.0:
OneMapClient
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
publicsgdata-0.2.2.tar.gz
(12.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file publicsgdata-0.2.2.tar.gz.
File metadata
- Download URL: publicsgdata-0.2.2.tar.gz
- Upload date:
- Size: 12.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c9a3d2b93d2271dbaf5a2b3ad5018fa13b09c412a6cb497a3f13153ca57ade3
|
|
| MD5 |
2e161402c68ab3eb2f0f3d374297da83
|
|
| BLAKE2b-256 |
996508ba5d31ac12cab6842072f4ba06c98343921545a52da763af6a7f33b747
|
File details
Details for the file publicsgdata-0.2.2-py3-none-any.whl.
File metadata
- Download URL: publicsgdata-0.2.2-py3-none-any.whl
- Upload date:
- Size: 15.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab92150c7e5d88ab9f4db3544a806e7eb236090fbb5bd5630b91b636efecd0ef
|
|
| MD5 |
100211053a556e12f0a59620bca3a9cc
|
|
| BLAKE2b-256 |
a968128ddb1faa865becf2176aa5c30fd0cbd4a9ccd09fa412d5ab7b0235e0e0
|