🎯 Thai Holiday Data API
🗓️ ข้อมูลวันหยุดไทย
Welcome to Thai Holiday Data API, version 1.0, a data service developed by iApp Technology Co., Ltd. Our API provides comprehensive and up-to-date Thai holiday information from multiple authoritative sources. Get accurate holiday data for financial institutions and public holidays in Thailand with fast response times and reliable service.
Try Demo
Example Queries (Click to try)
Demo key is limited to 10 requests per day per IP
Click here to get your API key
Add query parameters (e.g., ?holiday_type=public&days_after=30)
Getting Started
-
Prerequisites
- An API key from iApp Technology
- HTTP client or programming language of your choice
- Understanding of REST API principles
-
Quick Start
- Fast response times (typically under 500ms)
- Real-time holiday data updates
- Multiple holiday types supported
- Flexible date range queries
-
Key Features
- Financial Holidays: Thai Financial Institutions' Holidays from Bank of Thailand
- Public Holidays: Thai Public Holidays from The Secretariat of Cabinet
- Combined Data: Access to both types in a single request
- Flexible date range queries (days before/after, specific years, custom ranges)
- Thai and English holiday names
- Weekday information in both languages
-
Data Freshness
- Our Thai team regularly monitors and updates holiday data immediately when new holidays are announced in Thailand
- Data is cached for optimal performance while ensuring accuracy
Please visit API Portal to view your existing API key or request a new one.
Example
Get Current Year Public Holidays
Request:
curl -X GET "https://api.iapp.co.th/data/thai-holidays/holidays?holiday_type=public&days_after=365" \
-H "apikey: YOUR_API_KEY"
Response:
{
"holidays": [
{
"date": "2025-07-10",
"date_thai": null,
"weekday": "Thursday",
"weekday_thai": null,
"name": "วันอาสาฬหบูชา",
"name_thai": null,
"type": "public"
},
{
"date": "2025-07-28",
"date_thai": null,
"weekday": "Monday",
"weekday_thai": null,
"name": "วันเฉลิมพระชนมพรรษา สมเด็จพระเจ้าอยู่หัวมหาวชิราลงกรณ บดินทรเทพยวรางกูร",
"name_thai": null,
"type": "public"
}
],
"total_count": 25,
"date_range": {
"start_date": "2025-06-08",
"end_date": "2026-06-08",
"query_type": "range",
"reference_date": "2025-06-08"
},
"holiday_types": ["public"],
"cached_at": "2025-06-08T10:29:33.740056"
}
Get Holidays for Specific Year
Request:
curl -X GET "https://api.iapp.co.th/data/thai-holidays/holidays/year/2025?holiday_type=both" \
-H "apikey: YOUR_API_KEY"
Get Holidays in Date Range
Request:
curl -X GET "https://api.iapp.co.th/data/thai-holidays/holidays/range?start_date=2025-01-01&end_date=2025-12-31&holiday_type=financial" \
-H "apikey: YOUR_API_KEY"
Features & Capabilities
Holiday Types
Our API supports three types of holiday data:
Public Holidays
- Source: The Secretariat of Cabinet (Maintained by iApp Technology Team)
- Description: วันหยุดนักขัตฤกษ์ (Thai Public Holidays)
- Includes: National holidays, royal ceremonies, religious observances
Financial Holidays
- Source: Bank of Thailand (Maintained by iApp Technology Team)
- Description: วันหยุดตามประเพณีของสถาบันการเงิน (Thai Financial Institutions' Holidays)
- Includes: Banking holidays, financial sector closures
Both Types
- Source: Combined from both sources
- Description: All holiday types in a single response
- Use Case: Comprehensive holiday planning
Query Options
- Date Ranges: Query by days before/after today, specific years, or custom date ranges
- Flexible Parameters: Multiple ways to specify the time period you need
- Type Filtering: Get only the holiday types relevant to your use case
Data Quality
- Real-time Updates: Holiday data is updated immediately when announced
- Authoritative Sources: Data sourced from official Thai government APIs and verified calendars
- Bilingual Support: Holiday names and weekdays available in Thai and English where applicable
API Reference
Base URL
https://api.iapp.co.th/data/thai-holidays
Authentication
All requests require an API key in the header:
apikey: YOUR_API_KEY
Endpoints
Get Thai Holidays
GET /holidays
Returns Thai holidays within a specified time period.
Query Parameters
Parameter | Type | Required | Default | Description |
---|---|---|---|---|
days_before | integer | No | 0 | Number of days before today (max: 1825) |
days_after | integer | No | 365 | Number of days after today (max: 1825) |
holiday_type | string | No | "public" | Type: "financial", "public", or "both" |
year | integer | No | null | Specific year (2020-2030, overrides days_before/after) |
Get Holidays by Year
GET /holidays/year/\{year\}
Returns all holidays for a specific year.
Path Parameters
Parameter | Type | Required | Description |
---|---|---|---|
year | integer | Yes | Year to query (2020-2030) |
Query Parameters
Parameter | Type | Required | Default | Description |
---|---|---|---|---|
holiday_type | string | No | "public" | Type: "financial", "public", or "both" |
Get Holidays by Date Range
GET /holidays/range
Returns holidays within a specific date range.
Query Parameters
Parameter | Type | Required | Description |
---|---|---|---|
start_date | string (date) | Yes | Start date (YYYY-MM-DD format) |
end_date | string (date) | Yes | End date (YYYY-MM-DD format) |
holiday_type | string | No | Type: "financial", "public", or "both" |
Get Holiday Types
GET /holidays/types
Returns information about available holiday types.
Response Format
Holiday Object
{
"date": "2025-07-10",
"date_thai": null,
"weekday": "Thursday",
"weekday_thai": null,
"name": "วันอาสาฬหบูชา",
"name_thai": null,
"type": "public"
}
Response Fields
Field | Type | Description |
---|---|---|
date | string (date) | Holiday date in YYYY-MM-DD format |
date_thai | string/null | Holiday date in Thai format |
weekday | string | Day of week in English |
weekday_thai | string/null | Day of week in Thai |
name | string | Holiday name |
name_thai | string/null | Holiday name in Thai |
type | string | Holiday type ("public" or "financial") |
List Response
{
"holidays": [/* Holiday objects */],
"total_count": 25,
"date_range": {
"start_date": "2025-06-08",
"end_date": "2026-06-08",
"query_type": "range",
"reference_date": "2025-06-08"
},
"holiday_types": ["public"],
"cached_at": "2025-06-08T10:29:33.740056"
}
Error Codes
HTTP Status Codes
Status Code | Description |
---|---|
200 | Success |
400 | Bad Request - Invalid parameters |
401 | Unauthorized - Invalid or missing API key |
404 | Not Found - Invalid endpoint |
422 | Validation Error - Parameter validation failed |
429 | Too Many Requests - Rate limit exceeded |
500 | Internal Server Error |
Validation Errors
Invalid Date Range
{
"detail": [
{
"loc": ["query", "start_date"],
"msg": "Invalid date format. Use YYYY-MM-DD",
"type": "value_error"
}
]
}
Invalid Holiday Type
{
"detail": [
{
"loc": ["query", "holiday_type"],
"msg": "Holiday type must be 'financial', 'public', or 'both'",
"type": "value_error"
}
]
}
Code Examples
Python
import requests
url = "https://api.iapp.co.th/data/thai-holidays/holidays"
params = {
'holiday_type': 'public',
'days_after': 90
}
headers = {
'apikey': 'YOUR_API_KEY'
}
response = requests.get(url, headers=headers, params=params)
data = response.json()
print(f"Found {data['total_count']} holidays")
for holiday in data['holidays']:
print(f"{holiday['date']}: {holiday['name']}")
JavaScript
const axios = require('axios');
const config = {
method: 'get',
url: 'https://api.iapp.co.th/data/thai-holidays/holidays',
headers: {
'apikey': 'YOUR_API_KEY'
},
params: {
holiday_type: 'both',
year: 2025
}
};
axios(config)
.then((response) => {
console.log(`Found ${response.data.total_count} holidays`);
response.data.holidays.forEach(holiday => {
console.log(`${holiday.date}: ${holiday.name}`);
});
})
.catch((error) => console.log(error));
PHP
<?php
$curl = curl_init();
$url = 'https://api.iapp.co.th/data/thai-holidays/holidays?' .
http_build_query([
'holiday_type' => 'public',
'days_after' => 180
]);
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => array(
'apikey: YOUR_API_KEY'
),
));
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
echo "Found " . $data['total_count'] . " holidays\n";
foreach ($data['holidays'] as $holiday) {
echo $holiday['date'] . ": " . $holiday['name'] . "\n";
}
?>
Swift
import Foundation
let headers = [
"apikey": "YOUR_API_KEY"
]
var components = URLComponents(string: "https://api.iapp.co.th/data/thai-holidays/holidays")!
components.queryItems = [
URLQueryItem(name: "holiday_type", value: "financial"),
URLQueryItem(name: "year", value: "2025")
]
var request = URLRequest(url: components.url!, timeoutInterval: Double.infinity)
request.addValue("YOUR_API_KEY", forHTTPHeaderField: "apikey")
request.httpMethod = "GET"
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print(String(describing: error))
return
}
do {
let json = try JSONSerialization.jsonObject(with: data, options: [])
print(json)
} catch {
print(error)
}
}
task.resume()
Kotlin
import okhttp3.*
import java.io.IOException
val client = OkHttpClient()
val url = HttpUrl.Builder()
.scheme("https")
.host("api.iapp.co.th")
.addPathSegments("data/thai-holidays/holidays")
.addQueryParameter("holiday_type", "both")
.addQueryParameter("days_after", "365")
.build()
val request = Request.Builder()
.url(url)
.addHeader("apikey", "YOUR_API_KEY")
.build()
client.newCall(request).execute().use { response ->
if (!response.isSuccessful) throw IOException("Unexpected code $response")
println(response.body()?.string())
}
Java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ThaiHolidayAPI {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
String url = "https://api.iapp.co.th/data/thai-holidays/holidays" +
"?holiday_type=public&days_after=90";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("apikey", "YOUR_API_KEY")
.GET()
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
Dart
import 'package:http/http.dart' as http;
import 'dart:convert';
void main() async {
final uri = Uri.parse('https://api.iapp.co.th/data/thai-holidays/holidays')
.replace(queryParameters: {
'holiday_type': 'public',
'year': '2025'
});
final response = await http.get(
uri,
headers: {
'apikey': 'YOUR_API_KEY'
}
);
if (response.statusCode == 200) {
final data = json.decode(response.body);
print('Found ${data['total_count']} holidays');
for (var holiday in data['holidays']) {
print('${holiday['date']}: ${holiday['name']}');
}
} else {
print('Error: ${response.statusCode}');
}
}
Best Practices
Error Handling
- Check HTTP Status Codes: Always verify the response status
- Parse Error Messages: Use the detailed error information for debugging
- Implement Fallbacks: Have backup plans for when the API is unavailable
- Log API Calls: Monitor your usage patterns and errors
Performance Tips
- Batch Requests: Get data for longer periods instead of multiple small requests
- Use Year Endpoint: For full year data, use the dedicated year endpoint
- Monitor Response Times: Track API performance in your applications
Use Cases
Business Applications
- Payroll Systems: Calculate working days and holiday pay
- Financial Services: Determine trading days and settlement dates
- E-commerce: Plan promotions around holidays
- Scheduling Systems: Avoid booking meetings on holidays
Development Integration
- Calendar Applications: Show Thai holidays in calendar views
- Business Intelligence: Include holiday data in analytics
- Notification Systems: Send holiday greetings and reminders
- Mobile Apps: Display relevant holiday information
Data Sources and Accuracy
Primary Sources
- Bank of Thailand: Official financial institution holidays
- Government Announcements: Real-time updates from Thai authorities
Update Process
Our dedicated Thai team monitors official channels and updates holiday data immediately when:
- New holidays are announced by the government
- Existing holidays are modified or cancelled
- Special one-time holidays are declared
Data Validation
All holiday data undergoes validation checks to ensure:
- Date accuracy and formatting
- Proper categorization (public vs financial)
- Consistent naming conventions
- Completeness of required fields
Pricing
API Service Name | Endpoint | IC Per Request |
---|---|---|
Thai Holiday Data API (v1.0) | /holidays | 0.1 IC/Request |
/holidays/year/{year} | 0.1 IC/Request | |
/holidays/range | 0.1 IC/Request | |
/holidays/types | 0.1 IC/Request |
Rate Limits
- Default: 1000 requests per hour per API key
- Burst: Up to 100 requests per minute
- Enterprise: Custom limits available
Contact our team for higher rate limits if needed for your application.
Support and Maintenance
Data Updates
Our Thai team ensures holiday data is always current by:
- Monitoring government announcements 24/7
- Updating the API within hours of official announcements
- Validating data accuracy across multiple sources
API Reliability
- Uptime: 99.9% SLA
- Response Time: < 50ms average
- Geographic: Served from multiple regions for optimal performance
Getting Help
- Documentation: This comprehensive guide
- API Portal: https://ai.iapp.co.th for account management
- Support: Contact our team through the API portal
- Status Page: Monitor API health and announcements