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 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}
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.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
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
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}")
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