API Documentation

COEkaki REST API v1 — access Singapore COE data programmatically.

Authentication

All endpoints support both authenticated and public access. Authenticated requests receive higher rate limits.

Pass your API key via the X-API-Key header. Never send keys as query parameters.

Example Request
curl -H "X-API-Key: your_api_key_here" \
     https://coekaki.com/api/v1/results/latest

Rate Limits

Access Level Rate Limit
Public (no API key) 100 requests/minute
Authenticated (with API key) 1,000 requests/minute

Rate limit status is returned via X-RateLimit-* response headers.

Response Format

All responses return JSON with a consistent structure:

{
  "data": [ ... ],
  "meta": {
    "total": 50,
    "page": 1,
    "per_page": 50,
    "last_page": 1
  }
}

Every response includes an X-API-Version: v1 header.

Error Codes

HTTP Status Code Description
401 INVALID_API_KEY The provided API key is not valid.
404 NOT_FOUND The requested resource does not exist.
422 VALIDATION_ERROR Request parameters failed validation.
429 RATE_LIMITED Too many requests. Slow down and retry.

COE Results

GET /api/v1/results

List COE bidding results with pagination and optional filters.

Parameters

ParamTypeDescription
categorystringFilter by category: A, B, C, D, or E
fromdateStart date (YYYY-MM-DD)
todateEnd date (YYYY-MM-DD)
pageintegerPage number (default: 1)
per_pageintegerResults per page (max: 200, default: 50)
Example
GET /api/v1/results?category=A&from=2025-01-01&to=2025-12-31
GET /api/v1/results/latest

Get the most recent bidding round results for all categories.

Response
{
  "data": [
    {
      "id": 1,
      "bidding_date": "2026-04-09",
      "bidding_round": 1,
      "category": "A",
      "quota_premium": 98000,
      "pqp": 95000,
      "bids_submitted": 2100,
      "bids_successful": 1850
    }
  ],
  "meta": { "total": 5, "bidding_date": "2026-04-09" }
}
GET /api/v1/results/{id}

Retrieve a single COE result by its numeric ID. Returns 404 if not found.

Bidding Schedule

GET /api/v1/schedule

List all bidding schedules, ordered by most recent first.

GET /api/v1/schedule/upcoming

Upcoming bidding rounds that have not yet started.

GET /api/v1/schedule/current

Current live bidding round, if any. Returns data: null when no exercise is live.

Response (no live round)
{
  "data": null,
  "meta": {
    "is_live": false,
    "message": "No bidding exercise is currently live."
  }
}

Deregistrations

GET /api/v1/deregistrations

List vehicle deregistration data with filters and pagination.

Parameters

ParamTypeDescription
categorystringFilter by category: A, B, C, D, or E
fromdateStart date (YYYY-MM-DD)
todateEnd date (YYYY-MM-DD)
per_pageintegerResults per page (max: 200, default: 50)
GET /api/v1/deregistrations/latest

Latest month's deregistration data for all categories (or filter by category).

COE Quotas

GET /api/v1/quotas

List quarterly COE quota allocations with pagination and filters.

Parameters

ParamTypeDescription
categorystringFilter by category: A, B, C, D, or E
fromdateStart date for quarter_start (YYYY-MM-DD)
todateEnd date for quarter_start (YYYY-MM-DD)
per_pageintegerResults per page (max: 200, default: 50)
GET /api/v1/quotas/latest

Current quarter's COE quota allocations. Falls back to the most recent quarter if current data is not yet available.

PQP History

GET /api/v1/pqp

PQP (Prevailing Quota Premium) history with premium-vs-PQP spread for each result.

PQP and its spread are null when historical data is insufficient or the category is E. Category E vehicles renew under their corresponding vehicle category A–D.

Parameters

ParamTypeDescription
categorystringFilter by category: A, B, C, D, or E
fromdateStart date (YYYY-MM-DD)
todateEnd date (YYYY-MM-DD)
per_pageintegerResults per page (max: 200, default: 50)
Response
{
  "data": [
    {
      "id": 1,
      "bidding_date": "2026-04-09",
      "bidding_round": 1,
      "category": "A",
      "pqp": 95000,
      "quota_premium": 98000,
      "premium_vs_pqp": 3000
    }
  ],
  "meta": { "total": 50, "page": 1, "per_page": 50, "last_page": 1 }
}

Keyboard shortcuts

Search
Ctrl + /
Show shortcuts
Ctrl + Shift + K
Home / Results / Trends / Calculators
Ctrl + Alt + H / R / T / C

Quick tour

The latest results show COE prices for all five categories. Open a result to see the full bidding details.

Results Archive

Use the trend charts to explore price history, and the calculators to estimate your vehicle costs.

Trends

Welcome back!