Horoscope & astrology data API for partners

A read-only JSON API over the same high-precision ephemerides that runs Sigastra: daily, weekly and monthly horoscopes for all twelve signs in fifteen languages, plus live moon phase, today’s planetary aspects and sign compatibility. No account and no invoice; server-side calls name your site (its address or a free key). The only condition is attribution, and a canonical tag when you publish the full text.
Try it
GET /api/v1/daily?lang=en&sign=leoRuns against the live API from your browser. CORS is open, so this is also a working example of a client-side integration.
Endpoints
GET /api/v1/daily | lang, sign, full | Today’s horoscope. All twelve signs, or one. |
GET /api/v1/weekly | lang, sign, full | The current week, with its period key and range label. |
GET /api/v1/monthly | lang, sign, full | The current month. |
GET /api/v1/moon | lang | Illuminated fraction, phase, waxing/waning, moon sign. Pure ephemeris. |
GET /api/v1/cosmic | lang | The day’s closest planet-to-planet aspects, with orbs. Pure ephemeris. |
GET /api/v1/compat | lang, a, b | Deterministic sign compatibility: score, band, element and modality relation. |
Parameters
- lang
- One of the fifteen served languages (en, de, tr, ro, pl, es, sr, hr, nl, sl, pt-BR, fr, it, ja, id). Anything else falls back to English rather than erroring.
- sign
- The English key (leo), the English slug (leo) or the locale’s own slug (loewe). Omit it for all twelve.
- full
- full=1 returns the complete text instead of a teaser. This is the syndication mode and it turns the canonical requirement on.
- a, b
- Compat only. Two signs, in any of the accepted forms.
Teaser or full text
By default every item carries a teaser: enough for a card, a sidebar or a feed row. Add full=1 and you get the complete body, plus a sections object matching the source page. Full text is meant for republishing, so the attribution object switches canonicalRequired to true and hands you the exact tag to paste.
Rate limit
10 requests per second per IP at the edge, burst 30, and a daily ceiling of 1,500 requests per address. A publisher pulling twelve signs across daily, weekly and monthly, refreshed four times a day, spends about 150. You will not meet either limit. Past the ceiling the answer is HTTP 429 with a link back to this page. Need more volume? Write to info@sigastra.com and tell us where the content runs.
Examples
curl -s -H "Referer: https://example.com/horoscope" "https://sigastra.com/api/v1/daily?lang=en&sign=leo" | jq .
curl -s -H "x-sigastra-key: YOUR_KEY" "https://sigastra.com/api/v1/weekly?lang=en&sign=leo&full=1" | jq '.attribution.canonicalTag'
const res = await fetch("https://sigastra.com/api/v1/daily?lang=en&sign=leo");
const { items, attribution } = await res.json();
document.querySelector("#horoscope").textContent = items[0].text;
document.querySelector("#credit").outerHTML =
`<a href="${attribution.localizedHref}">${attribution.text}</a>`;
// Publishing the FULL text (full=1)? Also put this in <head>:
// attribution.canonicalTagTelegram channels, step by step
- Open sigastra.com/api/partners/verify?site=t.me/yourchannel. The channel must be public; you get its free key right away, and the three-day trial starts with the first call.
- Your bot calls the API with the key, for example /api/v1/daily?lang=en&sign=leo&key=YOUR_KEY, and posts the text (shortened or translated is fine, see the terms).
- At least one of your last ten posts links to sigastra.com with the word “Sigastra”, with no gap longer than seven days. We check the channel’s public preview automatically.
API FAQ
Is the horoscope API really free?+
Yes, on any site, commercial or not. You get a three-day trial from your first call. After that your page is checked automatically every few hours: without the link the content pauses, and it comes back as soon as the link is measured again. To re-check right away, open sigastra.com/api/partners/verify?site=yourdomain.com.
Do I need an API key?+
Calls from a browser (widgets, or a page that fetches the API itself) send their page address on their own and need nothing more. Calls from your server must say which site the content is for: send that page's address as the Referer header (our WordPress plugin does this for you). Once your site passes the link check, the verify address also gives you a free key. From October 15, 2026 a server call that sends neither is refused.
What is the rate limit?+
10 requests per second per IP at the edge, burst 30, plus a daily ceiling of 1,500 requests per address. A publisher spends about 150 a day, so you will not meet either. Above the ceiling: HTTP 429: write to info@sigastra.com for more volume.
Can I republish the whole horoscope?+
Yes, with full=1, and then you must add the canonical tag the payload gives you. Without it, two identical pages compete and search engines pick one; the canonical is what keeps that from being a coin flip.
Which languages does the astrology API cover?+
Fifteen: en, de, tr, ro, pl, es, sr, hr, nl, sl, pt-BR, fr, it, ja, id. Sign names, planet names, aspect names and phase names are all localized.
Is the data computed or written?+
Both. Planet positions, the moon phase and the aspects are computed from the ephemeris. The horoscope text is written once a day by AI (Claude, by Anthropic) from that day’s computed positions and then cached: the API never writes anything on your request, it reads what is already there.
Can I use this in a mobile app?+
Not in a native app. The program is free because the content stands on a public page or channel that carries the link, and an app has neither. A website or a public Telegram channel is fine; for anything else, write to info@sigastra.com.
Everything here is free. The only condition is a visible link: plus a canonical tag when you publish the full text.
How free works
- 3 days to test: no link required yet.
- From day 4: a visible link to sigastra.com whose text contains the word "Sigastra" on the page that shows the content, readable by anyone without a login. Your own language is fine: "Powered by Sigastra", "Horoscope by Sigastra", or just "Sigastra". Not inside the widget frame and not hidden. Whether to add rel="nofollow" is your choice.
- Without it the content pauses on every surface (widget, images, JSON) and the response says exactly what to add. We measure your live page automatically.
Added the link? Open /api/partners/verify?site=your-domain.com and the content resumes within minutes. A free partner key is issued to your site automatically once the link is measured.