Short answer: the Swiss Ephemeris is built to sub-arcsecond precision, and that is the bar a hosted astrology API has to meet. AstroWay’s positions are checked against NASA JPL Horizons (231 of 231 within tolerance, median 0.052″) and against the swetest reference output from Astrodienst (median 0.0013 arcsecond, maximum 0.561″, Chiron), plus the NASA eclipse catalog. The numbers below are what we actually measure, not marketing claims.
What the Swiss Ephemeris is
Section titled “What the Swiss Ephemeris is”The Swiss Ephemeris is the C library from Astrodienst (the people behind
astro.com), derived from NASA JPL’s DE431 ephemeris. It sits inside professional desktop
software - Solar Fire, Kepler, Janus, Astro Gold - that astrologers have trusted
for 30+ years, and swetest is its command-line reference program. AstroWay is
a hosted alternative: positions are computed on our own servers, with no
upstream API, and served over REST, so you get that precision without
installing a C extension or shipping ephemeris data files.
Measured accuracy
Section titled “Measured accuracy”| What | Drift | Reference |
|---|---|---|
| Planetary positions | 231 of 231 within tolerance, median 0.052″ | NASA JPL Horizons |
| Planetary positions | median 0.0013″, maximum 0.561″ (Chiron) | Astrodienst swetest CGI |
| Placidus house cusps | 0.000″ (exact match) | swetest |
| Eclipses | < 1 minute | NASA 5-Millennium Eclipse Catalog |
| Astrocartography (ACG) lines | < 1.5 km at the equator | swetest |
| Sunrise / sunset | < 10 seconds | timeanddate.com |
| Moon void-of-course, ingresses, conjunctions | sub-second | swetest |
How it’s verified
Section titled “How it’s verified”Two layers:
- Cross-checks. Positions are measured against NASA JPL Horizons, and
core calculations are compared with three independent references -
the
swetestreference output from Astrodienst, Kerykeion, and Prokerala - plus the NASA 5-Millennium Canon of Solar Eclipses. When sources disagree, the divergence is documented rather than hidden. - Regression snapshots. 888 snapshot tests pin the
output of the calculation endpoints. Every pull request re-runs them against
the live
swetestCGI and the NASA catalog, so a drift can’t slip into production unnoticed.
The full methodology and per-endpoint divergences live on the accuracy page.
When “less accurate” is fine
Section titled “When “less accurate” is fine”The Swiss Ephemeris has three precision modes. The full JPL-derived mode is the default. The built-in Moshier mode trades a little precision (still well under an arcsecond for most use) for not needing data files - fine for a horoscope app, overkill to worry about for a research tool that needs the JPL path. With AstroWay there is no mode to pick: dates from 1800 to 2399 come back better than 0.01″, and outside that range at about 0.1″.
Is the Swiss Ephemeris accurate enough for professional astrology? Yes - it’s the engine inside Solar Fire and Kepler, and sub-arcsecond precision is far below anything a chart interpretation can resolve.
How does AstroWay differ from running pyswisseph myself? No install. You skip compiling a C extension and shipping ephemeris files; you make an HTTPS call instead, and the positions are measured against JPL Horizons and the swetest reference output. See REST vs library.
Can I see the verification data? Yes - the accuracy page lists the references and per-endpoint divergences, and the regression suite runs on every change.
Next steps
Section titled “Next steps”- Accuracy & validation: full methodology
- Birth Chart API: the natal endpoint
- Natal chart API in Python: build with it