Accuracy
Astrology API accuracy, tested against NASA JPL and Swiss Ephemeris
Checked against NASA JPL Horizons on , on 25,571 positions. Checked against Swiss Ephemeris 2.10.03 on , on 2,000 random charts. The 12 hard charts were last run on .
Lahiri ayanamsa
Within 0.001″
Largest difference found: 0.0006″
Checked on 8 dates from Jan 1, 1900 to Jan 1, 2100.
Planet positions
Within 1.5″
Largest difference found: 0.16″, for the Moon
Checked on the Sun, the Moon and the five planets, on 11 test charts from 1855 to 2026.
Rising sign (ascendant)
Within 5″
Largest difference found: under 0.01″
Checked on the same 11 test charts from 1855 to 2026.
Against NASA JPL Horizons, at the same moment
JPL Horizons is NASA's own service for where the Sun, the Moon and the planets are. We compared 25,571 positions from the API with it, at the same moment. They cover the Sun, the Moon and five planets, every 30 days from 1850 to 2149. This checks the planet data on its own. The charts below check the whole path from a birth clock time.
Sun and planets
Within 0.001″
Moon
Within 0.011″
Median gap: 0.0025″
Positions compared
25,571
1850 to 2149
The Moon's gap grows toward 1850 and 2149, where two editions of NASA's Moon data differ slightly. The check runs as an automated test, so a change that moves a planet fails it. Checked on Nov 2, 2026.
Check it yourself: download every position compared (JSON): NASA's value, ours and the gap, for each date. To compare, ask JPL Horizons for the same body, date and quantity. Choose astrometric RA and Dec, seen from Earth's center. RA and Dec are the sky's version of longitude and latitude.
From a birth clock time, on 2,000 random charts
We cast 2,000 charts at random moments from 1850 to 2026, from their clock time. The places run from 60° south to 60° north. Then we compared every position with Swiss Ephemeris. This is the whole path an app uses, including delta T. Delta T is the small, changing gap between atomic clock time and Earth's spin.
Sun and planets
Within 0.06″
Moon
Within 0.41″
Median gap: 0.013″
Rahu and Ketu (true node)
Within 0.12″
Rising sign
Within 0.004″
The Moon's largest gap is in the late 1900s, where the two programs read delta T from different tables. The check runs as an automated test. Checked on Nov 2, 2026.
More test charts
We cast the test chart and 11 more from their local clock time and time zone. Then we compared every planet and the rising sign with Swiss Ephemeris 2.10.03. They cover clock changes, odd time zones, the far north and south, and both ends of the date range. Checked on Oct 27, 2026.
| Place and time | Why it is hard | Largest planet gap | Rising sign gap |
|---|---|---|---|
| New Delhi, Aug 22, 2026, noon | The test chart | 0.13″ | under 0.01″ |
| New York, Mar 8, 2026, 3:30 AM | Just after the clocks went forward | 0.13″ | under 0.01″ |
| New York, Nov 1, 2026, 3:30 AM | Just after the clocks went back | 0.16″ | under 0.01″ |
| Kathmandu, Aug 15, 1990, 10:30 AM | UTC+5:45 | under 0.01″ | under 0.01″ |
| Adelaide, Jan 15, 2000, 6:15 AM | UTC+10:30 in summer time | under 0.01″ | under 0.01″ |
| Tromsø, Norway, Jun 21, 1985, 11 PM | Midnight sun, 69.6° north | 0.01″ | under 0.01″ |
| Reykjavik, Dec 21, 1999, noon | 64.1° north in winter | under 0.01″ | under 0.01″ |
| Buenos Aires, Apr 10, 1975, 7:45 AM | Southern hemisphere | 0.01″ | under 0.01″ |
| Los Angeles, Jul 20, 1969, 1:17 PM | West of Greenwich | 0.13″ | under 0.01″ |
| Auckland, Jun 1, 2010, noon | Next to the date line | 0.03″ | under 0.01″ |
| London, Jan 1, 1855, midnight | Near the first year covered | 0.06″ | under 0.01″ |
| Sydney, Dec 31, 2140, 6 PM | Near the last year covered | 10″ | 1.35″ |
- From 1855 to 2026, every planet agrees within 0.16″ and the rising sign within 0.01″.
- In 2140 the Moon is 10″ apart. The cause is the clock, not the planets. No one knows exactly what delta T will be in 2140, so each program uses its own estimate.
- The time zone came out right on all 12, including both clock-change days. Far in the north, the rising sign is the degree really rising, not the one setting.
Sources: NASA JPL planet data (DE440), Swiss Ephemeris, NASA JPL Horizons
How we test accuracy
- Two references are used. NASA JPL Horizons, NASA's own planet service, checks the planet data. Swiss Ephemeris, widely used in astrology software, checks charts cast from a birth clock time.
- The ayanamsa (the zodiac offset) is checked on 8 dates across two centuries. Planets and the rising sign are checked on 2,000 random charts and on the 12 charts above.
- One of them, New Delhi at noon on Aug 22, 2026, India time, is in our automated tests. The tests run on every code change and fail if a result drifts past a limit.
- Each limit leaves room for the rounding in the stored reference values.
- Two of the tests exist because of real bugs we found and fixed. One was a missing correction that moved every planet by about 10 arc seconds. The other was an error that moved only the rising sign. Both are now tested directly.
- The NASA JPL Horizons check is an automated test too: 25,571 positions, run on every code change.
- Rahu and Ketu (the true node) are checked too: within 0.12″ on the 2,000 random charts.
Other checks
- Planetary periods (dashas) add up to 120 years. Every sub-period fits its parent period exactly, date for date.
- The panchang (Hindu calendar) has parts called tithi, yoga and karana. A tithi is a lunar day, and a karana is half of one. A yoga comes from the Sun and Moon together. Each part stays in its valid range for any position of the Sun and Moon.
- Coordinates in a local number format, such as 40,7128, are read correctly, and unclear or out-of-range ones are refused.
- Festival dates were compared with a widely used published calendar, for New Delhi (2023 to 2028) and Beijing (2026). All 161 dates matched.
- Fasting-day dates were compared with the same calendar. Of 496 dates for New Delhi (2026 to 2028) and Beijing (2026), 495 matched. The one miss is a full moon that ends 57 seconds after sunrise. We count that sunrise, and the calendar does not.
- Muhurat times were compared with the same calendar's New Delhi pages for 2026 and 2027. They cover buying a vehicle or a property, moving into a home and marriage. All 579 published windows matched within 3 minutes at both ends.
Where the classical texts disagree, the rulebook states which choice the API follows. The measured facts page lists each count with its sample and the day it was measured.
The settings behind every answer
Every endpoint uses these settings. You can change two of them in your request. Pick another of the eight ayanamsas instead of Lahiri, such as KP or Raman. Or pick the mean position of Rahu and Ketu instead of the true one. The ephemeris, JPL DE440s, is NASA's published table of planet positions. GET /v1/meta returns the defaults, so your code can check them too. The conventions page explains each one.
- Ayanamsa
- Lahiri
- Houses
- Whole sign
- Zodiac
- Sidereal (Vedic)
- Date range
- Jan 1, 1850 to Dec 31, 2149
- Ephemeris
- JPL DE440s
Check the settings from your code
GET /v1/meta
curl "https://apiforastrology.com/api/astrology/v1/meta" \
-H "Authorization: Bearer $ASTROLOGY_API_KEY"{
"ayanamsas": [
"lahiri",
"kp",
"raman"
],
"nodes": [
"true",
"mean"
],
"timezones": {
"accepts": [
"IANA time zone name, such as \"America/New_York\"",
"fixed offset from UTC in hours, such as -5 or 5.5"
],
"daylight_saving": "applied. A zone name is looked up in the time zone database for the exact birth moment, so daylight saving time, wartime clock changes and past changes to standard time are all included.",
"zones": 598,
"database": "tzdata 2026.4",
"ambiguous_times": "a local time that happens twice (when clocks go back) or never (when clocks go forward) is rejected, not guessed. Send `timezone_fold` or a numeric offset to say which one you mean."
},
"prose": {
"languages": [
"en",
"hi"
],
"details": [
"standard",
"expanded"
],
"note": "Language and length are set separately, for example `?lang=hi&detail=expanded`. Each text block reports the language and length it was actually served in. These can differ from what you asked for when a passage is not written yet in that…"
},
"names": {
"languages": [
"en",
"hi"
],
"note": "Every `/v1/` endpoint takes `?lang` for the names it returns, such as planets, signs, nakshatras, lunar days, months and festivals. Each translated value comes with its English original in a matching `<field>_en` field; use the English…"
},
"house_system": "whole sign",
"vargas": [
{
"varga": "D1",
"divisions": 1,
"name": "Rasi",
"signifies": "the body and life as a whole"
},
{
"varga": "D2",
"divisions": 2,
"name": "Hora",
"signifies": "wealth"
}
],
"date_range": {
"from": "1850-01-01",
"to": "2149-12-31",
"limited_by": "Dates from 1850 to 2149, the range covered by the NASA JPL planetary data (DE440s) the API uses."
},
"ephemeris": "JPL DE440s (NASA/JPL)",
"accuracy": "checked against Swiss Ephemeris: the ayanamsa agrees within 0.001 arcseconds on 8 dates from 1900 to 2100. We also checked 12 charts. On the 11 dated from 1855 to 2026, the Sun, Moon, Mars, Mercury, Jupiter, Venus and Saturn agree within…",
"accuracy_engine": {
"reference": "NASA JPL Horizons",
"compared": "geocentric positions (astrometric, ICRF) at the same moment",
"bodies": [
"Sun",
"Moon",
"Mercury"
],
"positions": 25571,
"from": "1850-01-01",
"to": "2149-12-31",
"step_days": 30,
"planets_arcsec": 0.001,
"moon_arcsec": 0.011,
"moon_median_arcsec": 0.0025,
"checked_on": "2026-11-02"
},
"accuracy_clock": {
"reference": "Swiss Ephemeris 2.10.03",
"compared": "sidereal positions from a birth clock time",
"charts": 2000,
"from": "1850",
"to": "2026",
"planets_arcsec": 0.06,
"moon_arcsec": 0.41,
"moon_median_arcsec": 0.013,
"true_node_arcsec": 0.12,
"ascendant_arcsec": 0.004,
"checked_on": "2026-11-02"
}
}Accuracy questions
All questionsHow accurate is the astrology API?
We test it against NASA JPL Horizons and Swiss Ephemeris. On 25,571 positions from 1850 to 2149, the Sun and planets agree with NASA JPL Horizons within 0.001 arc seconds. The Moon agrees within 0.011. On 2,000 random charts from a birth clock time, the planets agree with Swiss Ephemeris within 0.06 arc seconds. The rising sign agrees within 0.004. The tests fail if a result ever drifts past a limit.
Is that accurate enough for a birth chart?
Yes. An arc second is 1/3,600 of a degree, and a sign is 30 degrees wide. A birth time that is off by one minute moves the Moon about 33 arc seconds. It moves the rising sign about 15 arc minutes. So the birth time someone enters matters far more than the calculation. Even the widest planet limit in the tests is 1.5 arc seconds.
What exactly is tested?
The ayanamsa (the zodiac offset) is checked on 8 dates from 1900 to 2100. The Sun, the Moon and five planets are checked against NASA JPL Horizons on 25,571 positions. Planets, Rahu, Ketu and the rising sign are checked on 2,000 random charts, from a birth clock time. There, Rahu and Ketu agree with Swiss Ephemeris within 0.12 arc seconds. The planets and the rising sign are also checked on 11 test charts from 1855 to 2026. On a chart in 2140, the Moon is 10 arc seconds apart. No one knows exactly how Earth's spin will slow by then. The dashas, the panchang ranges and the reading of coordinates have tests of their own.
Do the panchang dates match published calendars?
We compared fasting-day dates with a widely used published calendar. Of 496 dates for New Delhi (2026 to 2028) and Beijing (2026), 495 matched.
Found a result that looks wrong?
Tell us. Send the birth details and the endpoint you called, and we will check it against the rulebook and reply.
Astrology API
Check the numbers yourself
Create a free test key and compare any chart with your own software. Or try a request in the API reference first.
Your first answer
John Doe, New York
- RisingVirgoHast
- SunCancerAshlesha
- MoonTaurusMrigashira
- MarsAriesKrittika
Real API output. A free test key gets the same answer.
01
Test key: 1,000 test calls a month to build with
02
Free plan: 2,000 live calls a month, no card needed
03
Open rules: every rule is published, so you can check any answer