FreeAstroAPI LogoFreeAstroAPI

French Ephemeris Open source ephemeris for Python and Rust

Open source. Commercial use with a one time USD 200 licence.

Used by professional astrologers and developers

Python 3.9+ wheels for Linux, macOS and Windows. Free under the AGPL-3.0.

than Swiss Ephemeris on a full chart (15 µs vs 55 µs, Python)
3.6× faster
every system Swiss Ephemeris supports, plus Gauquelin sectors
24 house systems
Lahiri, Raman, Krishnamurti and more for Vedic apps
46 ayanamsas

Chart speed measured in October 2026 on an Apple M4 with per body calls; the batch API is 7 to 9× faster. Method, sample sizes and the commands to reproduce each figure are in the engine report.

Why choose French Ephemeris

High precision, speed and ready for production.

More precise than Swiss Ephemeris

Planets, Sun and Moon come straight from the NASA/JPL DE441 and DE442 coefficients, copied bit for bit. Physical positions match JPL Horizons to 0.0005″ for years 0 to 1550.

Familiar pyswisseph style API

The swe_compat module keeps the call names, flags and return shapes astrology code already uses, such as calc_ut, houses, set_sid_mode and fixstar2.

Thread safe by design

No global mutable state. Sidereal mode, observer and Delta T settings live per thread and per asyncio task, so concurrent web requests never leak settings into each other.

Fast single calls and batches

About 500,000 positions per second one call at a time from Python, and about 4.5 million per second through the NumPy batch API, which releases the GIL.

What you can build

Western, Vedic and KP astrology apps all rely on the same building blocks. French Ephemeris gives you all of them.

Birth chart apps

Planets, houses, aspects, nodes and Lilith for any date and place, in the house system your users ask for.

Vedic and KP apps

Sidereal positions in 46 ayanamsas, including Lahiri, Raman and Krishnamurti, ready for kundli, dashas and divisional charts.

Compatibility and synastry

Compute two charts in microseconds and compare them, so matching runs live as people swipe or search.

Transit alerts

Exact aspects, ingresses, stations and returns, found by search, to drive notifications and timelines.

Moon and lunar calendars

New and full moons, phases, eclipses, rise and set times for the user's location.

Daily horoscopes at scale

The NumPy batch API computes millions of positions per second to prepare content for every sign and every day.

Mobile apps

Serve your iOS and Android apps from a Python or Rust backend, or ship the Rust core with the 2 MB mobile data set (1800 to 2400) to compute charts offline inside the app.

  • Planets, Sun and Moon
  • Years −13198 to 17190 with extended packs
  • Nodes, Lilith, apsides
  • 8,969 fixed stars (every naked-eye star)
  • Chiron and 326 asteroids
  • Eclipses matching NASA's canon, plus occultations
  • Rise, set and heliacal events

French Ephemeris vs Swiss Ephemeris

French Ephemeris is an independent implementation written from published sources. On charts from 1800 to 2100 it agrees with Swiss Ephemeris 2.10 to within 0.07″ for the Sun and 0.83″ for the Moon, with no sign or retrograde changes in 8,400 samples.

French Ephemeris ahead on 9 points, Swiss Ephemeris on 3, tied on 3.

French Ephemeris vs Swiss Ephemeris
French EphemerisSwiss Ephemeris
Planetary dataJPL DE441 and DE442 bit for bit, within 0.0005″ of JPL Horizons for years 0 to 1550Compressed copy of JPL data
Speed, 10 body chart15 µs55 µs
Speed, one call502,000 positions per second313,000 positions per second
Batch calculations4.46 million positions per second with NumPy, without the GILOne call per body and time
ThreadsSettings kept per thread and per async taskSettings shared by the whole process
Smallest data for 1800 to 2400Tie2.03 MB (mobile set)2.12 MB
House systemsTie2424
Fixed stars8,969: every naked-eye star (V ≤ 6.5), Hipparcos 2007 positionsAbout 1,200 objects
Ayanamsas46 modes, plus user defined47 modes, plus user defined
LanguagesPython, Rust and JavaScript (npm)C, with bindings for many languages
Track recordFirst public release in 2026Industry standard since 1997
LicenceAGPL-3.0, or USD 200 one time per companyAGPL, or a professional licence at CHF 700

Speeds measured on an Apple M4 against pyswisseph 2.10.3.2. Method, sample sizes and the commands to reproduce every figure are in the engine report.

Swiss Ephemeris is a product of Astrodienst AG. French Ephemeris is not affiliated with or endorsed by Astrodienst.

Free and open source, or one simple licence

AGPL-3.0

Free

For open source projects, research, teaching and any product that meets the AGPL, including publishing the source of modified versions you offer over a network.

Commercial licence

USD 200 one time, per company

For closed source apps, APIs and SaaS. Unlimited products, developers and end users, and every future version included.

Paid securely through Stripe. You receive an invoice by email and your licence certificate within two business days. Questions or a bank transfer: [email protected].

French Ephemeris FAQ

What is French Ephemeris?

French Ephemeris (Python package frenchephemeris) is a high precision, high performance open source ephemeris and astrology geometry library written in Rust with Python bindings. It computes planetary, lunar and minor body positions from NASA/JPL ephemerides (DE441/DE442), plus houses, ayanamsas, lunar nodes and Lilith, fixed stars, rise and set times, eclipses, occultations and heliacal events.

Can French Ephemeris replace pyswisseph or the Swiss Ephemeris?

Yes for most code. The frenchephemeris.swe_compat module mirrors pyswisseph style calls such as calc_ut, houses, set_sid_mode and fixstar2, so most code moves over by changing the import. On charts from 1800 to 2100 it agrees with Swiss Ephemeris 2.10 to within 0.07″ for the Sun and 0.83″ for the Moon, with no sign or retrograde changes in 8,400 samples. It is not affiliated with the Swiss Ephemeris or Astrodienst.

How accurate is French Ephemeris?

It reads the JPL DE441 and DE442 coefficients directly, so physical positions match JPL Horizons to 0.0005″ or better for years 0 to 1550 and within 0.13″ (inner planets, Sun and Moon) after 1550. Its eclipse search finds every solar and lunar eclipse of the NASA Five Millennium Canons for years 0 to 2400, with no spurious events or type mismatches. Method and sample sizes are published in the engine report on GitHub.

Is French Ephemeris free for commercial use?

Yes, under the GNU AGPL-3.0, provided you meet its conditions, including publishing the source of modified versions you offer over a network. If you want to keep your product closed source, a commercial licence costs USD 200 once per company, covers all future versions and unlimited end users.

Which data files does it need?

None to start: the package includes a compact data set for years 0 to 2400 (planets within 0.007″ of JPL, Moon within 0.4″). Run python -m frenchephemeris.packs download to add JPL's exact numbers for 1800 to 2401 (about 69 MB, SHA-256 checked), or --set full for years −2 to 2581 (256 MB). Optional packs extend the range to years −13198 to 17190 and add 326 commonly used asteroids.

Is it thread safe?

Yes. The engine is immutable and has no global mutable state. Sidereal mode, topocentric position and Delta T settings are kept per thread and per asyncio task, so concurrent requests cannot change each other's results. Batch calls release the Python GIL and run across cores.

Which platforms and languages are supported?

Python 3.9 and later, with prebuilt wheels for Linux (x86_64 and aarch64), macOS (Intel and Apple Silicon) and Windows. The Rust crate fe-core is in the same repository and can be used directly from Rust.

Do I need French Ephemeris to use FreeAstroAPI?

No. FreeAstroAPI already runs every calculation on French Ephemeris. Use the library when you want to compute positions inside your own application or servers; use the API when you want ready made charts, interpretations and reports over HTTP.

Start computing with French Ephemeris

Install it from PyPI, or skip the setup and call the same engine through the FreeAstroAPI REST endpoints.