Developers

Build on the sky.

One engine computes every answer on this site. It is yours too: a free astronomy API that returns interpreted answers, the same answers as tools an AI assistant can call, and widgets that drop the live sky onto any page.

No key and no signup for the API and widgets. Accuracy is measured and published, and the conventions behind every answer are published as data. Prefer no code at all? Paste a widget.

$ curl "https://www.cyclecalcs.com/v2/today?lat=51.5074&lon=-0.1278&at=2026-08-27T22:00Z"
{
  "data": {
    "moon": { "phase": { "name": "Full Moon", "illumination_percent": 99.9 } },
    "planets_up": [ { "name": "Saturn", "magnitude": 0.37,
                      "visibility": "Up most of the night" } ],
    "night": { "verdict": "Bright. The Moon is up through the whole dark window." },
    "next_events": [ { "label": "Partial lunar eclipse", "days_until": 0.3 } ]
  }
}   // trimmed: the full body carries rise and set instants, azimuths,
    // dark-window times and the stated refraction model

Three things to build first

Each of these is a working project you can finish in an evening, with a step-by-step guide and code you can paste. Together they touch all three surfaces.

The toolbox

The REST API

29 endpoints under /v2 that answer the question, not the coordinates: moon phase by name, rise and set instants, "worth looking tonight" verdicts, eclipses with an explicit answer to whether you can see them from your spot. Plain GET, no key, no signup, open CORS, JSON or CSV, reliable from 1700 to 2200. Rise and set searches take any target, including radec: coordinates for a comet or a deep-sky object of your own, and every location accepts an optional elevation_m. Start at the API overview, try the live playground, or go straight to the endpoint reference, where every route carries a real captured response.

The MCP server

The same API as 11 read-only Model Context Protocol tools at https://www.cyclecalcs.com/mcp, for Claude and every other MCP-capable client. Browsing the tool list needs nothing; tool calls are metered by a key from the free Basic plan on RapidAPI. The server adds no endpoints and changes no contracts: it is a protocol adapter in front of the same 29 routes.

The widgets

Six embeddable widgets (moon phase, tonight's sky, sunrise and sunset, planet parade, eclipse countdown, cosmic clock) that ship as two lines of HTML from the embed builder, plus a newer no-iframe moon widget that renders in a shadow root with zero layout shift. For frameworks there is cyclecalcs-widget on npm, one custom element over the same frozen loader contracts.

Contracts, feeds and bulk data

Machines are first-class callers here: an OpenAPI 3.1 document at /v2/openapi.json, an agent-oriented llms-full.txt, every convention and threshold as data at /v2/conventions, and errors as RFC 9457 problem documents. Subscribable calendar feeds carry eclipses, full moons and seasons as ICS. For offline work, the bulk datasets on GitHub hold 55,909 computed events from 1700 to 2200 as CC0 CSV, archived with a permanent DOI on Zenodo.

Why build here

Where our tools live

Everything ships from this site first. These are the places beyond it where you can find, install or subscribe to our tools.

WhereWhat is thereStatus
RapidAPIThe API's paid plans (Pro, Ultra, Mega) and the free Basic key that meters the MCP server.Live
MCP RegistryThe official server record, com.cyclecalcs/astronomy, which registry-fed directories ingest.Live
SmitheryThe MCP server, connectable from Smithery-integrated clients.Live
APIs.ioThe provider profile apis.io generated from our submission; we also publish a machine-readable apis.json.Live
npmThe widget as a web component: cyclecalcs-widget, with @cyclecalcs/widget as a scoped alias.Live
GitHubBulk event datasets: eclipses, full moons, seasons and more, 1700 to 2200, CC0 CSV.Live
ZenodoThe same datasets archived with a permanent DOI, citable in research.Live
WordPress plugin directoryThe widgets as a [cyclecalcs] shortcode and a block. Built and tested; until it lands, the two-line snippet works in any Custom HTML block.Coming soon
Python SDKA thin typed client over /v2. Until then, /v2 is two lines of requests with no auth to configure.Coming soon
PostmanA collection with a worked example per endpoint.Coming soon

All API documentation