/ writing / space

Rocket launches as one flat table

2026-08-18 · cynix · 3 min read

The Space Devs' Launch Library 2 is the cleanest free source for rocket launches — upcoming, previous, and historical, with status, launch windows, rockets, providers, pads, and orbits. It is also a JSON onion: a launch is a list object containing a rocket that contains a configuration, a provider that contains a type, a pad that contains a location that contains a country. Pull a launch and you get four levels of nesting before you reach the country code.

Launch Library 2 — Rocket Launch Tracker flattens it into one row per launch. Upcoming, previous, or a single launch by ID:

// next launches
{ "mode": "upcoming", "limit": 10 }

// past launches
{ "mode": "previous", "limit": 10 }

// one launch by its UUID
{ "mode": "by_id", "search": "ef02e2cf-e617-4b38-a526-951ac9204b0a" }

Each record: name, status, net (launch time), window_start/window_end, rocket_name, provider_name, mission_name, orbit_name, pad_name, location_name, country_code, image, and the source url. All strings, all flat.

Why flatten it

The list endpoint returns stubs; the detailed endpoint returns the full object graph. The actor always requests detailed mode so the nested fields actually populate — no manual second call per launch. One row per launch drops straight into a dashboard, a "next launch" widget, or a scheduled monitor that diffs IDs to spot scrubs and slips.

Robust by default

Launch Library 2 rate-limits politely, so the actor retries with backoff and normalizes nulls to empty strings. A run that finds nothing returns zero rows, not an error. No API key required.

Try it: Launch Library 2 on Apify — live launches, no key, agent-friendly.