
Singapore Carpark Availability & Metadata (Live)
hipersoft/sg-carpark-scraper
Live HDB carpark availability joined with carpark metadata: available/total lots, occupancy %, address, coordinates, parking type, free/night parking. Nearest-available search and stale-data flag. No setup.
Total users
1Monthly users
1Total runs
96Per carpark returned
$0.0015Last rebuilt
Oct 28, 2026Overview
Live parking availability for Singapore's ~2,000 HDB carparks — available/total lots and occupancy % — joined with the official carpark metadata (address, coordinates, parking type, free/night parking, decks, gantry height). Includes nearest-available search and a stale-data flag. Clean JSON, CSV or Excel. Built on Singapore's official open data, no key, no login.
Great for parking & mobility apps, delivery/fleet routing, and smart-city analytics — run it on a schedule to build an occupancy history.

What you get
- 🅿️ Live lots —
availableLots,totalLots,occupancyPct, per-lot-type breakdown, and the carpark's ownupdateDatetime - 📍 Location — address + WGS84
latitude/longitude(converted from SVY21) for mapping & routing - 🏢 Metadata — car-park type, parking system, short-term/free/night parking, decks, gantry height, basement
- 🎯 Nearest-available — pass a point + radius and get carparks sorted nearest-first, filtered by minimum free lots
- ⏱️ Freshness —
isStaleflags carparks whose reading lags the feed - 🧾 Provenance — stable
id,sourceUrl,collectedAt,feedTimestamp
Example input
Find carparks with 20+ free lots within 1km of a point:
{ "latitude": "1.3521", "longitude": "103.8198", "radiusKm": 1, "minAvailableLots": 20 }
Output

{
"id": "sgcp-HE12",
"carParkNumber": "HE12",
"address": "BLK 201-210 HENDERSON CRESCENT",
"latitude": 1.2874,
"longitude": 103.8199,
"carParkType": "SURFACE CAR PARK",
"parkingSystem": "ELECTRONIC PARKING",
"freeParking": "SUN & PH FR 7AM-10.30PM",
"nightParking": true,
"totalLots": 105,
"availableLots": 30,
"occupancyPct": 71.4,
"lotDetails": [{ "lotType": "C", "total": 105, "available": 30 }],
"updateDatetime": "2026-07-30T15:09:26",
"isStale": false,
"sourceUrl": "https://data.gov.sg/datasets/d_ca933a644e55d34fe21f28b8052fac63/view",
"collectedAt": "2026-07-30T07:10:00.000Z"
}
With a radius search each row also includes distanceKm.
Output schema
| Field | Type | Description |
|---|---|---|
id |
string | Stable unique identifier for the carpark record. |
carParkNumber |
string | Official HDB carpark number/code. |
address |
string | Street address of the carpark. |
latitude |
number | WGS84 latitude of the carpark. |
longitude |
number | WGS84 longitude of the carpark. |
carParkType |
string | Type of carpark (e.g. surface, multi-storey). |
parkingSystem |
string | Parking system in use (e.g. electronic parking). |
shortTermParking |
string | Short-term parking hours/policy. |
freeParking |
boolean | Whether free parking is offered during certain hours. |
nightParking |
boolean | Whether night parking is available. |
carParkDecks |
integer | Number of parking decks. |
gantryHeight |
number | Height clearance at the gantry, in metres. |
basement |
string | Whether the carpark has basement parking. |
totalLots |
integer | Total number of parking lots. |
availableLots |
integer | Number of currently available lots. |
occupancyPct |
integer | Percentage of lots currently occupied. |
lotDetails |
array | Per-lot-type breakdown of total and available lots. |
updateDatetime |
string (ISO date) | When the carpark last reported its availability. |
isStale |
boolean | Whether the reading lags the live feed. |
feedTimestamp |
string (ISO date) | Timestamp of the source availability feed. |
sourceUrl |
string (URL) | Link to the source open dataset. |
collectedAt |
string (ISO date) | When this Actor collected the record. |
distanceKm |
number | Distance from the search point, in km (radius search only). |
Input fields
| Field | Description |
|---|---|
carParkNumbers |
Specific carparks, or empty for all. |
latitude / longitude / radiusKm |
Nearest-available search around a point. |
minAvailableLots |
Only carparks with at least this many free lots. |
maxItems |
Max carparks (0 = all). |
FAQ
How live is it?
The availability feed updates roughly each minute; each carpark also carries its own updateDatetime, and isStale flags laggy readings.
Where do coordinates come from? The metadata dataset stores SVY21 coordinates; the Actor converts them to WGS84 latitude/longitude so you can map and do radius search.
Can I build an occupancy history? Yes — schedule the Actor and each run appends a timestamped snapshot.
How does billing work? A tiny per-run fetch charge plus pay per carpark returned.
Can I integrate this with other tools? The Singapore Carpark Availability Scraper can be connected with almost any cloud service or web app thanks to integrations on the Apify platform. It works with Make, Zapier, Slack, Airbyte, GitHub, Google Drive and many more, plus the Apify API, JavaScript/Python clients and MCP. Or use webhooks to trigger an action whenever a run finishes.
Notes
Original clean-room implementation using Singapore's official HDB open data (data.gov.sg), reused under the Singapore Open Data Licence. Not affiliated with or endorsed by HDB or the Singapore Government.
Input
| Field | Type | Description |
|---|---|---|
carParkNumbersCarpark numbers | array | Specific HDB carpark numbers (e.g. HE12, ACB). Empty = all ~2,000. |
latitudeCenter latitude | string | For nearest-available search — center latitude (e.g. 1.3521). |
longitudeCenter longitude | string | For nearest-available search — center longitude (e.g. 103.8198). |
radiusKmRadius (km) | integer | With center lat/lng, only carparks within this many km (sorted nearest first). 0 = off. Default: 0 |
minAvailableLotsMin available lots | integer | Only carparks with at least this many free lots. Default: 0 |
maxItemsMax carparks | integer | Maximum carparks to return. 0 = all. Default: 0 |
API
curl -X POST "https://api.apify.com/v2/acts/hipersoft~sg-carpark-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"carParkNumbers": [
"HE12",
"ACB"
]
}'from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("hipersoft/sg-carpark-scraper").call(run_input={
"carParkNumbers": [
"HE12",
"ACB"
]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('hipersoft/sg-carpark-scraper').call({
"carParkNumbers": [
"HE12",
"ACB"
]
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Pricing
| Event | Price | Paid plans from |
|---|---|---|
| Carpark returned One carpark snapshot returned. | $0.0015 | $0.0008 |
| Dataset fetch One fetch of the live feed + metadata join. | $0.005 | $0.005 |
You pay only for what the run returns. Set a maximum cost per run and it stops cleanly at that limit.
Related scrapers
CNN Fear & Greed Index Scraper
Scrape the CNN Fear & Greed Index: current market-sentiment score and rating, a full historical timeline, and all seven component indicators. Clean structured JSON, CSV or Excel for trading signals, backtesting, dashboards and alerting.
547 runs · 6 users · $0.003 / item scrapedDivar Scraper
Scrape classified ads from Divar, Iran's largest marketplace: title, price (Toman), category, city, district, images and the listing URL. Search any Iranian city with an optional keyword and export one clean row per ad as JSON, CSV or Excel. For market research, price tracking and n8n.
224 runs · 22 users · $0.003 / listing scrapedAirbnb Scraper
Search Airbnb by location and scrape listings: name, property type, price, rating, reviews, coordinates, photos, badges and link. For short-term rental, pricing and market research.
122 runs · 2 users · $0.005 / listing scrapedSingapore HDB Property Information Scraper
Export master data for every HDB block in Singapore (~13,300 blocks): address, town, year completed, max floor, total units, unit mix by flat type (sold & rental) and amenities (market/hawker, carpark, commercial, pavilion). Filter by town, street, year. Public open data, no setup.
113 runs · 1 users · $0.002 / block scrapedPropertyGuru Singapore Scraper
Scrape PropertyGuru Singapore property listings: price, beds, baths, size, address, property type, agent and URL. For property research and lead generation.
106 runs · 3 users · $0.004 / listing scrapedEdgeProp Singapore Property Scraper
Scrape EdgeProp Singapore property listings for sale and rent: price, address, beds, baths, size, PSF and URL.
105 runs · 1 users · $0.004 / listing scrapedSend the site and the fields. We build it and you get it first.