Skip to main content

Satellite Tracking

Track any satellite in Earth orbit with real-time position data, orbital parameters, and historical trajectories.
Status: Early Access — Request API key

Overview

The Satellite Tracking API provides:
  • Real-time positions — Current lat/lon/altitude for any tracked object
  • Orbital parameters — Keplerian elements, period, inclination
  • Propagation — Future position predictions
  • Historical data — Past trajectory archive

Catalog Coverage

CategoryCountSources
Active satellites10,000+Space-Track, commercial
Debris objects35,000+Space-Track
Total tracked45,000+Multiple sources

Quick Start

from rotastellar import RotaStellarClient

client = RotaStellarClient(api_key="rs_...")

# Get satellite by NORAD ID
iss = client.get_satellite("25544")  # ISS

# Current position
print(f"Location: {iss.position.latitude}, {iss.position.longitude}")
print(f"Altitude: {iss.position.altitude_km} km")

# Orbital parameters
print(f"Period: {iss.orbit.orbital_period_minutes} minutes")
print(f"Inclination: {iss.orbit.inclination_deg} deg")

Get Satellite

Retrieve information about a specific satellite.
GET /v1/satellites/{satellite_id}
satellite_id
string
required
NORAD catalog ID or common name (e.g., “25544” or “ISS”)

Response

{
  "id": "25544",
  "name": "ISS (ZARYA)",
  "names": ["ISS", "ZARYA", "INTERNATIONAL SPACE STATION"],
  "type": "PAYLOAD",
  "operator": "NASA/Roscosmos",
  "launch_date": "1998-11-20",
  "position": {
    "lat": 41.264,
    "lon": -95.123,
    "altitude_km": 420.5,
    "velocity_km_s": 7.66,
    "timestamp": "2026-01-21T12:00:00Z"
  },
  "orbit": {
    "period_min": 92.9,
    "inclination_deg": 51.64,
    "apogee_km": 422,
    "perigee_km": 418,
    "eccentricity": 0.0002
  }
}

List Satellites

Query the satellite catalog with filters.
GET /v1/satellites
type
string
Filter by object type: PAYLOAD, ROCKET_BODY, DEBRIS
operator
string
Filter by operator (e.g., “SpaceX”, “OneWeb”)
constellation
string
Filter by constellation (e.g., “Starlink”, “OneWeb”)
limit
integer
default:"100"
Maximum results (1-1000)
cursor
string
Pagination cursor for next page
starlinks = client.list_satellites(
    constellation="Starlink",
    limit=100
)

for sat in starlinks:
    print(f"{sat.name}: {sat.position.altitude_km} km")

Get Position

Get current or predicted position.
GET /v1/satellites/{satellite_id}/position
at
string
ISO 8601 timestamp for prediction (default: now)

Example: Predict Future Position

from datetime import datetime, timedelta

# Where will ISS be in 2 hours?
future = (datetime.utcnow() + timedelta(hours=2)).isoformat()

pos = client.get_satellite_position("25544", at=future)
print(f"Predicted: {pos.latitude}, {pos.longitude}")

Get Trajectory

Get position history or predictions over a time range.
GET /v1/satellites/{satellite_id}/trajectory
start
string
required
Start time (ISO 8601)
end
string
required
End time (ISO 8601)
interval_sec
integer
default:"60"
Time between points in seconds

Example: Get 24-hour Trajectory

from datetime import datetime, timedelta

trajectory = client.get_trajectory(
    satellite_id="25544",
    start=datetime.utcnow().isoformat(),
    end=(datetime.utcnow() + timedelta(hours=24)).isoformat(),
    interval_sec=300  # Every 5 minutes
)

for point in trajectory:
    print(f"{point['timestamp']}: {point['lat']}, {point['lon']}")

Data Formats

Position Object

{
  "lat": 41.264,
  "lon": -95.123,
  "altitude_km": 420.5,
  "velocity_km_s": 7.66,
  "timestamp": "2026-01-21T12:00:00Z"
}

Orbit Object

{
  "epoch": "2026-01-21T00:00:00Z",
  "period_min": 92.9,
  "inclination_deg": 51.64,
  "raan_deg": 123.45,
  "arg_perigee_deg": 234.56,
  "eccentricity": 0.0002,
  "mean_anomaly_deg": 45.67,
  "apogee_km": 422,
  "perigee_km": 418
}

Rate Limits

EndpointFreeProEnterprise
Get Satellite10/min100/minCustom
List Satellites5/min50/minCustom
Get Trajectory2/min20/minCustom

Next Steps