‹ New Moon Day

API

Everything this site calculates is available as JSON: the Moon now, the crescent sighting evenings with their visibility and weather, and the Israel calendar with its feast dates. It is free, needs no key, and can be called from a browser or a server.

Quick start

Base URL: https://moon.grafted.in/api/v1. Every endpoint is a plain GET that returns JSON.

curl https://moon.grafted.in/api/v1/moon
const res = await fetch("https://moon.grafted.in/api/v1/calendar");
const { today, feasts } = await res.json();
console.log(`Month ${today.month}, day ${today.day}`);
/api/v1/moon The Moon now: phase, illumination, position, next rise and set.
/api/v1/crescent Upcoming new moons, each with its first two sighting evenings: sunset, moonset, Odeh visibility zone and weather.
/api/v1/calendar The Israel calendar: today's month and day, the month chain, feasts, aviv barley and the last reported sighting.
/api/v1 This list, as JSON.

Parameters

All are optional. Without lat and lon the observer is Jerusalem.

lat, lon Observer in decimal degrees, north and east positive. Give both. Not used by /calendar, which is always Israel.
tz IANA time zone for local times, such as Europe/London. Recommended with lat/lon: it handles daylight saving.
utc_offset Fixed offset in hours, used when tz is absent. With neither, the offset is estimated from the longitude (15° per hour).
name A label for the place, echoed back in observer.name.
date YYYY-MM-DD, from 1900 to 2100. Answers as if it were noon UTC on that date instead of now.
months /crescent only: how many new moons ahead to list, 1 to 12. Default 6.
curl "https://moon.grafted.in/api/v1/crescent?lat=51.5074&lon=-0.1278&tz=Europe/London&months=3"

Moon

GET/api/v1/moon

The Moon at this moment for the observer.

phaseName of the phase, such as Waxing Crescent.
phase_index 0 New, 1 Waxing Crescent, 2 First Quarter, 3 Waxing Gibbous, 4 Full, 5 Waning Gibbous, 6 Last Quarter, 7 Waning Crescent.
waxingtrue from new moon to full moon.
illumination_percentLit part of the disc, 0 to 100.
age_days, age_hoursTime since the last conjunction.
cycle_fraction Age as a fraction of the mean synodic month (29.53 days), 0 to 1.
above_horizonWhether the Moon is up: its upper edge above a flat horizon, allowing for standard refraction (the same rule as the rise and set times).
altitude_deg, azimuth_deg Position in the sky. Azimuth is clockwise from north. Altitude is geometric (no refraction).
apparent_altitude_deg Altitude as the eye sees it, with standard atmospheric refraction (1010 mb, 15 °C). Up to about 0.6° higher than altitude_deg near the horizon.
compassThe azimuth as a 16-point compass direction.
limb_tilt_deg For drawing the Moon as it looks in the sky. Start from an upright phase (lit side right when waxing, left when waning) and rotate it clockwise by this angle.
north_tilt_deg Where the Moon's north pole points in your sky. To draw surface features (a north-up Moon photo) the right way round, rotate the photo clockwise by this angle. It changes with your location and through the night; from the southern hemisphere it is near 180°.
next_rise_*, next_set_* Next moonrise and moonset. null where the Moon does not rise or set (polar regions).
previous_new_moon_utc, next_new_moon_utc The conjunctions on either side, to the minute.
Example response (live)
{
  "generated_utc": "2026-10-30T06:50:22Z",
  "as_of_utc": "2026-10-30T06:50:22Z",
  "observer": {
    "name": "Jerusalem",
    "latitude": 31.7683,
    "longitude": 35.2137,
    "elevation_m": 754,
    "timezone": "Asia/Jerusalem",
    "utc_offset_hours": 2.0
  },
  "moon": {
    "phase": "Waning Gibbous",
    "phase_index": 5,
    "waxing": false,
    "illumination_percent": 78.6,
    "age_days": 19.6,
    "age_hours": 471.0,
    "cycle_fraction": 0.6646,
    "above_horizon": true,
    "altitude_deg": 18.48,
    "apparent_altitude_deg": 18.53,
    "azimuth_deg": 290.95,
    "compass": "WNW",
    "limb_tilt_deg": 64.7,
    "north_tilt_deg": 63.1,
    "next_rise_utc": "2026-10-30T18:35:30Z",
    "next_rise_local": "2026-10-30T20:35:30+02:00",
    "next_set_utc": "2026-10-30T08:36:12Z",
    "next_set_local": "2026-10-30T10:36:12+02:00",
    "previous_new_moon_utc": "2026-10-10T15:50:00Z",
    "next_new_moon_utc": "2026-11-09T07:02:00Z"
  }
}

Crescent

GET/api/v1/crescent

new_moons lists the coming conjunctions. For two days after a conjunction, while its crescent is still being looked for, that one stays at the top of the list with in_sighting_window: true.

conjunction_*The astronomical new moon.
days_untilWhole days from today to the conjunction (negative once past).
in_sighting_windowThe conjunction has passed and its crescent is being watched for.
first_naked_eye_evening The first of the two evenings in zone A or B, or null if neither is.
evenings Two evenings: the first sunset after the conjunction (the same day if the conjunction is before local noon, otherwise the next) and the one after it.

An evening

dateThe date of the sunset.
sunset_*, moonset_* null where the Sun or Moon does not set that day.
best_time_* Best moment to look: sunset plus 4/9 of the lag. Equals sunset when the Moon sets first.
lag_minutesMoonset minus sunset. Negative when the Moon sets before the Sun.
moon_age_hoursTime from conjunction to sunset.
odeh.zone Odeh (2006) visibility zone at the best time: A easily visible to the naked eye, B visible under perfect conditions, C may need optical aid to find, D not visible even with optical aid.
odeh.vOdeh's V value. A ≥ 5.65, B ≥ 2.00, C ≥ −0.96, D below.
odeh.arcv_degArc of vision: Moon altitude minus Sun altitude.
odeh.arcl_degArc of light: Sun–Moon separation.
odeh.daz_degDifference in azimuth between Sun and Moon.
odeh.width_arcminTopocentric crescent width W.
odeh.moon_altitude_deg, moon_azimuth_deg, sun_altitude_deg Positions at the best time, without refraction.
weatherSee below. null when there is no best time.

Weather

Advisory only: it never changes a date. Values are for the hour nearest the best time, taking the worse of the observer's position and a point 25 km toward the setting Moon. When available is false, reason is beyond_forecast_range (with forecast_from, the date a forecast will first exist) or unavailable.

sourceforecast, or recorded for a past evening.
long_rangeA forecast 7 or more days ahead: treat it as a rough guide.
hour_utcThe hour the values are for.
sky, sky_label clear, fair, poor or bad, and the same in words.
sighting_chance, sighting_chance_label Zone and sky combined: good, possible, unlikely, very-unlikely, optics (binoculars only) or no.
cloud_cover_percent, cloud_low_percent, cloud_mid_percent, cloud_high_percent Total cloud and the three layers.
visibility_kmHorizontal visibility.
precipitation_probability_percent, precipitation_mmRain in that hour.
humidity_percentRelative humidity at the observer.
dust_ug_m3, aerosol_optical_depth Dust and haze. null more than 5 days ahead.
Example response (live, one new moon)
{
  "generated_utc": "2026-10-30T06:50:22Z",
  "as_of_utc": "2026-10-30T06:50:22Z",
  "observer": {
    "name": "Jerusalem",
    "latitude": 31.7683,
    "longitude": 35.2137,
    "elevation_m": 754,
    "timezone": "Asia/Jerusalem",
    "utc_offset_hours": 2.0
  },
  "new_moons": [
    {
      "conjunction_utc": "2026-11-09T07:02:03Z",
      "conjunction_local": "2026-11-09T09:02:03+02:00",
      "days_until": 10,
      "in_sighting_window": false,
      "first_naked_eye_evening": null,
      "evenings": [
        {
          "date": "2026-11-09",
          "sunset_utc": "2026-11-09T14:43:33Z",
          "sunset_local": "2026-11-09T16:43:33+02:00",
          "moonset_utc": "2026-11-09T14:30:54Z",
          "moonset_local": "2026-11-09T16:30:54+02:00",
          "best_time_utc": "2026-11-09T14:43:33Z",
          "best_time_local": "2026-11-09T16:43:33+02:00",
          "lag_minutes": -12.7,
          "moon_age_hours": 7.7,
          "odeh": {
            "zone": "D",
            "description": "Not visible even with optical aid",
            "v": -8.905,
            "arcv_deg": -2.33,
            "arcl_deg": 6.43,
            "daz_deg": 6.0,
            "width_arcmin": 0.09,
            "moon_altitude_deg": -3.17,
            "moon_azimuth_deg": 244.5,
            "sun_altitude_deg": -0.84
          },
          "weather": {
            "available": true,
            "source": "forecast",
            "long_range": true,
            "hour_utc": "2026-11-09T15:00:00Z",
            "sky": "poor",
            "sky_label": "Cloudy or hazy",
            "sighting_chance": "no",
            "sighting_chance_label": "None — too close to the Sun",
            "cloud_cover_percent": 42,
            "cloud_low_percent": 52,
            "cloud_mid_percent": 3,
            "cloud_high_percent": 0,
            "visibility_km": 25,
            "precipitation_probability_percent": 27,
            "precipitation_mm": 0.0,
            "humidity_percent": 60,
            "dust_ug_m3": null,
            "aerosol_optical_depth": null
          }
        },
        {
          "date": "2026-11-10",
          "sunset_utc": "2026-11-10T14:42:53Z",
          "sunset_local": "2026-11-10T16:42:53+02:00",
          "moonset_utc": "2026-11-10T15:11:14Z",
          "moonset_local": "2026-11-10T17:11:14+02:00",
          "best_time_utc": "2026-11-10T14:55:30Z",
          "best_time_local": "2026-11-10T16:55:30+02:00",
          "lag_minutes": 28.4,
          "moon_age_hours": 31.7,
          "odeh": {
            "zone": "C",
            "description": "May need optical aid to find",
            "v": 1.36,
            "arcv_deg": 5.32,
            "arcl_deg": 15.43,
            "daz_deg": 14.49,
            "width_arcmin": 0.54,
            "moon_altitude_deg": 1.95,
            "moon_azimuth_deg": 237.3,
            "sun_altitude_deg": -3.37
          },
          "weather": {
            "available": true,
            "source": "forecast",
            "long_range": true,
            "hour_utc": "2026-11-10T15:00:00Z",
            "sky": "poor",
            "sky_label": "Cloudy or hazy",
            "sighting_chance": "no",
            "sighting_chance_label": "None",
            "cloud_cover_percent": 52,
            "cloud_low_percent": 0,
            "cloud_mid_percent": 44,
            "cloud_high_percent": 44,
            "visibility_km": 29,
            "precipitation_probability_percent": 34,
            "precipitation_mm": 0.0,
            "humidity_percent": 48,
            "dust_ug_m3": null,
            "aerosol_optical_depth": null
          }
        }
      ]
    }
  ]
}

Calendar

GET/api/v1/calendar

The biblical calendar as kept on this site: a month begins when the crescent is sighted in Israel. A month is reported when a sighting has been recorded for it, and estimated otherwise — estimated dates can still move by a day. The About page explains the rules.

Days begin at sunset. Every *_evening field is the Gregorian date of the sunset at which something begins or ends.

today

dateToday's date in Jerusalem.
monthMonth number. Month 1 is Aviv; a leap year has a month 13.
day Day of the month whose daytime falls on date. The next day begins at sunset. 0 means the month begins at sunset today.
month_statusreported or estimated.
month_began_eveningThe sunset at which this month began.

next_month_watch

The two evenings that decide the next month, day_29 and day_30 of the current one, each a full evening with weather. If the crescent is seen on day 29 the next month begins that evening; otherwise it begins on day 30.

months

The previous month, the current one and the twelve after it.

monthMonth number, 1 to 13.
begins_eveningThe sunset at which the month begins.
first_dayThe daytime date of day 1 (the day after begins_evening).
statusreported or estimated.
may_begin_a_day_later An estimated month expected to begin on day 29 of the previous one, which slips a day if the crescent is missed.
length_days29 or 30. An estimate until the following month is reported. null for the last month listed.
year_rule Set on a month 1 or 13 (otherwise null): how the year was decided. set by the admin on a report, barley aviv barley found, not_aviv barley not ready so a 13th month, equinox estimated so that Passover falls on or after the spring equinox, after_13 follows a 13th month.
awaiting_barley A future month 1 or 13 that rests on the equinox estimate and may change with the barley report.
currentThe month today is in.
watch The evenings that decide this month's start: day_29 and day_30 of the month before, each with date and Odeh zone for Jerusalem.

feasts

The feasts of the current biblical year (Leviticus 23, and the Head of the Year). Next year's appear once this year's Eighth Day has passed. While fall_feasts_pending is true, the fall feasts are left out because the year's first month is not decided yet.

key Stable identifier: head, passover, unleavened, firstfruits, shavuot, trumpets, atonement, tabernacles, eighth.
name, hebrew_name, referenceNames and the Scripture reference.
biblical_dateMonth/day, such as 7/10, or the rule for First Fruits and Shavuot.
begins_evening The feast begins at sunset on this date. Passover is the exception: it is at twilight on this date, at the end of the 14th.
ends_eveningThe feast ends at sunset on this date.
daysLength in days.
statusconfirmed when its month was reported, else estimated.
may_begin_a_day_laterAs for its month.
in_progress, pastUnder way now, or over.
days_untilDays from today to begins_evening (negative once begun).

Other fields

aviv_barley in_season is true in months 11, 12, 13 and 1. report is the latest inspection, with date and status (aviv or not_aviv), or null.
last_sighting The most recent reported sighting: evening, and location and time_local where recorded. null if none is on record.
Example response (live, lists shortened)
{
  "generated_utc": "2026-10-30T06:50:22Z",
  "as_of_utc": "2026-10-30T06:50:22Z",
  "observer": {
    "name": "Jerusalem",
    "latitude": 31.7683,
    "longitude": 35.2137,
    "elevation_m": 754,
    "timezone": "Asia/Jerusalem",
    "utc_offset_hours": 2.0
  },
  "today": {
    "date": "2026-10-30",
    "month": 8,
    "day": 18,
    "month_status": "estimated",
    "month_began_evening": "2026-10-12"
  },
  "next_month_watch": {
    "day_29": {
      "date": "2026-11-10",
      "sunset_utc": "2026-11-10T14:42:53Z",
      "sunset_local": "2026-11-10T16:42:53+02:00",
      "moonset_utc": "2026-11-10T15:11:14Z",
      "moonset_local": "2026-11-10T17:11:14+02:00",
      "best_time_utc": "2026-11-10T14:55:30Z",
      "best_time_local": "2026-11-10T16:55:30+02:00",
      "lag_minutes": 28.4,
      "moon_age_hours": 31.7,
      "odeh": {
        "zone": "C",
        "description": "May need optical aid to find",
        "v": 1.36,
        "arcv_deg": 5.32,
        "arcl_deg": 15.43,
        "daz_deg": 14.49,
        "width_arcmin": 0.54,
        "moon_altitude_deg": 1.95,
        "moon_azimuth_deg": 237.3,
        "sun_altitude_deg": -3.37
      },
      "weather": {
        "available": true,
        "source": "forecast",
        "long_range": true,
        "hour_utc": "2026-11-10T15:00:00Z",
        "sky": "poor",
        "sky_label": "Cloudy or hazy",
        "sighting_chance": "no",
        "sighting_chance_label": "None",
        "cloud_cover_percent": 52,
        "cloud_low_percent": 0,
        "cloud_mid_percent": 44,
        "cloud_high_percent": 44,
        "visibility_km": 29,
        "precipitation_probability_percent": 34,
        "precipitation_mm": 0.0,
        "humidity_percent": 48,
        "dust_ug_m3": null,
        "aerosol_optical_depth": null
      }
    },
    "day_30": {
      "date": "2026-11-11",
      "sunset_utc": "2026-11-11T14:42:14Z",
      "sunset_local": "2026-11-11T16:42:14+02:00",
      "moonset_utc": "2026-11-11T15:56:51Z",
      "moonset_local": "2026-11-11T17:56:51+02:00",
      "best_time_utc": "2026-11-11T15:15:24Z",
      "best_time_local": "2026-11-11T17:15:24+02:00",
      "lag_minutes": 74.6,
      "moon_age_hours": 55.7,
      "odeh": {
        "zone": "A",
        "description": "Easily visible to the naked eye",
        "v": 14.776,
        "arcv_deg": 13.67,
        "arcl_deg": 26.14,
        "daz_deg": 22.34,
        "width_arcmin": 1.52,
        "moon_altitude_deg": 6.13,
        "moon_azimuth_deg": 231.7,
        "sun_altitude_deg": -7.54
      },
      "weather": {
        "available": true,
        "source": "forecast",
        "long_range": true,
        "hour_utc": "2026-11-11T15:00:00Z",
        "sky": "bad",
        "sky_label": "Overcast, rain or dust",
        "sighting_chance": "very-unlikely",
        "sighting_chance_label": "Very unlikely",
        "cloud_cover_percent": 79,
        "cloud_low_percent": 53,
        "cloud_mid_percent": 44,
        "cloud_high_percent": 23,
        "visibility_km": 16,
        "precipitation_probability_percent": 31,
        "precipitation_mm": 1.6,
        "humidity_percent": 60,
        "dust_ug_m3": null,
        "aerosol_optical_depth": null
      }
    }
  },
  "months": [
    {
      "month": 7,
      "begins_evening": "2026-09-12",
      "first_day": "2026-09-13",
      "status": "reported",
      "may_begin_a_day_later": false,
      "length_days": 30,
      "year_rule": null,
      "awaiting_barley": false,
      "current": false,
      "watch": {
        "day_29": {
          "date": "2026-09-12",
          "zone": "B"
        },
        "day_30": {
          "date": "2026-09-13",
          "zone": "A"
        }
      }
    },
    {
      "month": 8,
      "begins_evening": "2026-10-12",
      "first_day": "2026-10-13",
      "status": "estimated",
      "may_begin_a_day_later": false,
      "length_days": 30,
      "year_rule": null,
      "awaiting_barley": false,
      "current": true,
      "watch": {
        "day_29": {
          "date": "2026-10-11",
          "zone": "D"
        },
        "day_30": {
          "date": "2026-10-12",
          "zone": "A"
        }
      }
    }
  ],
  "feasts": [
    {
      "key": "head",
      "name": "Head of the Year",
      "hebrew_name": "Rosh Chodesh Aviv",
      "reference": "Exod. 12:2",
      "biblical_date": "1/1",
      "begins_evening": "2027-03-09",
      "ends_evening": "2027-03-10",
      "days": 1,
      "status": "estimated",
      "may_begin_a_day_later": false,
      "in_progress": false,
      "past": false,
      "days_until": 130
    },
    {
      "key": "passover",
      "name": "Passover",
      "hebrew_name": "Pesach",
      "reference": "Lev. 23:5",
      "biblical_date": "1/14",
      "begins_evening": "2027-03-23",
      "ends_evening": "2027-03-23",
      "days": 1,
      "status": "estimated",
      "may_begin_a_day_later": false,
      "in_progress": false,
      "past": false,
      "days_until": 144
    }
  ],
  "fall_feasts_pending": true,
  "aviv_barley": {
    "in_season": false,
    "report": null
  },
  "last_sighting": {
    "evening": "2026-09-12",
    "location": "Gilo, Jerusalem",
    "time_local": "19:10"
  }
}

Conventions

Limits

Terms