Sun to Pluto
Longitude, latitude and daily speed, with a retrograde flag ready for your interface.
Astronomy API for astrology apps
Planets, Chiron, nodes, Lilith, Ascendant, MC and houses in one JSON call. Benchmarked against Swiss Ephemeris on 565 reference charts. Hosted in the EU, with nothing from your requests kept.
2,000 free charts a monthNo cardSign in with Google
reference charts checked against Swiss Ephemeris 2.10
largest difference on any point, typical 1–3″
from 1900 to 2100, Chiron included
birth dates or coordinates stored, cached or logged
01 — What you get
You send a UTC moment and a place. You get back every position your app draws, in degrees with six decimals.
Longitude, latitude and daily speed, with a retrograde flag ready for your interface.
Built from NASA JPL Horizons, interpolated and checksummed. Covered across the full 1900–2100 range.
True and mean lunar nodes, both south nodes, and mean Black Moon Lilith with its latitude.
Ascendant, Midheaven and ARMC, computed for the exact place and moment.
Placidus, Porphyry, Whole Sign and Equal. Above the polar circle Placidus switches to Porphyry and the response says so.
Up to ten charts per call. Synastry, composite inputs and transit lists cost one round trip.
A good fit ifyour app writes its own interpretations and needs positions it can stand behind. Signs, aspects and texts stay yours.
02 — Developers
Plain HTTPS and JSON, a Bearer key and an OpenAPI 3.1 description. Any language that can make a POST request is ready.
Your free account opens with 2,000 charts a month.
Shown once in your console. We keep only its fingerprint.
Send UTC moments and places. Read degrees back.
Full reference in the API documentation.
curl https://skylineastro.com/v1/positions \ -H "Authorization: Bearer $SKYLINE_KEY" \ -H "Content-Type: application/json" \ -d '{ "requests": [{ "datetimeUtc": "1994-07-21T09:42:00Z", "latitude": 44.4268, "longitude": 26.1025, "houses": { "system": "placidus" } }] }'
const res = await fetch('https://skylineastro.com/v1/positions', { method: 'POST', headers: { Authorization: `Bearer ${process.env.SKYLINE_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ requests: [{ datetimeUtc: '1994-07-21T09:42:00Z', latitude: 44.4268, longitude: 26.1025, houses: { system: 'placidus' }, }], }), }) const { results } = await res.json() console.log(results[0].bodies.sun.longitude) // 118.409809
import os, requests res = requests.post( "https://skylineastro.com/v1/positions", headers={"Authorization": f"Bearer {os.environ['SKYLINE_KEY']}"}, json={"requests": [{ "datetimeUtc": "1994-07-21T09:42:00Z", "latitude": 44.4268, "longitude": 26.1025, "houses": {"system": "placidus"}, }]}, timeout=10, ) chart = res.json()["results"][0] print(chart["houses"]["ascendant"])
03 — Accuracy
Every release runs against 565 charts computed with Swiss Ephemeris, the reference astrologers check against. Here are the numbers, and the cases behind them.
| Point | Largest | Average |
|---|---|---|
| ☉︎Sun | 2.0″ | 0.5″ |
| ☽︎Moon | 3.2″ | 0.9″ |
| ☿︎Mercury | 9.6″ | 1.9″ |
| ♀︎Venus | 16.0″ | 1.6″ |
| ♂︎Mars | 10.6″ | 1.4″ |
| ♃︎Jupiter | 9.5″ | 2.8″ |
| ♄︎Saturn | 12.0″ | 3.1″ |
| ♅︎Uranus | 11.4″ | 3.0″ |
| ♆︎Neptune | 18.4″ | 9.1″ |
| ♇︎Pluto | 8.4″ | 3.0″ |
| ⚷︎Chiron | 1.3″ | 0.1″ |
| ☊︎True node | 19.4″ | 5.5″ |
| ☊︎Mean node | 0.3″ | 0.1″ |
| ⚸︎Lilith (mean) | 0.7″ | 0.3″ |
| ACAscendant | 21.1″ | 1.8″ |
| MCMidheaven | 14.0″ | 1.7″ |
| 12Placidus cusps | 22.7″ | 1.8″ |
| Point | Skyline | Swiss Eph. | Δ |
|---|
One arcsecond (1″) is 1/3600 of a degree. Our release gate is 30″ for every body, angle and cusp, and 5′ for the Ascendant above the polar circle. A 30″ shift moves a planet across a sign boundary only when it sits within half an arcminute of it.
The explorer shows 24 random cases from 1900 to 2025, computed live by the same engine that answers the API. Moments after 2026 depend on a forecast of ΔT (Earth's rotation); there the Moon may differ from other engines by up to about one arcminute toward 2100.
True (osculating) Lilith is held back until it meets the same 30″ gate.
04 — Privacy and licence
A birth date and a birthplace identify a person. We built the service so it never needs to remember them.
No database row, no cache, no log line with a moment or a coordinate. Logs carry a request id, your account, the status and the latency.
The API runs on Google Cloud in Belgium (europe-west1). Keys and monthly counters stay in the same region.
Built on open, MIT-licensed astronomy models and NASA JPL data. Not derived from Swiss Ephemeris, so your app takes on no AGPL obligations and no ephemeris licence.
We keep an HMAC fingerprint of each key, never the key. Revoke a key from your console and it stops working within a minute.
05 — Pricing
One chart is one request, whatever it contains. No weighted credits, no interpretation bundles to pay for.
€0
€9/ month
€29/ month
€99/ month
Dedicated instance. Your own EU deployment, your own keys and limits, an SLA and a named contact. From €400 a month.
Talk to usPrices exclude VAT. Annual billing includes two months free. Going over your monthly charts never breaks your app mid-month: calls keep working and we get in touch.
06 — Compare
Running an ephemeris yourself or picking a bundle API both work. Here is where Skyline saves you time.
| Skyline Astro | Self-hosted Swiss Ephemeris | Typical astrology APIs | |
|---|---|---|---|
| Accuracy evidence | Public benchmark, 565 cases, per point | The reference itself | Rarely published |
| Licence for your app | None needed | AGPL, or a paid professional licence | Often unstated |
| Request data | Never stored, cached or logged | Up to you | Often unstated, sometimes cached |
| Hosting | EU, Belgium | Your servers | Often unstated |
| Billing unit | 1 chart = 1 request | Your infrastructure | Credits weighted per endpoint |
| Time to first chart | Minutes | Days: build, host, maintain | Minutes |
07 — Questions
Historical time zones and daylight saving rules cause most wrong charts. Converting in your app, with the IANA time zone database, keeps that logic where you can test it.
Libraries such as Luxon, date-fns-tz or Python's zoneinfo do it in one line.
Tropical zodiac, geocentric positions, true ecliptic and equinox of date. Angles are decimal degrees with six decimals, longitudes in [0, 360).
From 1 January 1900 to 31 December 2100, for every body including Chiron.
No. Skyline returns astronomy only, so your app keeps full control of signs, aspects, orbs and texts.
Your calls keep working. We see the overage in our monthly report and write to you about the right plan. The per-minute limit protects the service from runaway loops.
The dedicated plan gives you an instance of your own in the EU. Write to us if you need it in another region.
Tropical is available today. Tell us which ayanamsa you need and we will tell you when it ships.
Contact
Volumes, house systems, a dedicated instance or a feature you are missing. You talk directly with the people who build the engine.