Skip to content

🗓️ Khmer Lunar Calendar API

Khmer lunar dates, holidays and Khmer New Year times as JSON, for 1900 to 2100.

Building a calendar, a reminder app or a booking screen for Cambodian users? The Khmer Calendar API turns any Gregorian date from 1900 to 2100 into the Khmer lunar date (for example ១២រោច ខែចេត្រ), with the Buddhist Era (ព.ស.) year, the animal year, the sak, the Buddhist holy day (ថ្ងៃសីល) flag and the holidays on that day, in Khmer and English.

It uses the same calculation as the ToolOrca Khmer calendar, ported from the Kode4U Khmer Calendar app and checked day by day against it. Holiday names follow the official calendar; check government announcements for last-minute changes.

Base URL https://toolorca.com/api/v1 No key · CORS open · JSON · conventions and limits

Endpoints

GET /api/v1/khmer-calendar/date #

The Khmer lunar date, years and holidays for one day.

Parameter In Type Description
date query string Gregorian date YYYY-MM-DD (1900–2100). Default: today in Cambodia.
curl 'https://toolorca.com/api/v1/khmer-calendar/date?date=2026-04-14'
GET /khmer-calendar/date?date=2026-04-14
Example response
{
  "date": "2026-04-14",
  "weekday": 2,
  "weekdayEn": "Tuesday",
  "weekdayKm": "អង្គារ",
  "lunar": {
    "day": 12,
    "phase": "waning",
    "phaseKm": "រោច",
    "dayKm": "១២រោច",
    "month": 5,
    "monthEn": "Chaet",
    "monthKm": "ចេត្រ",
    "leapMonth": false
  },
  "beYear": 2569,
  "animal": {
    "number": 7,
    "en": "Horse",
    "km": "មមី"
  },
  "sak": {
    "number": 8,
    "en": "AthaSak",
    "km": "អដ្ឋ​ស័ក"
  },
  "sila": false,
  "textKm": "ថ្ងៃអង្គារ ១២រោច ខែចេត្រ ឆ្នាំមមី អដ្ឋ​ស័ក ព.ស.២៥៦៩",
  "textEn": "Tuesday, 12 Roch (waning), month of Chaet, Year of the Horse, AthaSak, Buddhist Era 2569",
  "holidays": [
    {
      "date": "2026-04-14",
      "nameEn": "Khmer New Year",
      "nameKm": "ពិធីបុណ្យចូលឆ្នាំថ្មី ប្រពៃណីជាតិ (មហាសង្ក្រាន្ត) ម៉ោង ១០ៈ៤៨ ព្រឹក",
      "dayOff": true,
      "kind": "newyear"
    }
  ]
}

GET /api/v1/khmer-calendar/month #

Every day of a Gregorian month with its lunar date and holidays: enough to draw a month view.

Parameter In Type Description
year query integer 1900–2100. Default: this year.
month query integer 1–12. Default: this month.
curl 'https://toolorca.com/api/v1/khmer-calendar/month?year=2026&month=4'
GET /khmer-calendar/month?year=2026&month=4
Example response
{
  "year": 2026,
  "month": 4,
  "monthEn": "April",
  "monthKm": "មេសា",
  "days": [
    {
      "date": "2026-04-01",
      "weekday": 3,
      "weekdayEn": "Wednesday",
      "weekdayKm": "ពុធ",
      "lunar": {
        "day": 14,
        "phase": "waxing",
        "phaseKm": "កើត",
        "dayKm": "១៤កើត",
        "month": 5,
        "monthEn": "Chaet",
        "monthKm": "ចេត្រ",
        "leapMonth": false
      },
      "beYear": 2569,
      "animal": {
        "number": 6,
        "en": "Snake",
        "km": "ម្សាញ់"
      },
      "sak": {
        "number": 7,
        "en": "SabaSak",
        "km": "សប្ត​ស័ក"
      },
      "sila": false,
      "textKm": "ថ្ងៃពុធ ១៤កើត ខែចេត្រ ឆ្នាំម្សាញ់ សប្ត​ស័ក ព.ស.២៥៦៩",
      "textEn": "Wednesday, 14 Kert (waxing), month of Chaet, Year of the Snake, SabaSak, Buddhist Era 2569",
      "holidays": []
    },
    {
      "date": "2026-04-02",
      "weekday": 4,
      "weekdayEn": "Thursday",
      "weekdayKm": "ព្រហស្បតិ៍",
      "lunar": {
        "day": 15,
        "phase": "waxing",
        "phaseKm": "កើត",
        "dayKm": "១៥កើត",
        "month": 5,
        "monthEn": "Chaet",
        "monthKm": "ចេត្រ",
        "leapMonth": false
      },
      "beYear": 2569,
      "animal": {
        "number": 6,
        "en": "Snake",
        "km": "ម្សាញ់"
      },
      "sak": {
        "number": 7,
        "en": "SabaSak",
        "km": "សប្ត​ស័ក"
      },
      "sila": true,
      "textKm": "ថ្ងៃព្រហស្បតិ៍ ១៥កើត ខែចេត្រ ឆ្នាំម្សាញ់ សប្ត​ស័ក ព.ស.២៥៦៩",
      "textEn": "Thursday, 15 Kert (waxing), month of Chaet, Year of the Snake, SabaSak, Buddhist Era 2569",
      "holidays": []
    },
    {
      "date": "2026-04-03",
      "weekday": 5,
      "weekdayEn": "Friday",
      "weekdayKm": "សុក្រ",
      "lunar": {
        "day": 1,
        "phase": "waning",
        "phaseKm": "រោច",
        "dayKm": "១រោច",
        "month": 5,
        "monthEn": "Chaet",
        "monthKm": "ចេត្រ",
        "leapMonth": false
      },
      "beYear": 2569,
      "animal": {
        "number": 6,
        "en": "Snake",
        "km": "ម្សាញ់"
      },
      "sak": {
        "number": 7,
        "en": "SabaSak",
        "km": "សប្ត​ស័ក"
      },
      "sila": false,
      "textKm": "ថ្ងៃសុក្រ ១រោច ខែចេត្រ ឆ្នាំម្សាញ់ សប្ត​ស័ក ព.ស.២៥៦៩",
      "textEn": "Friday, 1 Roch (waning), month of Chaet, Year of the Snake, SabaSak, Buddhist Era 2569",
      "holidays": []
    },
    "… 27 more"
  ]
}

GET /api/v1/khmer-calendar/holidays #

All Cambodian public holidays and observance days of a year, sorted by date.

kind is solar (fixed date), lunar (moves with the moon), newyear, chinese or other. dayOff marks official days off.

Parameter In Type Description
year query integer 1900–2100. Default: this year.
dayOff query boolean true to return only official days off.
kind query string Only this kind: solar, lunar, newyear, chinese or other.
curl 'https://toolorca.com/api/v1/khmer-calendar/holidays?year=2026&dayOff=true'
GET /khmer-calendar/holidays?year=2026&dayOff=true
Example response
{
  "data": [
    {
      "date": "2026-01-01",
      "nameEn": "International New Year Day",
      "nameKm": "ទិវាចូលឆ្នាំសកល",
      "dayOff": true,
      "kind": "solar"
    },
    {
      "date": "2026-01-07",
      "nameEn": "Victory over Genocide Day 47",
      "nameKm": "ជម្នះលើរបបប្រល័យពូជសាសន៍ ខួបទី៤៧",
      "dayOff": true,
      "kind": "solar"
    },
    {
      "date": "2026-03-08",
      "nameEn": "International Women's Day",
      "nameKm": "ទិវានារីអន្តរជាតិ",
      "dayOff": true,
      "kind": "solar"
    },
    "… 19 more"
  ],
  "meta": {
    "total": 22,
    "limit": 22,
    "skip": 0,
    "page": 1,
    "pages": 1,
    "year": 2026
  }
}

GET /api/v1/khmer-calendar/new-year #

Khmer New Year (Choul Chnam Thmey): the exact time the new year starts, the angel and the three festival days.

Available for the years in the source table (2016–2030). startsAt is UTC; time is Cambodia time (UTC+7).

Parameter In Type Description
year query integer Default: this year.
curl 'https://toolorca.com/api/v1/khmer-calendar/new-year?year=2026'
GET /khmer-calendar/new-year?year=2026
Example response
{
  "year": 2026,
  "date": "2026-04-14",
  "time": "10:48",
  "timeKm": "១០ៈ៤៨ ព្រឹក",
  "startsAt": "2026-04-14T03:48:00.000Z",
  "weekdayEn": "Tuesday",
  "angelEn": "Reaksa Tevy",
  "angelKm": "រាគ្យសាទេវី",
  "animalEn": "Horse",
  "animalKm": "មមី",
  "days": [
    {
      "date": "2026-04-14",
      "nameEn": "Moha Songkran (new angel arrives)",
      "nameKm": "មហាសង្ក្រាន្ត"
    },
    {
      "date": "2026-04-15",
      "nameEn": "Virak Wanabat (day of offerings)",
      "nameKm": "វិរៈវ័នបត"
    },
    {
      "date": "2026-04-16",
      "nameEn": "Leung Sak (new era day)",
      "nameKm": "វារៈឡើងស័ក"
    }
  ]
}

Reading the lunar fields

lunar.day is 1–15 and lunar.phase is waxing (កើត) or waning (រោច). lunar.month is 1–14 in the order មិគសិរ, បុស្ស, មាឃ, ផល្គុន, ចេត្រ, ពិសាខ, ជេស្ឋ, អាសាឍ, បឋមាសាឍ, ទុតិយាសាឍ, ស្រាពណ៌, ភទ្របទ, អស្សុជ, កក្ដិក; months 9 and 10 only appear in leap-month years (leapMonth: true).

The Buddhist Era year (beYear) and the animal year change at Khmer New Year in April, and the sak changes on the Leung Sak day, so dates in early April still belong to the previous Khmer year. textKm and textEn give the whole date as one ready-to-show line.

Frequently asked questions

Which years are supported?

1900 to 2100 for lunar dates and holidays. Khmer New Year times are available for 2016–2030.

What is a sila day?

ថ្ងៃសីល is a Buddhist holy day on the 8th and 15th waxing day and the 8th and last waning day. The sila field is true on those days.

Is it accurate?

It follows the traditional calculation used by the Kode4U Khmer Calendar app. Official holiday changes announced late by the government are not included automatically.

Do I need an API key?

No. Call it directly from your app; CORS is open for browser apps too.

More free APIs