Table · launches
Launch log
Every launch in GCAT's launch list, one row per launch since 1942: orbital and deep-space launches with their international designation, plus missiles, sounding rockets and other suborbital flights. Each row has the date and time at the precision GCAT knows it, the vehicle, launch site, agency and outcome.
- Updates
- Daily
- Coverage
- —
- Current version
- —
- Last published
- —
- Validation
- —
- License
- CC BY 4.0
- Commercial use
- Allowed
Preview
Use the API
The examples follow the rows picked above. See the docs for versions, caching and errors.
curl
# All rows (.json or .csv)
curl -s "https://api.satellitedata.dev/v1/launches/table/all.json"
# The whole table in one file
curl -sO "https://api.satellitedata.dev/v1/launches/download/launches.csv" Python (polars)
import polars as pl
# All rows
df = pl.read_csv("https://api.satellitedata.dev/v1/launches/table/all.csv")
# The whole table
everything = pl.read_parquet("https://api.satellitedata.dev/v1/launches/download/launches.parquet") JavaScript
const res = await fetch("https://api.satellitedata.dev/v1/launches/table/all.json");
if (!res.ok) throw new Error((await res.json()).detail); // errors are problem+json
const { meta, rows } = await res.json();
console.log(meta.rows, rows[0]); Downloads
The whole dataset in one file. Parquet keeps the column types and is much smaller.
- launches.csv CSV
- launches.parquet Parquet
Schema
Rows are identified by launch_tag.
The rows are also split into one file per value of launch_class.
Tables up to 50,000 rows also have a single table/all file.
| Column | Type | Unit | Can be empty | Description |
|---|---|---|---|---|
| launch_tag key | text | — | no | COSPAR designation for orbital launches (1998-067; Harvard style before 1963, 1957 ALP), GCAT's own yyyy-Xnnn tag for others (1942-A01, 1957-F01 failed orbital) |
| launch_class partition | text | — | no | LaunchCode category: orbital, deep-space, missile, lofted-missile, near-orbital, test-rocket, atmospheric, suborbital, high-altitude-sounding, reentry-test, off-earth (from another world), crewed-suborbital, not-a-launch (GCAT placeholder entries) |
| launch_date | date (YYYY-MM-DD) | — | yes | UTC date of first motion; null when GCAT knows it less precisely than a day, or gives a day after its own file date (a typo, e.g. 2026-M02 dated 2027 Jan 3); see launch_date_text |
| launch_time | datetime (ISO 8601, UTC) | — | yes | UTC time at exactly the precision GCAT gives (to the minute, second or millisecond); null when it is less precise or uncertain |
| launch_date_text | text | — | yes | The date exactly as GCAT writes it, in its Vague Date format ('1957 Oct 4 1928:34', '1944 Jan', '1971?') |
| launch_date_precision | text | — | yes | Precision of launch_date_text: millisecond, second, minute, hour, day, month, quarter, year, ...; '(uncertain)' when it ends in ?, which widens it by one unit each way. Null if GCAT's text is not a valid vague date |
| launch_jd | number | JD | no | GCAT's Julian Date (UTC) of launch, for sorting; nominal when the date is vague |
| lv_type | text | — | yes | Launch vehicle type |
| lv_variant | text | — | yes | — |
| flight_id | text | — | yes | Serial number or mission number of this flight |
| flight | text | — | yes | — |
| mission | text | — | yes | — |
| flight_code | text | — | yes | — |
| platform | text | — | yes | Mobile launch platform (ship, submarine, aircraft), if any |
| launch_site | text | — | yes | GCAT launch site code |
| launch_pad | text | — | yes | — |
| ascent_site | text | — | yes | Where the rocket actually ignited, when different (air launches: the drop zone) |
| ascent_pad | text | — | yes | — |
| apogee_km | number | km | yes | Highest altitude of a suborbital flight, or apogee of the initial orbit |
| apogee_estimated | true / false | — | yes | GCAT marks the apogee with ? (a guess from the vehicle's capability) |
| orbital_payload_t | number | t | no | Payload mass delivered to orbit (0 when nothing reached orbit); GCAT generates it from its payload tables and asks users to treat it with caution |
| agency | text | — | no | GCAT org code of the launch service provider |
| agency_name | text | — | yes | — |
| launch_code | text | — | no | GCAT LaunchCode: category letter plus outcome (OS, OF, MS, OS80, ...) |
| outcome | text | — | yes | success (propulsive success; the payload may still have failed), failure, unknown, pad-explosion or pad-abort. Null for not-a-launch entries |
| success_percent | integer | — | yes | GCAT's partial-success score for reliability statistics (OS80 -> 80); null for plain S or F |
| category | text | — | yes | For orbital launches GCAT's launch profile code (Sat LEO O); for others the kind of flight (Meteo, Aeron, Test, Weapon) |
Source and license
- Source
- General Catalog of Artificial Space Objects (GCAT), launch list
- Publisher
- Jonathan C. McDowell
- License
- Creative Commons Attribution 4.0 (
CC-BY-4.0) - Commercial use
- Allowed
Credit the source with this exact text:
data from GCAT (J. McDowell, planet4589.org/space/gcat)
Checked every 1 day. If the source hasn't changed in 14 days, the status page flags it as stale.
Endpoints
Every URL for this dataset. To pin the current version, put it after the id:
/v1/launches@<version>.
The API reference describes each response.
| What | URL |
|---|---|
| Metadata: version, coverage, downloads, validation | /v1/launches |
| Versions and monthly snapshots | /v1/launches/versions |
| Partitions | /v1/launches/locations |
| Rows for one launch_class (JSON) | /v1/launches/table/{launch_class}.json |
| Rows for one launch_class (CSV) | /v1/launches/table/{launch_class}.csv |
| All rows in one file (tables up to 50,000 rows) | /v1/launches/table/all.json |
| Whole dataset (CSV) | /v1/launches/download/launches.csv |
| Whole dataset (Parquet) | /v1/launches/download/launches.parquet |