Rocket launches as one flat table
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.