Calendar — entry 007 of 17
Hebrew Calendar
Hebcal converts between Gregorian and Hebrew dates and computes Shabbat start/end times, holiday dates, Torah readings, and the Daf Yomi study cycle for any location, driven by the same open-source engine (@hebcal/core) that runs the hebcal.com website. Every endpoint is keyless JSON (or RSS/iCal on other routes) under a Creative Commons Attribution 4.0 license, so results can be reused commercially as long as Hebcal is credited. It's rate-limited to keep the free service polite — no more than 90 requests per 10-second window — and the once-http-only backend now serves over HTTPS as well.
Hebcal converts between Gregorian and Hebrew dates and computes Shabbat/holiday times, driven by the same open-source `@hebcal/core` engine behind hebcal.com. A live GET this run against `/converter` for today's Gregorian date (2026-07-29) returned the Hebrew equivalent (15 Av 5786) plus same-day Jewish calendar events (`Tu B'Av`, `Parashat Eikev`) in a single response.
GreatAPIs Score
Auth quickstart
- No API key, signup, or credit card required. A live GET this run confirmed every route answers keyless over HTTPS with `access-control-allow-origin: *` -- results are Creative Commons Attribution 4.0 licensed, reusable commercially as long as Hebcal is credited. The service is rate-limited to keep it polite (no more than 90 requests per 10-second window per its own published docs), but that ceiling isn't raised by any token.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Convert a Gregorian date to the Hebrew calendar
GEThttps://www.hebcal.com/converter?cfg=json&gy=2026&gm=7&gd=29&g2h=1
{"gy": 2026, "gm": 7, "gd": 29, "afterSunset": false, "hy": 5786, "hm": "Av", "hd": 15, "hebrew": "ט״ו בְּאָב תשפ״ו", "heDateParts": {"y": "תשפ״ו", "m": "אב", "d": "ט״ו"}, "events": ["Tu B’Av", "Parashat Eikev"]}Try it
Developer reference
https://www.hebcal.com- GET/converter?cfg=json&gy={year}&gm={month}&gd={day}&g2h=1
- GET/shabbat?cfg=json&geonameid={geonameid}&M=on
- GET/hebcal?v=1&cfg=json&year={year}&month=x&maj=on&min=on
Gotchas & limits
- An out-of-range month doesn't silently clamp -- a live GET this run against `/converter?cfg=json&gy=2026&gm=13&gd=1&g2h=1` returned HTTP 400 with `{"error":"Gregorian month out of valid range 1-12: 13"}`.
- Omitting the date entirely doesn't error the way a bad value does -- a live GET this run against `/converter?cfg=json&g2h=1` (no `gy`/`gm`/`gd`) returned HTTP 302, redirecting to a URL with today's server-side date filled in rather than rejecting the request.
- The same `/converter` endpoint runs in reverse with a different flag and field set -- a live GET this run with `hy=5786&hm=Av&hd=15&h2g=1` (Hebrew-to-Gregorian) returned the identical response shape as the Gregorian-to-Hebrew direction above, just driven by the opposite input fields.
- The Hebrew date comes back in two parallel forms -- a single combined `hebrew` string (`"ט״ו בְּאָב תשפ״ו"`) and a `heDateParts` object split into `y`/`m`/`d` pieces -- code that naively splits the combined string on spaces will mis-parse it since Hebrew month/year names can contain their own spaces.