← All projects

Satellite Tracker

An API for where any active satellite is now, and when it will pass overhead.

pythonfastapispace

A JSON API that answers two questions for any of the roughly 10,000 active satellites: where is it right now, and when will it next pass over me? The demo puts it on a 3D globe.

I built it partly out of interest in space, and partly as a way into systems and radio work. The software comes first: knowing where a satellite is and when it will be overhead is the groundwork for actually listening to one.

Coming soon A public version of the API, with free keys so anyone can use it in their own projects. For now you can try it through the demo.

How it works

Orbital data comes from CelesTrak as general perturbations (GP) elements, cached for six hours. Skyfield runs the SGP4 propagation model on those elements to get a position at any moment. From there, two endpoints:

  • /v1/position returns the point on Earth directly below the satellite, its altitude and speed, plus where to look from your location (elevation, azimuth, distance).
  • /v1/next-pass finds the next rise, peak and set above a minimum elevation, up to 72 hours out.

Satellites can be looked up by name, by part of a name (noaa 20), or by NORAD catalog number (25544 is the ISS).

curl "/v1/position?satellite=25544&lat=40.015&lon=-105.27"

Stack

  • API: Python 3.13, FastAPI, Uvicorn, Skyfield
  • Keys: SQLite, managed with a small CLI
  • Demo: Vue 3 + TypeScript, globe.gl / three.js, OpenStreetMap Nominatim for place search
  • Hosting: Docker Compose on a Proxmox VM behind a Cloudflare Tunnel

What I learned

This was my introduction to the basics of spaceflight: how orbits are described, and how to work with TLE data to predict where a satellite will be and when it will pass overhead. It also showed me how quickly that data goes out of date, which is why the API refreshes it every six hours and reports how old it is.

What’s next

Following satellites with a directional antenna: using the pass predictions to point real hardware at the sky and track a satellite as it crosses overhead.