Space Data Atlas

Challenges

Space Mission Design Game

Beginner/Youth, Intermediate. Games.

Create a game where players design, run and simulate a full space mission, trading off objectives, instruments, launch vehicle, budget, power, mass and communications.

Read the official challenge on spaceappschallenge.org

Real costs and masses are scattered across mission reports; cite the NTRS sources you use.

Your first hour

  1. Define the trade-offs your game scores (mass, power, budget, data return) and keep the first version small.
  2. Use SBDB and Horizons so targets and travel distances come from real orbits.
  3. Pull spacecraft models from NASA 3D Resources and images from the NASA Image Library for the UI.

Suggested datasets

In order of how useful they are likely to be. These are suggestions, not the official resource list.

JPL Small-Body Database API

NASA JPL Solar System Dynamics

No login

Orbit elements, physical data and discovery details for any asteroid or comet as JSON. Use it to label moving objects, or to give a mission-design game real target bodies.

endpoint https://ssd-api.jpl.nasa.gov/sbdb.api

JPL Horizons API

NASA JPL Solar System Dynamics

No login

Computes positions of the Sun, Earth, planets and spacecraft as seen from any place and time, including a point on the lunar surface. Returns azimuth and elevation directly, which is exactly what solar power and Earth-communication windows need.

endpoint https://ssd.jpl.nasa.gov/api/horizons.api

NASA 3D Resources

NASA (GitHub nasa/NASA-3D-Resources)

No loginWorks in browser

Free 3D models of NASA spacecraft, landers, rovers and asteroids, mostly as STL and GLB files. Ready-made assets for games, trainers and storytelling pages.

endpoint https://api.github.com/repos/nasa/NASA-3D-Resources/contents/3D%20Models

NASA Technical Reports Server (NTRS) API

NASA STI Program

No login

Search API over NASA technical reports, conference papers and journal articles, many with full-text PDFs. Over a thousand records match microgravity combustion, and it also covers mission design and spaceflight health.

endpoint https://ntrs.nasa.gov/api/citations/search

NASA Image and Video Library API

NASA

No loginWorks in browser

Search API over NASA's public photos, videos and audio, with no key and open CORS. Good for mission artwork, historical hardware photos and game assets.

endpoint https://images-api.nasa.gov/search

Starter code

Sun elevation at a lunar south pole sitePython
import requests

# Sun azimuth/elevation seen from a lunar south pole site (lon 0, lat -89.5).
# Use COMMAND='399' for Earth instead of the Sun ('10').
params = {
    "format": "json",
    "COMMAND": "'10'",
    "MAKE_EPHEM": "'YES'", "EPHEM_TYPE": "'OBSERVER'", "OBJ_DATA": "'NO'",
    "CENTER": "'coord@301'", "COORD_TYPE": "'GEODETIC'",
    "SITE_COORD": "'0,-89.5,0'",  # east lon, lat, altitude km
    "START_TIME": "'2026-12-01'", "STOP_TIME": "'2026-12-03'",
    "STEP_SIZE": "'6h'", "QUANTITIES": "'4'",  # 4 = azimuth and elevation
}
r = requests.get("https://ssd.jpl.nasa.gov/api/horizons.api", params=params, timeout=60)
result = r.json()["result"]
table = result.split("$$SOE")[1].split("$$EOE")[0]
for line in table.strip().splitlines():
    print(line)
Look up an asteroid orbitPython
import requests

# Look up any asteroid or comet by name or designation
r = requests.get("https://ssd-api.jpl.nasa.gov/sbdb.api",
                 params={"sstr": "Bennu", "phys-par": "1"}, timeout=30)
r.raise_for_status()
d = r.json()
obj = d["object"]
elements = {e["name"]: e["value"] for e in d["orbit"]["elements"]}
print(obj["fullname"], "| class:", obj["orbit_class"]["name"])
print("semi-major axis (au):", elements["a"], "| eccentricity:", elements["e"])
print("near-Earth object:", obj["neo"], "| hazardous:", obj["pha"])
Search fire safety reportsPython
import requests

# Search NASA technical reports on microgravity combustion
params = {"q": "microgravity flame spread spacecraft fire safety", "page.size": 5}
r = requests.get("https://ntrs.nasa.gov/api/citations/search", params=params, timeout=60)
r.raise_for_status()
data = r.json()
print("total matches:", data["stats"]["total"])
for rec in data["results"]:
    print(rec["id"], "|", rec["title"][:90])
    # Record page: https://ntrs.nasa.gov/citations/<id>
Search NASA photos in the browserJavaScript
// No key, CORS enabled: works directly in the browser
const q = encodeURIComponent("Apollo 15 lunar roving vehicle");
const res = await fetch(`https://images-api.nasa.gov/search?q=${q}&media_type=image`);
const { collection } = await res.json();
console.log("hits:", collection.metadata.total_hits);
for (const item of collection.items.slice(0, 5)) {
  const meta = item.data[0];
  const thumb = item.links?.[0]?.href;
  console.log(meta.nasa_id, "|", meta.title, "|", thumb);
}

Related 2025 winners

Matched by theme. Study how they scoped the problem.

NASA's 2025 winners announcement