Ana Sayfa / API Kataloğu / Resmi Tatiller & İş Günü API

Resmi Tatiller & İş Günü API

Tatil takvimi + iş günü aritmetiği tek serviste

Türkiye VerileriJSONGüncelleme: Yıllık takvim · anlık hesap100 kredi / ay (ücretsiz plan)

Genel bakış

Resmi Tatiller & İş Günü API; Türkiye'nin resmi ve dini bayram günlerini, yarım gün çalışılan arife günlerini ve idari izin günlerini listeler. Ayrıca iş günü aritmetiği yapar: iki tarih arasındaki iş günü sayısını hesaplar, bir tarihe N iş günü ekleyerek vade/termin tarihi bulur ve verilen bir günün iş günü olup olmadığını söyler. Hafta sonu tanımı ve özel şirket tatilleri parametreyle özelleştirilebilir.

Uç noktalar

Temel adres: https://api.apibir.com/v1

GET/holidaysYıllık tatil listesi
GET/business-days/countİki tarih arası iş günü sayısı
GET/business-days/addTarihe N iş günü ekle
GET/business-days/is-workdayBelirli gün iş günü mü?
GET/holidays/nextBir sonraki tatil ve kalan gün

Kimlik doğrulama

Tüm isteklerde API anahtarınızı Authorization başlığında gönderin:

Authorization: apikey APIBIR-8f2c4b7e9a1d3c5f7b2e9d41
Accept: application/json

Sorgu parametreleri

ParametreTipDurumAçıklama
yearintegeropsiyonelTakvim yılı. Varsayılan: içinde bulunulan yıl
countrystringopsiyonelISO ülke kodu. Varsayılan TR
start / enddateopsiyonelİş günü hesabı için tarih aralığı
daysintegeropsiyonel/business-days/add için eklenecek iş günü
weekendstringopsiyonelHafta sonu tanımı. Örn: sat,sun veya sun
halfDayCountsbooleanopsiyonelArife günleri tam gün sayılsın mı? Varsayılan false

Örnek istek

curl --request GET \
  --url "https://api.apibir.com/v1/holidays?year=2026&country=TR" \
  --header "authorization: apikey APIBIR-8f2c...9d41" \
  --header "content-type: application/json"
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://api.apibir.com/v1/holidays?year=2026&country=TR", nil)
	req.Header.Add("authorization", "apikey APIBIR-8f2c...9d41")
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}
const https = require('https');

const options = {
  hostname: 'api.apibir.com',
  path: '/v1/holidays?year=2026&country=TR',
  method: 'GET',
  headers: { 'authorization': 'apikey APIBIR-8f2c...9d41' }
};

https.get(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => console.log(JSON.parse(data)));
});
const res = await fetch(
  "https://api.apibir.com/v1/holidays?year=2026&country=TR",
  { headers: { authorization: "apikey APIBIR-8f2c...9d41" } }
);
const { data } = await res.json();
console.log(data);
import java.net.http.*;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.apibir.com/v1/holidays?year=2026&country=TR"))
    .header("authorization", "apikey APIBIR-8f2c...9d41")
    .GET().build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
import requests

r = requests.get(
    "https://api.apibir.com/v1/holidays?year=2026&country=TR",
    headers={"authorization": "apikey APIBIR-8f2c...9d41"},
    timeout=10,
)
print(r.json()["data"])
require 'net/http'
require 'uri'

uri = URI.parse("https://api.apibir.com/v1/holidays?year=2026&country=TR")
request = Net::HTTP::Get.new(uri)
request["authorization"] = "apikey APIBIR-8f2c...9d41"

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end
puts response.body
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("authorization", "apikey APIBIR-8f2c...9d41");
var json = await client.GetStringAsync("https://api.apibir.com/v1/holidays?year=2026&country=TR");
Console.WriteLine(json);
import Foundation

var request = URLRequest(url: URL(string: "https://api.apibir.com/v1/holidays?year=2026&country=TR")!)
request.addValue("apikey APIBIR-8f2c...9d41", forHTTPHeaderField: "authorization")

let task = URLSession.shared.dataTask(with: request) { data, _, _ in
    if let data = data, let str = String(data: data, encoding: .utf8) {
        print(str)
    }
}
task.resume()
open Cohttp_lwt_unix
open Lwt

let uri = Uri.of_string "https://api.apibir.com/v1/holidays?year=2026&country=TR" in
let headers = Header.init_with "authorization" "apikey APIBIR-8f2c...9d41" in
Client.get ~headers uri >>= fun (resp, body) ->
Cohttp_lwt.Body.to_string body >>= fun body_str ->
Lwt_io.printl body_str
<?php
$ch = curl_init("https://api.apibir.com/v1/holidays?year=2026&country=TR");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["authorization: apikey APIBIR-8f2c...9d41"]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($data["data"]);

Örnek yanıt

{
  "success": true,
  "creditsUsed": 1,
  "country": "TR",
  "year": 2026,
  "data": [
    {
      "date": "2026-01-01",
      "name": "Yılbaşı",
      "type": "resmi",
      "isPublicHoliday": true,
      "halfDay": false,
      "weekday": "Perşembe"
    },
    {
      "date": "2026-03-19",
      "name": "Ramazan Bayramı Arifesi",
      "type": "dini",
      "isPublicHoliday": true,
      "halfDay": true,
      "startTime": "13:00",
      "weekday": "Perşembe"
    },
    {
      "date": "2026-04-23",
      "name": "Ulusal Egemenlik ve Çocuk Bayramı",
      "type": "resmi",
      "isPublicHoliday": true,
      "halfDay": false,
      "weekday": "Perşembe"
    }
  ],
  "summary": {
    "totalHolidays": 15,
    "workDaysInYear": 248,
    "nextHoliday": { "date": "2026-08-30", "name": "Zafer Bayramı", "daysLeft": 23 }
  }
}

Yanıt alanları

AlanTipAçıklama
typestringresmi · dini · idari
halfDaybooleanYarım gün (arife) bilgisi
startTimetimeYarım günlerde tatilin başlangıç saati
summary.workDaysInYearnumberYıl içindeki toplam iş günü
summary.nextHolidayobjectBir sonraki tatil ve kalan gün sayısı

Kredi tüketimi: Bu servis her başarılı istek için 1 kredi harcar. Hatalı istekler (4xx) kredi düşürmez. Kalan krediniz her yanıtın creditsRemaining alanında döner.

Olası hatalar

KodHTTPAnlamı
invalid_api_key401Anahtar geçersiz veya başlık eksik.
insufficient_credits402Aylık kredi limitiniz doldu.
invalid_parameter422Parametre değeri beklenen formatta değil.
rate_limited429Saniyelik istek limiti aşıldı.
no_data404Sorgu kriterlerine uyan kayıt bulunamadı.

Bu API ile neler yapabilirsiniz?

İK ve bordro sistemleri

İzin bakiyesi, fazla mesai ve tatil çalışması ücretlerini doğru hesaplayın.

Kargo ve teslimat sözü

Sipariş anında gerçekçi teslim tarihi (SLA) gösterin.

Finans ve tahsilat

Çek/senet vade tarihlerini iş gününe ötelemeyi otomatikleştirin.

Randevu sistemleri

Tatil günlerini takvimden otomatik kapatın.

AI ile hızlı başlangıç. Bu API'yi Claude'a tanıtıp tek promptla pano kurmak için AI & Dashboard rehberine bakın. Hazır prompt şablonu ve çalışan dashboard örneği orada.

Ücretsiz API anahtarınızı 30 saniyede alın

Kredi kartı istemiyoruz. Ücretsiz plan tüm API'leri kapsar; yalnızca aylık kredi limiti farklıdır.