The Solar System OpenData


Everything you need

Main bodies

All planets and their moons, all dwarfs planets and the main asteroids.

Physical characteristics

Dimensions, mass, flattening, gravity, inclination and temperature.

Orbital parameters

Semimajor axis, perihelion, aphelion, eccentricity, orbital period and orbital speed.


Discovery circumstances, discoverer(s), year discovered and provisional designation.


For every body, all its satellites and the ability to navigate between satellites and the star.

Known objects count

Known count of each object type : planets, moons, asteroids, comets.


A living API

11-14-2020 - 1.1.0 - Known object count

New endpoint /knowcount

Return the known count of each object type.

10-10-2020 - Axial tilt & Fix

Added axial tilt for each planet.

Fix mean radius of the Sun.

07-20-2020 - Semimajor axis, perihelion and aphelion are big numbers

Semimajor axis, perihelion and aphelion are now bigint.

04-05-2020 - Adding Saturn's satellites

Adding 20 Saturn's satellites.

07-20-2019 - Update data

Added temporary designations and English names for all bodies where those informations was missing.

04-13-2019 - 1.0.1 - Fix parameters

brutData and datas are replaced by rowData and data.

04-06-2019 - 1.0.0 - Physical and orbital data.

Adding data : volume, density, gravity, escape speed, radius, dimension, perihelion, aphelion and rotation & revolution speed.

03-27-2019 - 0.2.0 - Mass {Value, Exponent}

Adding mass with two values : mass and the exp 10nkg.

03-12-2019 - Website

Creation of this website to describe the API. With release notes, API documentation, return data description and Swagger interface.

06-15-2018 - 0.1.0-beta - New data

Adding asteroids and TNO. English names are authorized as keys with a 301 redirection to the French name.

05-30-2018 - 0.1.0-alpha - MVP

First version of API online with planets and moons. The swagger documentation is online too.

05-02-2018 - Just an idea.

No API with all Solar System data seems to exist. It's time to create one, isn't it?


How to use the API?

All bodies in one request

An URL returns all bodies in the database with all data:

Boby by body

An URL returns all data of one body:{id}

All known count

An URL returns all known count for each object type :

Known count, object type by object type

An URL returns known count for the object type :{id}

API parameters for /bodies

# Parameter Action
1 data The data you want to retrieve (comma separated).
Example: data=id,semimajorAxis,isPlanet
2 exclude One or more data you want to exclude (comma separated).
Example: exclude=id,isPlanet
2 order The sort order data you want to use and the sort direction (comma separated).
Example: order=semimajorAxis,asc
NB : Only one data is authorized.
3 page Page number (number>=1) and page size (size>=1 with 20 as default) (comma separated).
Example: page=1,10
NB: You cannot use "page" without "order"!
4 rowData Transform the objects in records.
Example: rowData=true
NB: This can also be done client-side in JavaScript!
NB: The default value is false.
5 filter[] Filters to be applied. Each filter consists of a data, an operator and a value (comma separated).
Example: filter[]=id,eq,mars
Accepted operators are:
  • cs (like)
  • sw (start with)
  • ew (end with)
  • eq (equal)
  • lt (less than)
  • le (less or equal than)
  • ge (greater or equal than)
  • gt (greater than)
  • bt (between)
And all the opposite operators : ncs - nsw - new - neq - nlt - nle - nge - ngt - nbt.
NB: if any filter is invalid, all filters will be ignored.
6 satisfy Should all filters match (default).
Example: satisfy=any
NB: the only authorized value is any

Available data for /bodies

# Name Type Content
1 id string Id of body in the API.
2 name string Body name (in french).
3 englishName string English name.
4 isPlanet boolean Is it a planet?
5 moons
[{moon, rel}, ...]
[{string, string}, ...]
Table with all moons.
moon: Moon name, rel: moon API url.
6 semimajorAxis integer Semimajor Axis of the body in kilometres.
7 perihelion integer Perihelion in kilometres.
8 aphelion integer Aphelion in kilometres.
9 eccentricity decimal Orbital eccentricity.
10 inclination decimal Orbital inclination in degrees.
11 mass
{massValue, massExponent}
{number, integer}
Boby mass in 10n kg.
massValue: body mass, massExponent: exponent 10.
12 vol
{volValue, volExponent}
{number, integer}
Body volume in 10n kg.
volValue: body volume, volExponent: exponant 10.
13 density decimal Body density in g.cm3.
14 gravity decimal Surface gravity in m.s-2.
15 escape decimal Escape spped in m.s-1.
16 meanRadius integer Mean radius in kilometres.
17 equaRadius integer Equatorial radius in kilometres.
18 polarRadius integer Polar radius in kilometres.
19 escape flattening Flattening.
20 dimension string Body dimension on the 3 axes X, Y et Z for non-spherical bodies.
21 sideralOrbit decimal Sideral orbital time for body around another one (the Sun or a planet) in earth day.
22 sideralRotation decimal Sideral rotation, necessary time to turn around itself, in hour.
23 aroundPlanet
{planet, rel}
{string, string}
For a moon, the planet around which it is orbiting.
planet: Panet name, rel: planet API url.
24 discoveredBy string Discovery name.
25 discoveryDate string Discovery date.
26 alternativeName string Temporary name.
27 axialTilt decimal Axial tilt.

API parameters /knowncount

# Parameter Action
1 rowData Transform the objects in records.
Example: rowData=true
NB: This can also be done client-side in JavaScript!
NB: The default value is false.

Available data for /knowncount

# Name Type Content
1 id string Object type.
2 knowncount integer Known count.
3 updateDate string Update date of the Known count.