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.

the whole sky for one place, in one request
$ 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

Five things to build first

Each of these is a working project you can finish in an evening, with a step-by-step guide. Together they cover all three surfaces and the clear-sky feed, in JavaScript, Python and Home Assistant YAML.

The toolbox

The REST API

32 endpoints under /v2 whose interpreted answers come back in words: 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. In Python, pip install cyclecalcs gives you the same 32 endpoints as typed methods with no dependencies of its own.

The MCP server

The same API as 12 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, and tool calls work without a key up to 50 calls a day per network address. A key from the free Basic plan on RapidAPI, sent as a header or entered at sign-in, meters them on your own plan. The server adds no endpoints and changes no contracts: it is a protocol adapter in front of the same 32 routes, and one tool, observing_windows, lays the Observing Planner's cloud forecast over them.

The widgets

Twelve embeddable widgets (moon phase, tonight's sky, sunrise and sunset, planet parade, eclipse countdown, the next eclipse from your site, cosmic clock, and five for observatories: the observing planner, which reads the cloud forecast, dark nights ahead, tonight's schedule, tonight's targets and coming up) that ship as two lines of HTML from the embed builder, or design a whole page with them in the widget playground. There is also 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, which today carries the original six widgets.

SkyShare for apps

The photo labels behind the Sky Map's camera button, for your own app: give it a photo of the night sky and get back the names of the Moon, planets and bright stars, placed on the picture. Version 0.1 is on npm, free with our mark. SkyShare for apps says what it does today and how to reach us.

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
PyPIThe Python client: pip install cyclecalcs. Zero dependencies, typed, one method per endpoint, and it never puts a key in a URL.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 a Custom HTML block wherever WordPress allows scripts (which accounts and plans).Coming soon
PostmanA collection of worked examples, keyless, whose tests assert the response contract rather than the status code. Run it in Postman.Live

Something wrong on these pages, or missing for your build? Contact us at info@cyclecalcs.com.

All API documentation