Satellite Tracking
Track any satellite in Earth orbit with real-time position data, orbital parameters, and historical trajectories.
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
| Category | Count | Sources |
|---|
| Active satellites | 10,000+ | Space-Track, commercial |
| Debris objects | 35,000+ | Space-Track |
| Total tracked | 45,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}
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.
Filter by object type: PAYLOAD, ROCKET_BODY, DEBRIS
Filter by operator (e.g., “SpaceX”, “OneWeb”)
Filter by constellation (e.g., “Starlink”, “OneWeb”)
Pagination cursor for next page
Example: List Starlink Satellites
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
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
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']}")
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
| Endpoint | Free | Pro | Enterprise |
|---|
| Get Satellite | 10/min | 100/min | Custom |
| List Satellites | 5/min | 50/min | Custom |
| Get Trajectory | 2/min | 20/min | Custom |
Next Steps