Jewish Calendar & Shabbat Times
Access Shabbat times and Jewish calendar data via the Hebcal API.
Quick Start // Get Shabbat times for a location const response = await fetch( 'https://www.hebcal.com/shabbat?cfg=json&geonameid=5128581&M=on' ); const data = await response.json();
Shabbat Times API By GeoNames ID (Recommended) const url = new URL('https://www.hebcal.com/shabbat'); url.searchParams.set('cfg', 'json'); url.searchParams.set('geonameid', '5128581'); // New York url.searchParams.set('M', 'on'); // Include Havdalah
const response = await fetch(url); const data = await response.json();
// Response { "title": "Hebcal New York January 2025", "items": [ { "title": "Candle lighting: 4:28pm", "date": "2025-01-10T16:28:00-05:00", "category": "candles" }, { "title": "Parashat Shemot", "date": "2025-01-11", "category": "parashat" }, { "title": "Havdalah: 5:31pm", "date": "2025-01-11T17:31:00-05:00", "category": "havdalah" } ] }
By Coordinates const url = new URL('https://www.hebcal.com/shabbat'); url.searchParams.set('cfg', 'json'); url.searchParams.set('latitude', '32.0853'); url.searchParams.set('longitude', '34.7818'); url.searchParams.set('tzid', 'Asia/Jerusalem');
Jewish Calendar API const url = new URL('https://www.hebcal.com/hebcal'); url.searchParams.set('cfg', 'json'); url.searchParams.set('v', '1'); url.searchParams.set('year', '2025'); url.searchParams.set('month', 'x'); // All months
// Optional parameters url.searchParams.set('maj', 'on'); // Major holidays url.searchParams.set('min', 'on'); // Minor holidays url.searchParams.set('mod', 'on'); // Modern holidays url.searchParams.set('nx', 'on'); // Rosh Chodesh url.searchParams.set('ss', 'on'); // Special Shabbatot url.searchParams.set('s', 'on'); // Weekly parsha
const response = await fetch(url); const holidays = await response.json();
Hebrew Date Conversion // Gregorian to Hebrew const url = new URL('https://www.hebcal.com/converter'); url.searchParams.set('cfg', 'json'); url.searchParams.set('gy', '2025'); url.searchParams.set('gm', '1'); url.searchParams.set('gd', '15');
const response = await fetch(url); const data = await response.json(); // { "hy": 5785, "hm": "Tevet", "hd": 15, "hebrew": "ט״ו בטבת תשפ״ה" }
React Hook import { useState, useEffect } from 'react';
interface ShabbatTimes { candleLighting: Date | null; havdalah: Date | null; parsha: string | null; }
function useShabbatTimes(geonameid: string) {
const [times, setTimes] = useState
useEffect(() => { async function fetchTimes() { const url = new URL('https://www.hebcal.com/shabbat'); url.searchParams.set('cfg', 'json'); url.searchParams.set('geonameid', geonameid); url.searchParams.set('M', 'on');
const response = await fetch(url);
const data = await response.json();
const result: ShabbatTimes = {
candleLighting: null,
havdalah: null,
parsha: null
};
for (const item of data.items) {
if (item.category === 'candles') {
result.candleLighting = new Date(item.date);
} else if (item.category === 'havdalah') {
result.havdalah = new Date(item.date);
} else if (item.category === 'parashat') {
result.parsha = item.title.replace('Parashat ', '');
}
}
setTimes(result);
setLoading(false);
}
fetchTimes();
}, [geonameid]);
return { times, loading }; }
Common GeoNames IDs City GeoNames ID Jerusalem 281184 Tel Aviv 293397 New York 5128581 Los Angeles 5368361 London 2643743 Paris 2988507 Resources Hebcal API Docs: https://www.hebcal.com/home/developer-apis