# CelesTrak

> Track satellites with CelesTrak: get the latest orbital elements (the data in TLEs) for a satellite, a group such as space stations, GPS or Starlink, or a launch, with each orbit's period, apogee and perigee, and look satellites up in the satellite catalog for their owner, launch and status. No account or API key required.

App · 4 actions. Web page: https://docs.lodol.com/docs/integrations/celestrak

## Actions

### Get orbital elements

Get a satellite's latest orbital elements (the data in a TLE) from its NORAD catalog number, plus its orbital period, apogee and perigee worked out from them. A number CelesTrak has no data for comes back with 'found' set to false rather than failing the step. No API key required.

**Inputs**

- NORAD catalog number (`catalog_number`, text, required): The satellite's NORAD catalog number, e.g. 25544 for the International Space Station or 20580 for the Hubble Space Telescope.

**Outputs**

- `apogee_km` (number): Highest altitude above the Earth's surface, in km (worked out).
- `argument_of_pericenter_deg` (number): Argument of perigee, in degrees.
- `bstar` (number): The SGP4 drag term (B*), per Earth radius.
- `catalog_number` (number): Its NORAD catalog number, e.g. 25544.
- `classification` (text): 'U' for unclassified.
- `eccentricity` (number): The orbit's eccentricity: 0 is a circle.
- `element_set_number` (number): The element set number.
- `epoch` (text): When the elements are for, UTC, ISO 8601.
- `found` (true/false): True when CelesTrak has data for this catalog number. False means it has none, and every other detail is empty.
- `inclination_deg` (number): The orbit's tilt to the equator, in degrees.
- `international_designator` (text): Its international designator (launch year, launch number and piece), e.g. '1998-067A'.
- `mean_anomaly_deg` (number): Mean anomaly at the epoch, in degrees.
- `mean_motion_ddot` (number): Second derivative of mean motion (rev/day³), as in a TLE.
- `mean_motion_dot` (number): First derivative of mean motion (rev/day²), as in a TLE.
- `mean_motion_rev_per_day` (number): Orbits per day.
- `name` (text): The satellite's name, e.g. 'ISS (ZARYA)'.
- `perigee_km` (number): Lowest altitude above the Earth's surface, in km (worked out).
- `period_minutes` (number): How long one orbit takes, in minutes (worked out from the mean motion).
- `ra_of_ascending_node_deg` (number): Right ascension of the ascending node, in degrees.
- `revolution_number` (number): How many orbits it had completed at the epoch.
- `semi_major_axis_km` (number): The orbit's semi-major axis, in km (worked out).

**Example output**

```json
{
  "apogee_km": 424.6,
  "argument_of_pericenter_deg": 265.8514,
  "bstar": 0.00010980148,
  "catalog_number": 25544,
  "classification": "U",
  "eccentricity": 0.00067551,
  "element_set_number": 999,
  "epoch": "2026-10-15T19:43:34.186944",
  "found": true,
  "inclination_deg": 51.6317,
  "international_designator": "1998-067A",
  "mean_anomaly_deg": 94.1703,
  "mean_motion_ddot": 0.0,
  "mean_motion_dot": 5.58e-05,
  "mean_motion_rev_per_day": 15.48879905,
  "name": "ISS (ZARYA)",
  "perigee_km": 415.4,
  "period_minutes": 92.97,
  "ra_of_ascending_node_deg": 63.1136,
  "revolution_number": 59045,
  "semi_major_axis_km": 6798.1
}
```

### Get satellite catalog record

Get a satellite's entry in the satellite catalog (SATCAT) from its NORAD catalog number: what it is, who owns it, when and where it was launched, whether it is operational or has re-entered, its orbit and its radar size. No API key required.

**Inputs**

- NORAD catalog number (`catalog_number`, text, required): The satellite's NORAD catalog number, e.g. 25544 for the International Space Station or 20580 for the Hubble Space Telescope.

**Outputs**

- `apogee_km` (number): Apogee altitude, in km.
- `catalog_number` (number): Its NORAD catalog number.
- `data_status_code` (text): Empty normally; 'NCE', 'NIE' or 'NEA' when no current orbital data exists.
- `decay_date` (text): When it re-entered, YYYY-MM-DD; empty while it is in orbit.
- `found` (true/false): True when CelesTrak has data for this catalog number. False means it has none, and every other detail is empty.
- `inclination_deg` (number): Orbital inclination, in degrees.
- `international_designator` (text): Its international designator, e.g. '1998-067A'.
- `launch_date` (text): Launch date, YYYY-MM-DD.
- `launch_site` (text): The launch site's code, e.g. 'TYMSC' (Baikonur).
- `name` (text): The satellite's name, e.g. 'ISS (ZARYA)'.
- `object_type` (text): 'PAY' (payload), 'R/B' (rocket body), 'DEB' (debris) or 'UNK'.
- `object_type_name` (text): The object type in words, e.g. 'Payload'.
- `operational_status` (text): The status in words: Operational, Nonoperational, Partially operational, Backup, Spare, Extended mission, Decayed or Unknown.
- `operational_status_code` (text): CelesTrak's status code, e.g. '+' or '-'.
- `orbit_center` (text): What it orbits, e.g. 'EA' (Earth), 'MO' (Moon), 'SU' (Sun).
- `orbit_type` (text): 'ORB' (orbiting), 'LAN' (landed), 'IMP' (impacted), 'DOC' (docked) or 'R/T' (round trip).
- `owner` (text): The owning country or organisation's code, e.g. 'US' or 'ISS'.
- `perigee_km` (number): Perigee altitude, in km.
- `period_minutes` (number): Orbital period, in minutes.
- `radar_cross_section_m2` (number): Radar cross section, in square metres, a rough size.

**Example output**

```json
{
  "apogee_km": 425.0,
  "catalog_number": 25544,
  "data_status_code": null,
  "decay_date": null,
  "found": true,
  "inclination_deg": 51.63,
  "international_designator": "1998-067A",
  "launch_date": "1998-11-20",
  "launch_site": "TYMSC",
  "name": "ISS (ZARYA)",
  "object_type": "PAY",
  "object_type_name": "Payload",
  "operational_status": "Operational",
  "operational_status_code": "+",
  "orbit_center": "EA",
  "orbit_type": "ORB",
  "owner": "ISS",
  "perigee_km": 415.0,
  "period_minutes": 92.97,
  "radar_cross_section_m2": 399.0524
}
```

### Search orbital elements

Get the latest orbital elements for a whole group of satellites (space stations, GPS, weather, Starlink ...), every satellite whose name contains some text, or every object from one launch. Each comes with its period, apogee and perigee. No API key required.

**Inputs**

- Group (`group`, text): One of CelesTrak's groups of satellites. Set exactly one of Group, Name or Launch. One of: `stations` (Space stations), `visual` (100 (or so) brightest), `last-30-days` (Last 30 days' launches), `active` (Active satellites), `analyst` (Analyst satellites), `weather`, `resource` (Earth resources), `sar` (Synthetic aperture radar), `sarsat` (Search & rescue (SARSAT)), `dmc` (Disaster monitoring), and 37 more.
- Name contains (`name`, text): Satellites whose name contains this, e.g. STARLINK or HST. Set exactly one of Group, Name or Launch.
- Launch (`launch`, text): Every object from one launch, by its international designator, YYYY-NNN, e.g. 1998-067 (the ISS's launch). Set exactly one of Group, Name or Launch.
- Number of results (`limit`, number): How many satellites to return, 1 to 500. Defaults to 25. From 1 to 500.

**Outputs**

- `count` (number): How many are in this result (at most the limit).
- `satellites` (list): The matching satellites' orbital elements.
- `total` (number): How many satellites matched in all.

**Example output**

```json
{
  "count": 1,
  "satellites": [
    {
      "apogee_km": 424.6,
      "argument_of_pericenter_deg": 265.8514,
      "bstar": 0.00010980148,
      "catalog_number": 25544,
      "classification": "U",
      "eccentricity": 0.00067551,
      "element_set_number": 999,
      "epoch": "2026-10-15T19:43:34.186944",
      "inclination_deg": 51.6317,
      "international_designator": "1998-067A",
      "mean_anomaly_deg": 94.1703,
      "mean_motion_ddot": 0.0,
      "mean_motion_dot": 5.58e-05,
      "mean_motion_rev_per_day": 15.48879905,
      "name": "ISS (ZARYA)",
      "perigee_km": 415.4,
      "period_minutes": 92.97,
      "ra_of_ascending_node_deg": 63.1136,
      "revolution_number": 59045,
      "semi_major_axis_km": 6798.1
    }
  ],
  "total": 14
}
```

### Search satellite catalog

Search the satellite catalog (SATCAT) by group, name or launch, optionally only payloads, only objects still in orbit or only active satellites, and get each one's owner, launch, status and orbit. No API key required.

**Inputs**

- Group (`group`, text): One of CelesTrak's groups of satellites. Set exactly one of Group, Name or Launch. One of: `stations` (Space stations), `visual` (100 (or so) brightest), `last-30-days` (Last 30 days' launches), `active` (Active satellites), `analyst` (Analyst satellites), `weather`, `resource` (Earth resources), `sar` (Synthetic aperture radar), `sarsat` (Search & rescue (SARSAT)), `dmc` (Disaster monitoring), and 37 more.
- Name contains (`name`, text): Satellites whose name contains this, e.g. STARLINK or HST. Set exactly one of Group, Name or Launch.
- Launch (`launch`, text): Every object from one launch, by its international designator, YYYY-NNN, e.g. 1998-067 (the ISS's launch). Set exactly one of Group, Name or Launch.
- Payloads only (`payloads_only`, true/false): Leave out rocket bodies and debris.
- Still in orbit only (`on_orbit_only`, true/false): Leave out objects that have re-entered.
- Active satellites only (`active_only`, true/false): Only payloads that are currently operational.
- Number of results (`limit`, number): How many satellites to return, 1 to 500. Defaults to 25. From 1 to 500.

**Outputs**

- `count` (number): How many satellites were returned.
- `satellites` (list): The matching catalog records.

**Example output**

```json
{
  "count": 1,
  "satellites": [
    {
      "apogee_km": 425.0,
      "catalog_number": 25544,
      "data_status_code": null,
      "decay_date": null,
      "inclination_deg": 51.63,
      "international_designator": "1998-067A",
      "launch_date": "1998-11-20",
      "launch_site": "TYMSC",
      "name": "ISS (ZARYA)",
      "object_type": "PAY",
      "object_type_name": "Payload",
      "operational_status": "Operational",
      "operational_status_code": "+",
      "orbit_center": "EA",
      "orbit_type": "ORB",
      "owner": "ISS",
      "perigee_km": 415.0,
      "period_minutes": 92.97,
      "radar_cross_section_m2": 399.0524
    }
  ]
}
```
