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 RotaStellar

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

# Get satellite by name or NORAD ID
iss = client.intelligence.satellite("ISS")  # or "25544"

# Current position
pos = iss.position()
print(f"Location: {pos.lat}, {pos.lon}")
print(f"Altitude: {pos.altitude_km} km")
print(f"Velocity: {pos.velocity_km_s} km/s")

# Orbital parameters
orbit = iss.orbit()
print(f"Period: {orbit.period_min} minutes")
print(f"Inclination: {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.intelligence.satellites(
    constellation="Starlink",
    limit=100
)

for sat in starlinks:
    pos = sat.position()
    print(f"{sat.name}: {pos.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)

pos = iss.position(at=future)
print(f"Predicted: {pos.lat}, {pos.lon}")

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 = iss.trajectory(
    start=datetime.utcnow(),
    end=datetime.utcnow() + timedelta(hours=24),
    interval_sec=300  # Every 5 minutes
)

for point in trajectory.points:
    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