Skip to content
Benchmark / Open Source5 minMIT LicenseWhite-label ready

Astrology API Accuracy Benchmark

Independent proof, domain by domain. Every reference value cited, rerun monthly.

Open accuracy benchmark for astrology and insight APIs: one folder per domain, every reference value cited to a named authority, and every pass band stated with its reason. Planets, angles and sidereal positions are checked against NASA JPL Horizons, calendars, time zones and rule based domains against published tables and definitions. The MIT licensed runner points at any astrology API, writes JSON, CSV, a report page and a PDF, and reruns on a monthly schedule so the published numbers never go stale.

AstrologyVedicForecastHuman DesignFeng ShuiNumerology
Open accuracy benchmark for astrology and insight APIs with one folder per domain, every reference value cited to NASA JPL Horizons or a published table, and a monthly report and PDF

What it ships with

  • One folder per domain, each reference value cited to a named authority and each pass band explained
  • Planets, angles and sidereal positions measured against NASA JPL Horizons, in arcseconds
  • Calendars, time zones and rule based domains checked against published tables and definitions
  • A live report page and a PDF regenerated every month, with JSON and CSV for your own tooling
  • Point the runner at any astrology API with one flag and compare it on the same references

Screenshots

Astrology API Accuracy Benchmark screenshotAstrology API Accuracy Benchmark screenshot

README

Open accuracy benchmark for astrology and insight APIs: one folder per domain, every reference value cited to a named source.

Astrology API Accuracy Benchmark

The RoxyAPI Astrology API Accuracy Benchmark is an open, reproducible benchmark that checks the RoxyAPI astrology and insight API domain by domain against named authorities: NASA JPL Horizons for planets, angles and sidereal positions, and published calendar tables and definitions for calendars, time zones and rule based domains. Every reference value in the RoxyAPI benchmark is cited to its source, every pass band states its reason, and the MIT licensed runner points at any astrology API.

For the Sun, Moon, planets and Chiron, RoxyAPI returned 231 of 231 positions within 0.32 arcsec (0.000089°) of NASA JPL Horizons. In the open accuracy benchmark run of 2026-10-09, RoxyAPI returned 2,701 of 2,701 values within tolerance across 17 domains, with a median angular deviation of 0.048 arcsec (0.000013°).

By unit: positions median 0.048 arcsec (0.000013°) over 661; instants median 1.6 seconds over 133; calendar counts median 0 days over 179; discrete values 1,728 of 1,728 exact. Target roxyapi.com, generated from results/latest.json.

DomainAuthorityValuesWithin bandMedianp95MaxUnit
Western planetsNASA JPL Horizons231231 of 2310.0480.240.32arcsec
Western angles and housesNASA JPL Horizons sidereal time and obliquity, standard spherical astronomy200200 of 2000.120.621.5arcsec
Vedic sidereal chartNASA JPL Horizons with the Lahiri ayanamsa by its published definition230230 of 2300.0390.231.5arcsec
2626 of 260.20.480.49days
638638 of 638000exact
PanchangNASA JPL Horizons Sun and Moon longitudes by the classical definitions, sunrise from the US Naval Observatory1313 of 13000seconds
6060 of 60000exact
Forecast eventsNASA JPL Horizons2929 of 292.330.644.9seconds
Moon phasesU.S. Naval Observatory primary moon phase tables, Universal Time dates1111 of 11000days
Human Design bodygraphNASA JPL Horizons with the 88 degree solar arc and the Rave Mandala1010 of 100.0140.270.28seconds
9090 of 90000exact
Chinese calendarHong Kong Observatory Gregorian-Lunar conversion tables, sexagenary cycle from a published anchor day103103 of 103000days
3232 of 32000exact
Feng shuiPrinted Qing almanac and Xuan Kong rules recomputed, Hong Kong Observatory Li Chun dates1313 of 13000days
243243 of 243000exact
Mesoamerican calendarGMT correlation 584283, cross-checked against the FAMSI converter1616 of 16000days
4040 of 40000exact
VastuBrihat Samhita chapter 53 in the Iyer and Kern translations118118 of 118000exact
NumerologyPythagorean rules recomputed, cross-checked against published worked examples2121 of 21000exact
KabbalahPublished gematria letter table and the arithmetic Hebrew calendar7272 of 72000exact
BiorhythmSine cycles of 23, 28 and 33 days, recomputed from the published definition1010 of 10000days
6060 of 60000exact
AyurvedaNASA JPL Horizons Sun ingress by the classical season rule, sunrise from the US Naval Observatory8181 of 811.725.129.6seconds
2424 of 24000exact
I ChingKing Wen sequence, cross-checked against Legge and the Unicode Standard306306 of 306000exact
LocationIANA Time Zone Database2424 of 24000exact

Terminal recording of the RoxyAPI benchmark run: a green check mark per domain with the pass count, median and largest deviation, then the boxed scorecard and the precision tier sentence

The RoxyAPI coverage map: each reference authority, the domain it checks and the quantities compared, generated from the references of every domain in the run.

flowchart LR
  d0("Western planets")
  a0["NASA JPL Horizons"]
  a1["NASA JPL Horizons small-body integration"]
  q0_0["Sun, Moon, planets and Chiron"]
  d1("Western angles and houses")
  a2["Spherical astronomy formulas"]
  q1_0["Ascendant, Midheaven and Placidus cusps"]
  d2("Vedic sidereal chart")
  a3["Lahiri ayanamsa, Calendar Reform Committee definition"]
  a4["IERS Conventions 2010, Table 5.3a"]
  a5["Positional Astronomy Centre, Kolkata"]
  a6["Brihat Parasara Hora Sastra"]
  q2_0["Lahiri ayanamsa and sidereal longitudes"]
  q2_1["Nakshatra and pada"]
  q2_2["Navamsa and Vimshottari"]
  d3("Panchang")
  a7["Surya Siddhanta, Burgess translation"]
  a8["US Naval Observatory Astronomical Applications API"]
  q3_0["Tithi, yoga, karana and vara"]
  q3_1["Sunrise"]
  d4("Forecast events")
  a9["US Naval Observatory seasons"]
  q4_0["Sign ingress instants"]
  q4_1["Station instants"]
  q4_2["Exact transit instant"]
  d5("Moon phases")
  a10["U.S. Naval Observatory Astronomical Applications moon phase service"]
  q5_0["Phase dates"]
  d6("Human Design bodygraph")
  a11["Introduction to the Human Design System"]
  a12["Jovian Archive"]
  a13["Human Design Gates by Zodiac Degrees"]
  q6_0["Design instant"]
  q6_1["Personality and design Sun and Earth gates and lines"]
  q6_2["Profile"]
  d7("Chinese calendar")
  a14["Hong Kong Observatory Gregorian-Lunar calendar conversion table"]
  a15["Sexagenary cycle"]
  a16["Ganzhi"]
  q7_0["Solar terms and Lunar New Year"]
  q7_1["Four pillars"]
  d8("Feng shui")
  a17["Xieji Bianfang Shu"]
  a18["Gujin Tushu Jicheng, Yangzhai Shishu"]
  a19["Shen Shi Xuan Kong Xue"]
  q8_0["Kua number and the Li Chun year boundary"]
  q8_1["Annual flying star plate"]
  q8_2["Natal period, mountain and water stars"]
  d9("Mesoamerican calendar")
  a20["GMT correlation definition"]
  a21["FAMSI date converter"]
  q9_0["Long Count and day count"]
  q9_1["Tzolkin sign and number"]
  q9_2["Haab month and day"]
  d10("Vastu")
  a22["Varahamihira, Brihat Samhita, translated by N. Chidambaram Iyer"]
  a23["Kern, Verspreide Geschriften vol. 2"]
  q10_0["Entrance side and pada from facing bearing and door position"]
  q10_1["Square of the nine by nine plan"]
  q10_2["Classical effect of the entrance pada"]
  d11("Numerology")
  a24["Pythagorean numerology rules"]
  a25["Hans Decoz worked examples"]
  q11_0["Life Path, Expression and Soul Urge"]
  d12("Kabbalah")
  a26["Mispar Hechrachi letter table"]
  a27["Dershowitz and Reingold, Calendrical Calculations"]
  a28["Hebcal date converter"]
  q12_0["Mispar Hechrachi and Mispar Gadol word values"]
  q12_1["Hebrew year, month and day, with the leap year flag"]
  d13("Biorhythm")
  a29["Cleve Moler, Biorhythms, MathWorks blog"]
  a30["US Patent 4,240,153, Biorhythm display device, USPTO"]
  q13_0["Physical, emotional and intellectual cycles"]
  d14("Ayurveda")
  a31["Sushruta Samhita, Bhishagratna translation"]
  a32["Charaka Samhita, Sutrasthana 6"]
  a33["Ashtanga Hridaya, Sutrasthana 1.8"]
  q14_0["Season at a date, both zodiacs and both hemispheres"]
  q14_1["Season opening and closing instants"]
  q14_2["Sunrise and sunset"]
  q14_3["Brahma muhurta window"]
  q14_4["Dosha periods of the day and night"]
  d15("I Ching")
  a34["List of hexagrams of the I Ching"]
  a35["The Unicode Standard, trigram and hexagram blocks"]
  a36["Legge, The Yi King, Sacred Books of the East vol. 16"]
  q15_0["King Wen hexagrams and trigrams"]
  d16("Location")
  a37["IANA Time Zone Database"]
  q16_0["Time zone and UTC offset"]
  a0 --> d0
  a1 --> d0
  d0 --> q0_0
  a0 --> d1
  a2 --> d1
  d1 --> q1_0
  a0 --> d2
  a3 --> d2
  a4 --> d2
  a5 --> d2
  a6 --> d2
  d2 --> q2_0
  d2 --> q2_1
  d2 --> q2_2
  a0 --> d3
  a7 --> d3
  a3 --> d3
  a5 --> d3
  a8 --> d3
  d3 --> q3_0
  d3 --> q3_1
  a0 --> d4
  a9 --> d4
  d4 --> q4_0
  d4 --> q4_1
  d4 --> q4_2
  a10 --> d5
  d5 --> q5_0
  a0 --> d6
  a11 --> d6
  a12 --> d6
  a13 --> d6
  d6 --> q6_0
  d6 --> q6_1
  d6 --> q6_2
  a14 --> d7
  a15 --> d7
  a16 --> d7
  d7 --> q7_0
  d7 --> q7_1
  a17 --> d8
  a18 --> d8
  a19 --> d8
  a14 --> d8
  d8 --> q8_0
  d8 --> q8_1
  d8 --> q8_2
  a20 --> d9
  a21 --> d9
  d9 --> q9_0
  d9 --> q9_1
  d9 --> q9_2
  a22 --> d10
  a23 --> d10
  d10 --> q10_0
  d10 --> q10_1
  d10 --> q10_2
  a24 --> d11
  a25 --> d11
  d11 --> q11_0
  a26 --> d12
  a27 --> d12
  a28 --> d12
  d12 --> q12_0
  d12 --> q12_1
  a29 --> d13
  a30 --> d13
  d13 --> q13_0
  a0 --> d14
  a31 --> d14
  a32 --> d14
  a7 --> d14
  a3 --> d14
  a5 --> d14
  a9 --> d14
  a33 --> d14
  a8 --> d14
  d14 --> q14_0
  d14 --> q14_1
  d14 --> q14_2
  d14 --> q14_3
  d14 --> q14_4
  a34 --> d15
  a35 --> d15
  a36 --> d15
  d15 --> q15_0
  a37 --> d16
  d16 --> q16_0

Latest RoxyAPI accuracy report: roxyapi.github.io/astrology-api-benchmark (PDF, JSON, CSV)

The accuracy report: scorecard, per domain charts and every measurement

What does not count as an accuracy check

  • A wrapper checked against the library it wraps is a self-test. It shows that arguments pass through, not that the numbers are right.
  • A wrapper checked against NASA JPL Horizons measures the library, not the vendor. The agreement belongs to the library authors; the vendor added a network hop.
  • The widely used calculation libraries are licensed copyleft or sold under a commercial licence. A buyer of an API built on one has to ask which licence applies to the product the buyer ships.
  • RoxyAPI reads the NASA JPL DE440 ephemeris directly, verified against NASA JPL Horizons. No third party calculation library sits between the ephemeris and the response, so the comparison measures RoxyAPI work end to end.
  • A check that omits the bodies, dates or charts where its numbers look worse, or publishes only a median, hides its worst case. This benchmark publishes every value it measures, Chiron and the 1879 chart included, with the maximum beside the median.
  • Planet positions are one slice of accuracy. Angles and houses, sidereal frames, calendars, time zones and discrete rules each fail in their own way and need their own authority, so every domain here has its own folder, source and pass band.

First published here

RoxyAPI published the open Astrology API Accuracy Benchmark first, in April 2026, as the commit history of the repository records. Other astrology API providers have since published accuracy checks of their own, and some have run the RoxyAPI benchmark against their own APIs. An open benchmark is built for exactly that: the method, the references and the runner are public, so anyone can check anyone.

Getting started

You need a RoxyAPI key, from roxyapi.com/pricing, and uv, which also installs the right Python.

1. Install uv (official instructions).

macOS and Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows (PowerShell):

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

2. Clone and install.

git clone https://github.com/RoxyAPI/astrology-api-benchmark.git
cd astrology-api-benchmark
uv sync

3. Add your key. Copy the sample and set BENCHMARK_API_KEY; every other setting has its default. .env.local is gitignored.

cp .env.example .env.local

4. Run every domain. This writes results/latest.json and results/latest.csv, and exits nonzero when any value fails or is missing.

uv run python -m benchmark run

Add --domain western-planets (repeatable) to run one domain.

5. Build the report page, then open dist/index.html in a browser. It is one self contained file.

uv run python -m benchmark site

6. Refresh this README from the new results. The generated blocks are rewritten in place.

uv run python -m benchmark readme

Run against another API

One domain at a time

Many astrology APIs cover a single domain and list it as several products: a natal chart, synastry and daily horoscopes sold as three. The RoxyAPI benchmark counts the way the RoxyAPI API reference does, one domain per distinct body of calculation, so those three are one domain here (Western astrology, checked by the Western planets and Western angles folders), and every domain in the coverage map above is a separate one. To test a single-domain provider, run only the folder that matches what it sells:

uv run python -m benchmark run --domain western-planets
uv run python -m benchmark run --domain western-planets --domain western-angles

--domain takes a folder name under domains/ and repeats; without it every domain runs.

Against another base URL

  1. Set that provider key as BENCHMARK_API_KEY in .env.local. The runner sends it in the X-API-Key header; a provider that expects another one sets BENCHMARK_API_KEY_HEADER too, with no code change.
  2. Adapt the check() function in domains/{id}/check.py for each domain you run. It is the one place a response is read, mapping it to the quantity names in references.json.
  3. Run that domain against the provider and keep its results apart:
uv run python -m benchmark run --target https://api.example.com/v1 --domain western-planets --out runs/example

The references, pass bands and statistics stay exactly as they are, so a single-domain provider is measured by the same numbers as the full RoxyAPI run.

Method

flowchart LR
  src["Reference source: NASA JPL Horizons, USNO, HKO, published rules"] --> pull["domains/id/pull.py"]
  pull --> refs["Cited references.json"]
  refs --> run["Runner calls the API under test"]
  run --> res["results/latest.json"]
  res --> out["README, report page, PDF and release"]
  cron["Monthly scheduled run"] -.-> run

The runner reads committed references only. The scheduled workflow reruns it every month, rewrites the results and republishes the README, the report page, the PDF and the release.

Time. The API receives the local birth time with its UTC offset or IANA zone name, exactly as a user would send it. The reference is computed at the UT instant from standard datetime math. A wrong time zone resolution moves every position, and the Moon, at about 13 degrees a day, shows it first.

Reference. Each domain names its authority and commits its reference values with the source, the retrieval date and the licence. Machine sources such as NASA JPL Horizons are pulled by domains/{id}/pull.py. Rule based domains are recomputed from a published definition, and a second source is transcribed as cross checks the recomputation must reproduce. The runner reads committed files only and never contacts a reference server.

A check. For every case the runner calls the API, reads each quantity and measures the deviation in the unit of that quantity: arcseconds for angles with 0 to 360 wraparound, seconds for instants, days for calendar counts, exact match for discrete values. A value inside its pass band is PASS, outside is FAIL, absent or unreadable is MISSING. Pass bands are vendor neutral floors, never sized to one implementation, so read the largest deviation per quantity for regressions.

Two choices on the planets. Jupiter to Pluto are compared with the Horizons system barycentres, which is what a planetary ephemeris integrates, because the Horizons planet centres come from separate satellite solutions that sit thousands of kilometres off it. The residual left on the oldest chart, from 1879, is the reference frame model: Horizons prints longitudes on the IAU 1976 and 1980 precession and nutation model, which drifts from the current IAU 2006 and 2000 model by about 0.3 arcseconds per century away from the year 2000.

Subjects. The shared subject corpus is data/charts.csv. Named charts carry an AA, A or B Rodden rating from the public Astro-Databank record, so anyone can check the birth data. Synthetic charts exercise time zone edge cases on purpose: daylight saving gaps and overlaps, local mean time before standard zones, half hour offsets, high latitudes and a skipped calendar day. Their value is coverage, not provenance.

Domains

Western planets

Authority: NASA JPL Horizons. Covers: Sun, Moon, planets and Chiron. Endpoints: POST /api/v2/astrology/natal-chart.

Pass bands: Moon 72 arcsec; every other quantity 36 arcsec.

Per quantity

QuantityReferenceMedianMaxWorst case
PlutoNASA JPL Horizons0.056 arcsec0.32 arcseceinstein
SaturnNASA JPL Horizons0.049 arcsec0.31 arcseceinstein
NeptuneNASA JPL Horizons0.048 arcsec0.31 arcseceinstein
ChironNASA JPL Horizons small-body integration0.049 arcsec0.31 arcseceinstein
UranusNASA JPL Horizons0.048 arcsec0.31 arcseceinstein
JupiterNASA JPL Horizons0.048 arcsec0.31 arcseceinstein
MarsNASA JPL Horizons0.048 arcsec0.31 arcseceinstein
SunNASA JPL Horizons0.048 arcsec0.31 arcseceinstein
VenusNASA JPL Horizons0.048 arcsec0.31 arcseceinstein
MercuryNASA JPL Horizons0.048 arcsec0.3 arcseceinstein
MoonNASA JPL Horizons0.048 arcsec0.27 arcseceinstein

Method, sources, pass-band reasons and sample checks: report.

Western angles and houses

Authority: NASA JPL Horizons sidereal time and obliquity, standard spherical astronomy. Covers: Ascendant, Midheaven and Placidus cusps. Endpoints: POST /api/v2/astrology/natal-chart.

Pass bands: every quantity 36 arcsec.

Per quantity

QuantityReferenceMedianMaxWorst case
AscendantNASA JPL Horizons sidereal time and obliquity, standard spherical astronomy0.1 arcsec1.5 arcsecanchorage_winter
Cusp 8NASA JPL Horizons sidereal time and obliquity, standard spherical astronomy0.11 arcsec1.1 arcsecanchorage_winter
Cusp 2NASA JPL Horizons sidereal time and obliquity, standard spherical astronomy0.11 arcsec1.1 arcsecanchorage_winter
MidheavenNASA JPL Horizons sidereal time and obliquity, standard spherical astronomy0.12 arcsec0.86 arcsecreykjavik_summer
Cusp 5NASA JPL Horizons sidereal time and obliquity, standard spherical astronomy0.12 arcsec0.74 arcsecreykjavik_summer
Cusp 11NASA JPL Horizons sidereal time and obliquity, standard spherical astronomy0.12 arcsec0.74 arcsecreykjavik_summer
Cusp 9NASA JPL Horizons sidereal time and obliquity, standard spherical astronomy0.11 arcsec0.73 arcsecreykjavik_summer
Cusp 3NASA JPL Horizons sidereal time and obliquity, standard spherical astronomy0.11 arcsec0.73 arcsecreykjavik_summer
Cusp 12NASA JPL Horizons sidereal time and obliquity, standard spherical astronomy0.12 arcsec0.69 arcsecanchorage_winter
Cusp 6NASA JPL Horizons sidereal time and obliquity, standard spherical astronomy0.12 arcsec0.69 arcsecanchorage_winter

Method, sources, pass-band reasons and sample checks: report.

Vedic sidereal chart

Authority: NASA JPL Horizons with the Lahiri ayanamsa by its published definition. Covers: Lahiri ayanamsa and sidereal longitudes; Nakshatra and pada; Navamsa and Vimshottari. Endpoints: POST /api/v2/vedic-astrology/birth-chart, POST /api/v2/vedic-astrology/navamsa, POST /api/v2/vedic-astrology/dasha/major.

Pass bands: Moon 72 arcsec; Sun, Mars, Mercury, Jupiter, Venus, Saturn 36 arcsec; Lagna 36 arcsec; ayanamsa 3 arcsec; dasha balance 1 day; every other quantity exact match.

Per quantity

QuantityReferenceMedianMaxWorst case
LagnaNASA JPL Horizons with the Lahiri ayanamsa by its published definition0.084 arcsec1.5 arcsecanchorage_winter
SaturnNASA JPL Horizons with the Lahiri ayanamsa by its published definition0.04 arcsec0.3 arcseceinstein
JupiterNASA JPL Horizons with the Lahiri ayanamsa by its published definition0.039 arcsec0.3 arcseceinstein
MarsNASA JPL Horizons with the Lahiri ayanamsa by its published definition0.039 arcsec0.3 arcseceinstein
SunNASA JPL Horizons with the Lahiri ayanamsa by its published definition0.039 arcsec0.3 arcseceinstein
VenusNASA JPL Horizons with the Lahiri ayanamsa by its published definition0.04 arcsec0.3 arcseceinstein
MercuryNASA JPL Horizons with the Lahiri ayanamsa by its published definition0.039 arcsec0.29 arcseceinstein
MoonNASA JPL Horizons with the Lahiri ayanamsa by its published definition0.04 arcsec0.26 arcseceinstein
ayanamsaNASA JPL Horizons with the Lahiri ayanamsa by its published definition0.0087 arcsec0.0096 arcsecgreenwich_y2k

Method, sources, pass-band reasons and sample checks: report.

Panchang

Authority: NASA JPL Horizons Sun and Moon longitudes by the classical definitions, sunrise from the US Naval Observatory. Covers: Tithi, yoga, karana and vara; Sunrise. Endpoints: POST /api/v2/vedic-astrology/panchang/basic, POST /api/v2/vedic-astrology/panchang/detailed.

Pass bands: sunrise 90 seconds; every other quantity exact match.

Per quantity

QuantityReferenceMedianMaxWorst case
sunriseUS Naval Observatory Astronomical Applications API0 seconds0 secondsmumbai-noon

Method, sources, pass-band reasons and sample checks: report.

Forecast events

Authority: NASA JPL Horizons. Covers: Sign ingress instants; Station instants; Exact transit instant. Endpoints: POST /api/v2/forecast/transits, POST /api/v2/astrology/transits/monthly.

Pass bands: Sun ingress, Sun ingress, monthly table, Mercury ingress, Mercury ingress, monthly table, Venus ingress, Venus ingress, monthly table, Mars ingress, Mars ingress, monthly table, Sun transit 60 seconds; Moon ingress, monthly table 60 seconds; Jupiter ingress, Jupiter ingress, monthly table, Uranus ingress, Uranus ingress, monthly table, Neptune ingress, Neptune ingress, monthly table 600 seconds; Mars station, Venus station, Mercury station 60 seconds; Pluto station, Neptune station, Saturn station 600 seconds.

Per quantity

QuantityReferenceMedianMaxWorst case
Uranus ingress, monthly tableNASA JPL Horizons44.9 seconds44.9 secondsuranus-enters-gemini-2025-07
Neptune ingressNASA JPL Horizons30.6 seconds30.7 secondsneptune-enters-aries-2025-03
Sun ingress, monthly tableNASA JPL Horizons23.5 seconds30.1 secondssun-enters-aries-2025-03
Venus ingress, monthly tableNASA JPL Horizons27.9 seconds28 secondsvenus-reenters-pisces-2025-03
Neptune ingress, monthly tableNASA JPL Horizons26.6 seconds26.7 secondsneptune-enters-aries-2025-03
Uranus ingressNASA JPL Horizons25.9 seconds25.9 secondsuranus-enters-gemini-2025-07
Moon ingress, monthly tableNASA JPL Horizons20 seconds20.2 secondsmoon-enters-capricorn-2025-03
Mercury ingress, monthly tableNASA JPL Horizons10.8 seconds19.6 secondsmercury-enters-aries-2025-03
Jupiter ingress, monthly tableNASA JPL Horizons15.4 seconds15.5 secondsjupiter-enters-cancer-2025-06
Pluto stationNASA JPL Horizons13.8 seconds13.8 secondspluto-stations-retrograde-2025-05
Mars ingress, monthly tableNASA JPL Horizons7.7 seconds7.8 secondsmars-enters-leo-2025-04
Jupiter ingressNASA JPL Horizons5.4 seconds5.5 secondsjupiter-enters-cancer-2025-06
Mars ingressNASA JPL Horizons2.3 seconds2.3 secondsmars-enters-leo-2025-04
Venus ingressNASA JPL Horizons1.9 seconds2 secondsvenus-reenters-pisces-2025-03
Mercury ingressNASA JPL Horizons0.78 seconds1.1 secondsmercury-reenters-pisces-2025-03
Sun ingressNASA JPL Horizons0.95 seconds1.1 secondssun-enters-aries-2025-03
Mars stationNASA JPL Horizons0.83 seconds0.84 secondsmars-stations-direct-2025-02
Saturn stationNASA JPL Horizons0.72 seconds0.72 secondssaturn-stations-retrograde-2025-07
Venus stationNASA JPL Horizons0.35 seconds0.67 secondsvenus-stations-direct-2025-04
Neptune stationNASA JPL Horizons0.62 seconds0.62 secondsneptune-stations-retrograde-2025-07
Mercury stationNASA JPL Horizons0.19 seconds0.26 secondsmercury-stations-direct-2025-04
Sun transitNASA JPL Horizons0.021 seconds0.021 secondssun-opposes-natal-pluto-2025-02

Method, sources, pass-band reasons and sample checks: report.

Moon phases

Authority: U.S. Naval Observatory primary moon phase tables, Universal Time dates. Covers: Phase dates. Endpoints: GET /api/v2/astrology/moon-phase/upcoming.

Pass bands: every quantity 0 days.

Method, sources, pass-band reasons and sample checks: report.

Human Design bodygraph

Authority: NASA JPL Horizons with the 88 degree solar arc and the Rave Mandala. Covers: Design instant; Personality and design Sun and Earth gates and lines; Profile. Endpoints: POST /api/v2/human-design/bodygraph.

Pass bands: design instant 60 seconds; every other quantity exact match.

Per quantity

QuantityReferenceMedianMaxWorst case
design instantNASA JPL Horizons with the 88 degree solar arc and the Rave Mandala0.014 seconds0.28 secondsobama

Method, sources, pass-band reasons and sample checks: report.

Chinese calendar

Authority: Hong Kong Observatory Gregorian-Lunar conversion tables, sexagenary cycle from a published anchor day. Covers: Solar terms and Lunar New Year; Four pillars. Endpoints: GET /api/v2/chinese-astrology/calendar/solar-terms/{year}, POST /api/v2/chinese-astrology/calendar/lunar-date, POST /api/v2/chinese-astrology/bazi/chart.

Pass bands: year_pillar, month_pillar, day_pillar, hour_pillar exact match; every other quantity 0 days.

Method, sources, pass-band reasons and sample checks: report.

Feng shui

Authority: Printed Qing almanac and Xuan Kong rules recomputed, Hong Kong Observatory Li Chun dates. Covers: Kua number and the Li Chun year boundary; Annual flying star plate; Natal period, mountain and water stars. Endpoints: POST /api/v2/feng-shui/kua, GET /api/v2/feng-shui/flying-stars/annual/{year}, POST /api/v2/feng-shui/flying-stars/natal.

Pass bands: boundary_date, changeover_date 0 days; every other quantity exact match.

Method, sources, pass-band reasons and sample checks: report.

Mesoamerican calendar

Authority: GMT correlation 584283, cross-checked against the FAMSI converter. Covers: Long Count and day count; Tzolkin sign and number; Haab month and day. Endpoints: POST /api/v2/mesoamerican-astrology/mayan/chart.

Pass bands: days_since_epoch, julian_day_number 0 days; every other quantity exact match.

Method, sources, pass-band reasons and sample checks: report.

Vastu

Authority: Brihat Samhita chapter 53 in the Iyer and Kern translations. Covers: Entrance side and pada from facing bearing and door position; Square of the nine by nine plan; Classical effect of the entrance pada. Endpoints: POST /api/v2/vastu/entrance.

Pass bands: every quantity exact match.

Method, sources, pass-band reasons and sample checks: report.

Numerology

Authority: Pythagorean rules recomputed, cross-checked against published worked examples. Covers: Life Path, Expression and Soul Urge. Endpoints: POST /api/v2/numerology/chart.

Pass bands: every quantity exact match.

Method, sources, pass-band reasons and sample checks: report.

Kabbalah

Authority: Published gematria letter table and the arithmetic Hebrew calendar. Covers: Mispar Hechrachi and Mispar Gadol word values; Hebrew year, month and day, with the leap year flag. Endpoints: POST /api/v2/kabbalah/gematria, POST /api/v2/kabbalah/birth-profile.

Pass bands: every quantity exact match.

Method, sources, pass-band reasons and sample checks: report.

Biorhythm

Authority: Sine cycles of 23, 28 and 33 days, recomputed from the published definition. Covers: Physical, emotional and intellectual cycles. Endpoints: POST /api/v2/biorhythm/reading.

Pass bands: days_since_birth 0 days; every other quantity exact match.

Method, sources, pass-band reasons and sample checks: report.

Ayurveda

Authority: NASA JPL Horizons Sun ingress by the classical season rule, sunrise from the US Naval Observatory. Covers: Season at a date, both zodiacs and both hemispheres; Season opening and closing instants; Sunrise and sunset; Brahma muhurta window; Dosha periods of the day and night. Endpoints: POST /api/v2/ayurveda/ritucharya, POST /api/v2/ayurveda/dinacharya.

Pass bands: ritu start, ritu end 60 seconds; sidereal ritu start, sidereal ritu end 120 seconds; sunrise, sunset, next sunrise, brahma muhurta start, brahma muhurta end, day pitta start, day vata start, night pitta start, night vata start 90 seconds; ritu, sidereal ritu, southern ritu, dosha order exact match.

Per quantity

QuantityReferenceMedianMaxWorst case
sunsetNASA JPL Horizons Sun ingress by the classical season rule, sunrise from the US Naval Observatory27.2 seconds29.6 secondsquito-equinox
sunriseNASA JPL Horizons Sun ingress by the classical season rule, sunrise from the US Naval Observatory9.3 seconds25.1 secondsreykjavik-midwinter
brahma muhurta startNASA JPL Horizons Sun ingress by the classical season rule, sunrise from the US Naval Observatory9.3 seconds25.1 secondsreykjavik-midwinter
brahma muhurta endNASA JPL Horizons Sun ingress by the classical season rule, sunrise from the US Naval Observatory9.3 seconds25.1 secondsreykjavik-midwinter
day vata startNASA JPL Horizons Sun ingress by the classical season rule, sunrise from the US Naval Observatory16.6 seconds23.5 secondssydney-midsummer
next sunriseNASA JPL Horizons Sun ingress by the classical season rule, sunrise from the US Naval Observatory13.3 seconds22.2 secondslondon-midsummer
night pitta startNASA JPL Horizons Sun ingress by the classical season rule, sunrise from the US Naval Observatory13.7 seconds20.9 secondsreykjavik-midwinter
day pitta startNASA JPL Horizons Sun ingress by the classical season rule, sunrise from the US Naval Observatory7.6 seconds19.8 secondssydney-midsummer
night vata startNASA JPL Horizons Sun ingress by the classical season rule, sunrise from the US Naval Observatory5.1 seconds14.6 secondsreykjavik-midwinter
ritu startNASA JPL Horizons Sun ingress by the classical season rule, sunrise from the US Naval Observatory1.5 seconds1.7 secondsvasanta-grisma-after
ritu endNASA JPL Horizons Sun ingress by the classical season rule, sunrise from the US Naval Observatory1.6 seconds1.7 secondssisira-vasanta-after
sidereal ritu startNASA JPL Horizons Sun ingress by the classical season rule, sunrise from the US Naval Observatory0.71 seconds0.97 secondssidereal-sisira-opens-before
sidereal ritu endNASA JPL Horizons Sun ingress by the classical season rule, sunrise from the US Naval Observatory0.42 seconds0.85 secondssidereal-sisira-closes-after

Method, sources, pass-band reasons and sample checks: report.

I Ching

Authority: King Wen sequence, cross-checked against Legge and the Unicode Standard. Covers: King Wen hexagrams and trigrams. Endpoints: GET /api/v2/iching/hexagrams/lookup, GET /api/v2/iching/hexagrams/{number}, GET /api/v2/iching/trigrams/{id}.

Pass bands: every quantity exact match.

Method, sources, pass-band reasons and sample checks: report.

Location

Authority: IANA Time Zone Database. Covers: Time zone and UTC offset. Endpoints: GET /api/v2/location/search.

Pass bands: every quantity exact match.

Method, sources, pass-band reasons and sample checks: report.

Adding a domain

A domain is a folder under domains/. The core never lists domains, so adding one is adding the folder:

  • check.py exports DOMAIN (id, title, authority, endpoints, listing order) and check(api, refs), which calls the API for every case and returns one measurement per value.
  • references.json holds the sources, the tolerances with their reasons and the cases. The schema refuses an unsourced value, a quantity without a tolerance or a value of the wrong type.
  • pull.py exports pull(), which rebuilds references.json from the source: uv run python -m benchmark pull {id}.

Run uv run pytest, and the domain is checked, reported and credited from the next run on.

Credits and sources

Generated from the sources of every domain in the run.

SourceLicenceRetrievedUsed for
NASA JPL HorizonsNASA JPL data, public domain US government work; cite Horizons2026-10-09Western planets, Western angles and houses, Vedic sidereal chart, Panchang, Forecast events, Human Design bodygraph, Ayurveda
NASA JPL Horizons small-body integrationNASA JPL data, public domain US government work; cite Horizons2026-10-09Western planets
Spherical astronomy formulas. Jean Meeus, Astronomical Algorithms, first edition, Willmann-Bell, 1991: chapter 12 eq. 12.1 to 12.4 and 12.9, chapter 14 eq. 14.1. Placidus de Titis, Tabulae Primi Mobilis, 1657, for the house definition.Formulas and definitions only; no text reproduced2026-10-09Western angles and houses
Lahiri ayanamsa, Calendar Reform Committee definition. Report of the Calendar Reform Committee, Government of India, Council of Scientific and Industrial Research, 1955: Recommendations for the religious calendar, item 7, pages 7 and 8; general precession, page 209Government of India publication; the definition is cited, no text is reproduced2026-10-09Vedic sidereal chart, Panchang, Ayurveda
IERS Conventions 2010, Table 5.3aIERS Conventions (2010), IERS Technical Note 36; data cited2026-10-09Vedic sidereal chart
Positional Astronomy Centre, KolkataGovernment of India data, India Meteorological Department; values cited with attribution2026-10-09Vedic sidereal chart, Panchang, Ayurveda
Brihat Parasara Hora Sastra. Brihat Parasara Hora Sastra, translated by R. Santhanam, Ranjan Publications: chapter 6 sloka 12 (volume 1 page 72) for navamsa, chapter 46 slokas 12 to 16 and notes (volume 2 pages 507 to 509) for nakshatra, pada and the Vimshottari dasha at birthClassical text; the rules are cited, no translation text is reproduced2026-10-09Vedic sidereal chart
Surya Siddhanta, Burgess translation. Translation of the Surya-Siddhanta, a Text-Book of Hindu Astronomy, by Ebenezer Burgess, Journal of the American Oriental Society, volume 6, 1860: chapter 2 verses 65 to 69 (pages 235 to 238) for yoga, tithi and karana; chapter 1 verse 13 note (page 151) and verses 51 and 52 (pages 175 and 176) for the day counted from sunrise and named for its lordClassical text in an openly digitised 1860 translation; the rules are cited, no text is reproduced2026-10-09Panchang
US Naval Observatory Astronomical Applications API. Complete Sun and Moon Data for One Day; rise and set defined at https://aa.usno.navy.mil/faq/RST_defsUS Government data, public domain; cite USNO2026-10-09Panchang, Ayurveda
US Naval Observatory seasonsUS Naval Observatory data, public domain US government work2026-10-09Forecast events, Ayurveda
U.S. Naval Observatory Astronomical Applications moon phase serviceU.S. government work, public domain; cite the Astronomical Applications Department2026-10-09Moon phases
Introduction to the Human Design System. Ra Uru Hu, Introduction to the Human Design System, International Human Design School, free edition: pages 3 and 4, the Design calculation 88 degrees of the movement of the Sun before birthPublished by the International Human Design School; the rule is cited, no text is reproduced2026-10-09Human Design bodygraph
Jovian ArchiveJovian Archive publication; facts cited, no text reproduced2026-10-09Human Design bodygraph
Human Design Gates by Zodiac DegreesPublished table; the degree of each gate is cited as a fact2026-10-09Human Design bodygraph
Hong Kong Observatory Gregorian-Lunar calendar conversion tableHong Kong Government open data: free to reproduce for commercial and non-commercial use with attribution to the Government and DATA.GOV.HK2026-10-09Chinese calendar, Feng shui
Sexagenary cycleCalendar definition, facts only; the page is CC BY-SA2026-10-09Chinese calendar
GanzhiCalendar definition, facts only; the page is CC BY-SA2026-10-09Chinese calendar
Xieji Bianfang Shu. Qinding Xieji Bianfang Shu, compiled by Yunlu, Mei Gucheng, He Guozong and others by imperial order, 1739 to 1741, Siku Quanshu edition. Juan 35 (appendix), the section on the nine palaces of men and women: the Kua rule for both sexes. Juan 8, the table of the year star entering the centre and its worked plate for the jiazi year 1684: the annual centre star, the era anchor and the Lo Shu flight path. Juan 34, the note on building works between Da Han and Li Chun: the year spirits change at Li ChunPublic domain text, compiled 1739 to 1741; rules only2026-10-09Feng shui
Gujin Tushu Jicheng, Yangzhai Shishu. Qinding Gujin Tushu Jicheng, 1726, Bowu section, Yishu canon, juan 675, Kanyu part 25: Yangzhai Shishu, chapter 2 on the Fu Yuan, the rule for starting men and women in the three eras, and the table of the Fu De palace for every year of the three jiazi erasPublic domain text, printed 1726; values only2026-10-09Feng shui
Shen Shi Xuan Kong Xue. Shen Zhureng, Shen Shi Xuan Kong Xue, edited by Shen Zumian, first edition 1925, revised edition 1933, juan 4: the palm rule for placing stars on the nine palaces and the nine period star table of the 24 mountains; the same juan names 1864 as the year the upper era openedPublic domain text, author died 1906, first printed 1925; rules only2026-10-09Feng shui
GMT correlation definition. Fliegel and Van Flandern, A machine algorithm for processing calendar dates, Communications of the ACM 11 (10), 1968, p. 657Calendar definition, facts only; the page is CC BY-SA2026-10-09Mesoamerican calendar
FAMSI date converterPublished tool output, values only2026-10-09Mesoamerican calendar
Varahamihira, Brihat Samhita, translated by N. Chidambaram Iyer. Varahamihira, The Brihat Samhita, translated into English by N. Chidambaram Iyer, Madura, South Indian Press, 1884, chapter 53 (the sixth chapter of the volume part on architecture), verses 42 to 45 for the squares and 71 to 75 for the effectsPublic domain translation, Madura, 1884; values only2026-10-09Vastu
Kern, Verspreide Geschriften vol. 2. Hendrik Kern, translation of the Brhat Sanhita of Varahamihira, in Verspreide Geschriften vol. 2, The Hague, 1913, chapter 53, verses 71 to 75Public domain translation, The Hague, 1913; values only2026-10-09Vastu
Pythagorean numerology rulesPublished rules, facts only; no text is copied2026-10-09Numerology
Hans Decoz worked examplesPublished worked examples, results only2026-10-09Numerology
Mispar Hechrachi letter tableLetter values, facts only; the page is CC BY-SA2026-10-09Kabbalah
Dershowitz and Reingold, Calendrical Calculations. Dershowitz and Reingold, Calendrical Calculations, Cambridge University Press, chapter 8 The Hebrew CalendarPublished algorithm, recomputed; no text or code copied2026-10-09Kabbalah
Hebcal date converterPublished tool output, values only2026-10-09Kabbalah
Cleve Moler, Biorhythms, MathWorks blogPublished definition, facts only, cited2026-10-09Biorhythm
US Patent 4,240,153, Biorhythm display device, USPTOUS government patent record, facts only, cited2026-10-09Biorhythm
Sushruta Samhita, Bhishagratna translation. An English Translation of the Sushruta Samhita, Kaviraj Kunja Lal Bhishagratna, Calcutta 1907, volume 1, Sutrasthana chapter VI (pages 43 and 44): the twelve months from Magha in six seasons of two, and thirty muhurtas to the day and nightClassical text in an openly digitised 1907 translation; the rules are cited, no text is reproduced2026-10-09Ayurveda
Charaka Samhita, Sutrasthana 6. Charaka Samhita, Handbook on Ayurveda Volume I, edited by Gabriel Van Loon, 2002 to 2003, after P. V. Sharma: Sutrasthana 6.3 and 6.4, the six seasons and the northward course from sisira to grisma against the southward course from varsa to hemantaCited for the rule only; no text is reproduced2026-10-09Ayurveda
Surya Siddhanta, Burgess translation. Translation of the Surya-Siddhanta, a Text-Book of Hindu Astronomy, by Ebenezer Burgess, Journal of the American Oriental Society, volume 6, 1860: chapter 1 verse 13, a solar month is determined by the entrance of the Sun into a sign of the zodiacClassical text in an openly digitised 1860 translation; the rule is cited, no text is reproduced2026-10-09Ayurveda
Ashtanga Hridaya, Sutrasthana 1.8. Ashtanga Hridaya of Vagbhata, Sanskrit with two commentaries, as digitised: Sutrasthana 1.8, the humours hold the end, the middle and the beginning of the day, the night and digestion; Sutrasthana 2.1, rising in the brahma muhurtaClassical text in an openly digitised edition; the rule is cited, no text is reproduced2026-10-09Ayurveda
List of hexagrams of the I ChingKing Wen sequence, facts only; the page is CC BY-SA2026-10-09I Ching
The Unicode Standard, trigram and hexagram blocksUnicode character names and order, public specification2026-10-09I Ching
Legge, The Yi King, Sacred Books of the East vol. 16. James Legge, The Yi King, Sacred Books of the East vol. 16, Oxford, 1899, Appendix II and Appendix VPublic domain translation, Oxford, 1899; values only2026-10-09I Ching
IANA Time Zone DatabasePublic domain2026-10-09Location

Citing

Cite this benchmark with the metadata in CITATION.cff. GitHub shows it under "Cite this repository".

How this fits with RoxyAPI

This repository is the open companion to the methodology page. RoxyAPI covers Western and Vedic astrology, forecasts, human design, Chinese astrology, numerology, tarot and more behind one API key, with Remote MCP, typed SDKs and drop in UI components. Try the API reference or see pricing.

Licence

MIT for the code. Reference values are facts from the sources credited above, each under the licence listed beside it.

Ready to ship?

Clone the repo, add your API key, deploy to your stack.