CosmyDay API
Free astrology API with no key, computed with the Swiss Ephemeris: upcoming ingresses, retrogrades, eclipses and zodiac seasons with exact times, plus daily content per sign.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the CosmyDay API?
CosmyDay is a free, key-free astrology API whose sky events are computed with the Swiss Ephemeris rather than hand-written. It returns upcoming planetary ingresses, retrogrades, eclipses and zodiac season boundaries with exact times, covering a window from late 2025 to the end of 2030.
Nearly every free horoscope API is a bag of pre-written paragraphs on a rotation. This one is different in a specific, checkable way: the `computed_with` field says Swiss Ephemeris, and the event times it returns are precise to the minute and match ephemeris calculations. Whatever you think of astrology, the underlying astronomy — when Mercury actually enters Virgo, when a retrograde station occurs, when the Sun crosses a sign boundary — is real positional data, and that is useful well beyond horoscopes.
The event records are also unusually well written. Each carries a `headline`, a one-sentence `short`, and a `long` that explains the mechanism — the Virgo season entry in the example below correctly notes that season boundaries drift roughly six hours a year because the tropical year is 365.2422 days, and that anyone born near a boundary needs their birth time. There is an `importance` score for ranking, a `covers` window telling you the precomputed range, and separate endpoints for per-sign daily content and monthly archives. The natal chart endpoint is a POST and is not documented here, since verification stays read-only.
Quick facts
- Base URL
https://api.cosmyday.com- Authentication
- No key or account for the read endpoints.
- Rate limit
- No published limit. Events are precomputed through 2030, so cache generously.
- Pricing
- Free.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the CosmyDay API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Sky events for the next 30 days
GET https://api.cosmyday.com/events/upcoming?days=30
curl 'https://api.cosmyday.com/events/upcoming?days=30'const res = await fetch("https://api.cosmyday.com/events/upcoming?days=30");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.cosmyday.com/events/upcoming?days=30", timeout=20)
res.raise_for_status()
print(res.json()){
"timezone": "America/New_York (Eastern Time)",
"computed_with": "Swiss Ephemeris",
"covers": {
"from": "2025-11-11",
"to": "2030-12-09"
},
"from": "2026-08-21",
"to": "2026-09-20",
"count": 7,
"events": [
{
"id": "season-virgo-2026-08-22",
"date": "2026-08-22",
"kind": "season_start",
"headline": "Virgo season begins",
"short": "The Sun enters Virgo at 10:19 PM ET on August 22, 2026, running until September 22, 2026.",
"long": "The Sun crosses into Virgo on August 22, 2026 at 10:19 PM Eastern and stays there until September 22, 2026. Season boundaries are not fixed calendar dates: the tropical year runs about 365.2422 days, so each crossing drifts roughly six hours later per year until a leap day resets it. Anyone born within a day of a boundary needs their exact birth time to know their sun sign.",
"url": "https://cosmyday.com/zodiac-seasons",
"sign": "Virgo",
"time_et": "10:19 PM",
"importance": 50
},
{
"id": "ingress-mercury-2026-08-25",
"date": "2026-08-25",
"kind": "ingress",
"headline": "Mercury enters Virgo",
"short": "Mercury moves into Virgo at 7:04 AM ET on August 25, 2026.",
"long": "Mercury crosses into Virgo on August 25, 2026 at 7:04 AM Eastern. Fast-moving planets change sign every few weeks, so any single crossing matters far less on its own than where it lands in your chart.",
"url": "https://cosmyday.com/ingress-calendar",
"sign": "Virgo",
"time_et": "7:04 AM",
"importance": 22
},
{
"id"Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
days | integer | Optional | How far ahead `/events/upcoming` should look. 30 |
sign | path segment | Optional | Zodiac sign for `/content/daily/{sign}`, lowercase. leo |
month | path segment | Optional | Year and month for `/content/monthly-archive/{sign}/{yyyy-mm}`. 2026-03 |
q | string | Optional | Place name for `/search-location?q=`, used when preparing chart input. Berlin |
Response fields
computed_withstring- Which ephemeris produced the times. Currently "Swiss Ephemeris".
coversobject- The precomputed date range, `from` and `to`. Requests outside it will return nothing.
timezonestring- The zone all human-readable times are expressed in — currently US Eastern. Convert before displaying.
countinteger- How many events fell in the requested window.
events[].kindstring- Event type: `season_start`, `ingress`, `retrograde`, `eclipse` and others. List them with `/events/kinds`.
events[].datestring (YYYY-MM-DD)- Calendar date of the event.
events[].headline / short / longstring- Three lengths of copy for the same event, so you can use one API response at three densities.
events[].importanceinteger- Ranking score — sort by it to pick which events deserve a headline slot.
What you can build with the CosmyDay API
- Show an accurate 'what is happening in the sky' panel on a site
- Send a notification before a retrograde or eclipse
- Build an astronomy calendar that only needs the positional events
- Populate per-sign daily content without writing horoscope copy yourself
- Cross-check the exact minute a sign boundary falls when a birth date is borderline
Common errors and how to fix them
Empty `events` array
Your window falls outside the precomputed range.
Fix: Check the `covers` object in the response — the dataset currently runs from late 2025 to the end of 2030.
404 on /content/daily/{sign}
Sign name misspelled or capitalised.
Fix: Signs are lowercase English names: `aries` through `pisces`. `scorpio`, not `scorpius`.
Times look wrong by several hours
All human-readable times are US Eastern, as the `timezone` field states.
Fix: Convert using the date plus the stated zone before displaying to an international audience.
CosmyDay API — frequently asked questions
Is there a free astrology API with no key?
Yes. CosmyDay serves sky events, per-sign daily content and monthly archives with no key or account. What sets it apart is that the event times are computed with the Swiss Ephemeris rather than written by hand.
How accurate are the event times?
They come from the Swiss Ephemeris, the same library used by serious astronomical and astrological software, and are given to the minute. The astronomy is genuine positional data whatever your view of the interpretation layered on top.
How far ahead does the data go?
Every response includes a `covers` object with the precomputed range, currently from November 2025 to December 2030. Requests beyond it come back with an empty event list rather than an error.
Can I generate a natal chart?
There is a `/natal` endpoint, but it takes a POST body with birth details, so it is outside the read-only scope of this page. The `/search-location` endpoint exists to resolve a birthplace to coordinates for that request.
Tools that pair with this API
Zodiac Sign Calculator
Enter a birth date to find its western zodiac sign, with element, modality, ruling planet, date range and a warning if the date falls on a cusp.
Chinese Zodiac Calculator
Find your Chinese zodiac animal and element from your birth date, using real Lunar New Year dates so January and February births resolve correctly.
Time Zone Converter
Convert any date and time between world time zones. See UTC offsets, daylight saving handled automatically, and compare multiple zones at once.
CosmyDay is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.