Open Exoplanet Catalogue
Status update
Since June 2020, I have started maintaining the Open Exoplanet Catalogue more actively again. I plan to manually enter data for time sensitive and high profile discoveries. But due to the large number of planets that get discovered these days, I will import data from the NASA Exoplanet Archive for all other planets. See the oec_continuity repository for details. Please continue to watch out for errors and submit pull requests! -- Hanno Rein
About the Open Exoplanet Catalogue
The Open Exoplanet Catalogue is a database of all discovered extra-solar planets. New planets are usually added within 24 hours of their announcement.
The database is licensed under an MIT license (see below), which basically says you can do everything with it. If you use it for a scientific publication, please include a reference to the Open Exoplanet Catalogue on github or to this arXiv paper.
The catalogue is a community project. Please send corrections and additions via pull request or email. If you have questions or comments about git or the database, please do not hesitate to contact of the contributors directly.
If you are looking for a simple comma/tab separated table, you might want to check out this repository.
How to access the catalogue using Python
It is very easy to access the Open Exoplanet Catalogue using python. Here is a short snippet to print out some basic planet data. No download, no installation and no external libraries are required.
If you are using python 3:
import xml.etree.ElementTree as ET, urllib.request, gzip, io
url = "https://github.com/OpenExoplanetCatalogue/oec_gzip/raw/master/systems.xml.gz"
oec = ET.parse(gzip.GzipFile(fileobj=io.BytesIO(urllib.request.urlopen(url).read())))
# Output mass and radius of all planets
for planet in oec.findall(".//planet"):
print([planet.findtext("mass"), planet.findtext("radius")])
# Find all circumbinary planets
for planet in oec.findall(".//binary/planet"):
print(planet.findtext("name"))
# Output distance to planetary system (in pc, if known) and number of planets in system
for system in oec.findall(".//system"):
print(system.findtext("distance"), len(system.findall(".//planet")))
If you are using python 2:
import xml.etree.ElementTree as ET, urllib, gzip, io
url = "https://github.com/OpenExoplanetCatalogue/oec_gzip/raw/master/systems.xml.gz"
oec = ET.parse(gzip.GzipFile(fileobj=io.BytesIO(urllib.urlopen(url).read())))
# Output mass and radius of all planets
for planet in oec.findall(".//planet"):
print [planet.findtext("mass"), planet.findtext("radius")]
# Find all circumbinary planets
for planet in oec.findall(".//binary/planet"):
print planet.findtext("name")
# Output distance to planetary system (in pc, if known) and number of planets in system
for system in oec.findall(".//system"):
print system.findtext("distance"), len(system.findall(".//planet"))
Data Structure
The following table shows all the possible tags in the Open Exoplanet Catalogue.
| Tag | Can be child of | Description | Unit |
|---|
system | | This is the root container for an entire planetary system | |
planet | system, binary, star | This is the container for a single planet. The planet is a free floating (orphan) planet if this tag is a child of system. | |
star | system, binary | This is the container for a single star. A star can be host to one or more planets (circum-stellar planets). | |
binary | system, binary | A binary consists of either two stars, one star and one binary or two binaries. In addition a binary can be host to one or more planets (circum-binary planets). | |
| | | |
declination | system | Declination | +/- dd mm ss |
rightascension | system | Right ascension | hh mm ss |
distance | system | Distance from the Sun | parsec |
name | system, binary, star, planet | Name of this object. This tag can be used multiple times if the object has multiple Names. | |
semimajoraxis | binary, planet | Semi-major axis of a planet (heliocentric coordinates) if child of planet. Semi-major axis of the binary if child of binary. | AU |
separation | binary, planet | Projected separation of planet from its host, or if child of binary the projected separation from one component to the other. This tag can occur multiple times with different units. It is different from the tag semimajoraxis as it does not imply a specific orbital configuration. | AU, arcsec |
|
Errors
Uncertainties can be added to values using the following attributes of the tag. We assume that these uncertainties represent the standard error of the measurement (68.2% confidence level). However, keep in mind that it is often not possible to collapse an entire posterior distribution to a single number.
The syntax for error bars is: <mass errorminus="0.1" errorplus="0.1">1.0</mass>
The syntax for upper/lower limits is: <mass upperlimit="1.0" />
Constants
The Open Exoplanet Catalogue stores information using a few basis units. For stars, mass and radius units are derived from our star, Sol (the Sun). For exoplanets, mass and radius units are derived from the planet Jupiter.
The mass of Jupiter, the Sun, and even Earth are so huge that it is more meaningful to simply reference their mass in relation to each other, rather than common SI units. These values are approximate.
| Ratio | Value |
|---|
| Sol/Jupiter mass | 1047.566 |
| Jupiter/Earth mass | 317.8284 |
| Sol/Earth mass | 332,946.1 |
In many publications, radius measurements are quoted based on Earth’s or Jupiter’s equatorial radius, so we list here the relevant IAU recommended nominal constants.
| Constant Name | Value |
|---|
| Solar radius | 695,700 km |
| Jupiter equatorial radius | 71,492 km |
| Earth equatorial radius | 6378.1 km |
There are a few more units and standards used: degrees, days, billions of years (gigayears or Gyr), AU, parsecs, sexagesimal degrees (declination), and sexagesimal hour angle (Right Ascension). These are all much more well defined than the mass and radius units above, so we will not produce them here. Please note that the Open Exoplanet Catalogue makes no accommodation for different celestial reference frames.
Plots

To create custom plots please visit this repository for example scripts.
Download ASCII tables
A few words of caution: Many planetary systems are part of binary star systems. The architecture of these systems is correctly represented in the original XML files of the Open Exoplanet Catalogue. In fact, it is to my knowledge the only catalogue that can do that. However, you might prefer to work with a simpler comma or tab separated table instead of the hierarchical XML file format. During the conversion process, some information is inevitably lost. Most importantly, the architecture of the star system. One cannot easily represent an arbitrary binary/triple/quadruple system in a simple table. Additionally, if planets have multiple identifiers only the first identifier is outputted. Using the original XML file format and git, you can use the git blame functionality to find references to scientific publications for every numeric value in the database. This functionality is also lost in the conversion process.
In a separate repository, you will find a comma separated and a tab separated ASCII table of the Open Exoplanet Catalogue.
Documentation
This file describes the philosophy and data-format of the catalogue. However, everything should be rather self-explanatory. The actual data is in the systems directory. Each XML file corresponds to one planetary system.
If you are editing th