Singapore COE Prices & Bidding Results Scraper avatar

Singapore COE Prices & Bidding Results Scraper

Pricing

from $6.15 / 1,000 results

Go to Apify Store
Singapore COE Prices & Bidding Results Scraper

Singapore COE Prices & Bidding Results Scraper

Scrape Singapore COE (Certificate of Entitlement) prices and bidding results from the official data.gov.sg open data portal. Get bidding month, vehicle class, quota, bids received and the winning premium. Export to JSON, CSV or Excel.

Pricing

from $6.15 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Singapore COE Prices & Bidding Results Scraper

Singapore COE Prices & Bidding Results Scraper

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

{
"month": "2026-08",
"biddingNo": "1",
"vehicleClass": "Category E",
"quota": 254,
"bidsSuccess": 208,
"bidsReceived": 443,
"premium": 131000,
"currency": "SGD",
"year": 2026,
"subscriptionRate": 1.74,
"successRate": 0.47,
"unsuccessfulBids": 235,
"source": "Singapore COE bidding results (data.gov.sg)",
"observedAt": "2026-08-10T14:17:25.961Z"
}

The most complete Singapore COE bidding results scraper available. It returns every field the official COE bidding feed exposes for each exercise, plus derived demand analytics (subscriptionRate, successRate, unsuccessfulBids, year) that raw-feed dumps do not provide, and gives you four filters to target exactly the records you need.

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

Apify Coverage Output Billing

Table of contents

What it does

The actor reads the official Singapore Certificate of Entitlement (COE) bidding results published on the government open-data portal (data.gov.sg), applies the filters you pass as input, paginates through matching exercises, and writes one normalized record per bidding exercise and vehicle category to the run's dataset. On top of the raw feed (quota, premium, bids received and successful) it computes the subscription rate, the success rate, the number of unsuccessful bids and the bidding year, so you can rank demand and price trends without extra parsing. Premiums are in Singapore dollars (currency is always SGD).

The portal rate-limits anonymous access, so large pulls are paced automatically. Data covers the full published Singapore COE bidding history.

Quickstart

Open the actor, paste this into the input, and press Run. It returns the 10 most recent bidding results.

{
"maxRecords": 10,
"sortByNewest": true
}

Leave the filters empty to pull the full bidding history. Every input field is optional; with an empty input the actor returns the most recent exercises (default maxRecords is 10).

Input reference

FieldTypeRequiredDefaultDescription
maxRecordsintegerno10Maximum number of COE bidding records to collect. The portal rate-limits anonymous access, so very large pulls are paced automatically.
vehicleClassstringno(all)Keep only one COE category. Exact match on the vehicle class, for example Category A (small cars up to 1600cc / 130bhp), Category B (larger cars), Category C (goods vehicles and buses), Category D (motorcycles) or Category E (open). Leave empty for all categories.
monthstringno(all)Keep only one bidding month. Exact match in YYYY-MM format, for example 2024-01. Leave empty for the full history.
searchQuerystringno(empty)Free-text filter across all fields, for example a month or a category name. Leave empty to pull the full bidding history newest first.
sortByNewestbooleannotrueReturn the most recent bidding exercises first. Turn off to read in the source order (oldest first).

Filters combine with logical AND. If you pass no filters, the actor returns the full bidding history newest first, up to maxRecords.

Output reference

One dataset item per bidding exercise and vehicle category. Types: string, integer, number, or null when the source value is absent.

FieldTypeDescription
monthstringBidding month in YYYY-MM format.
biddingNostringBidding exercise number within the month (1 = first exercise, 2 = second).
vehicleClassstringCOE category, for example Category A to Category E.
quotaintegerNumber of COE certificates available in the exercise.
bidsSuccessintegerNumber of successful bids.
bidsReceivedintegerTotal number of bids received.
premiumintegerQuota premium (winning COE price) in Singapore dollars.
currencystringCurrency of premium. Always SGD.
yearintegerFour-digit bidding year, or null if the month is malformed.
subscriptionRatenumberbidsReceived / quota, rounded to two decimals. Above 1 means oversubscribed. null if quota is zero or unknown.
successRatenumberbidsSuccess / bidsReceived, rounded to two decimals. null if no bids were received.
unsuccessfulBidsintegerbidsReceived - bidsSuccess (never negative), or null if unknown.
sourcestringData source label. Always the COE bidding results via data.gov.sg.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringPresent only on a failed run: a single item with a populated error field is written instead of results.

Example output record

Real record from a live run (input {"maxRecords": 10, "sortByNewest": true}):

{
"month": "2026-08",
"biddingNo": "1",
"vehicleClass": "Category E",
"quota": 254,
"bidsSuccess": 208,
"bidsReceived": 443,
"premium": 131000,
"currency": "SGD",
"year": 2026,
"subscriptionRate": 1.74,
"successRate": 0.47,
"unsuccessfulBids": 235,
"source": "Singapore COE bidding results (data.gov.sg)",
"observedAt": "2026-08-10T14:17:25.961Z"
}

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-coe-prices-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"vehicleClass":"Category A","maxRecords":50}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~singapore-coe-prices-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"month":"2024-01","maxRecords":10}'

Apify CLI:

apify call scrapers_lat/singapore-coe-prices-scraper \
--input '{"vehicleClass":"Category B"}'

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 record returned (result event). See the pricing tab for the current per-result price.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and 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 maxRecords.
  • Source rate limit. The data.gov.sg portal throttles anonymous access, so large pulls are paced automatically (about one page every 10 seconds).

FAQ and troubleshooting

A run returned 0 records. Why? The filter matched nothing. Check the exact vehicleClass or month value, or leave the filters empty to pull the full history. Zero-result runs are not charged.

How do I get the price history for one category? Set vehicleClass to the exact category name, for example Category A, and set maxRecords high to pull its full history.

What is subscriptionRate? Total bids received divided by the quota. A value above 1 means the exercise was oversubscribed (more bidders than certificates).

Is the premium in Singapore dollars? Yes. premium is the quota premium in SGD, and the currency field is always SGD.

Is this an official LTA or COE tool? No. This actor is independent and has no affiliation with the Land Transport Authority. It reads only data that is publicly available through the official government open-data portal (data.gov.sg).

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for 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 the Land Transport Authority (LTA). Accesses only publicly available data from the official government open-data portal (data.gov.sg).