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
Conjunction Analysis Analyze collision risks between objects
Pattern Detection Detect anomalies in satellite behavior