Your first OrbitalWiki API request
Four real requests against a live satellite catalog, with no signup. Read the response envelope, filter a list, search by alias, and find out what your requests cost before you write a loop.
- Runtime
- 15 min
- API requests
- 4
Download
.ipynb file. Nothing executes until you run it.
Anonymous callers share 50 requests per day per network. A free account raises that to 1,000 per day. Each notebook states what one full run costs.
How to run it
- 1Install the packages listed above, for example: pip install requests pandas matplotlib
- 2Open Jupyter (jupyter lab) with the downloaded .ipynb, or upload it to any hosted notebook service.
- 3Run the cells top to bottom. No API key is needed; add one in the first cell if you want the higher limit.
What you will learn
- Make an authenticated-optional HTTP request to a public REST API and parse the JSON.
- Read the object / data / meta envelope and find the licence and source attribution in it.
- Use a filter and a page total to answer a counting question without downloading the rows.
- Read the rate-limit headers and size a script against them before writing a loop.
Before you start
- Basic Python: variables, functions, dictionaries.
- No account, no API key, no prior orbital knowledge.
Python packages
pip install requests pandas
Which data
The live OrbitalWiki catalog, not a pinned release. Counts change between runs, so record the access date rather than treating an output as fixed.
Endpoints it calls
Every request the notebook makes, and why. Nothing here is illustrative: these are the calls it runs.
GET /api/v1/statsCatalogue totals and object-class composition in one request.GET /api/v1/satellites/{norad_cat_id}One full record, used here for the ISS (25544).GET /api/v1/satellitesA filtered, paginated list; also demonstrates meta.total.GET /api/v1/searchFree-text search that reports why each result matched.
From the notebook
Excerpts copied verbatim from the file. A test fails if the notebook changes and these do not.
stats = get("/stats")["data"]
print("objects tracked: ", stats["total_objects"])
print("active payloads: ", stats["active_payloads"])
print("with current OMM: ", stats["with_omm"])
print("last source fetch:", stats["latest_source_fetched_at"])
print()
print("by object class:", stats["by_object_class"])
print("budget:", budget())What you end up with
- Catalogue totals printed with the honest timestamp note explaining why there is no single "catalog updated at".
- A pandas DataFrame of geostationary objects with periods you can sanity-check against one sidereal day.
- Search results annotated with matched_on, showing why "hubble" reaches a record named HST.
- Your remaining request budget, read from the response headers.
How to cite
Cite the endpoint and the access date, because the catalog is live: "OrbitalWiki, /api/v1/stats, retrieved 2026-08-04, https://www.orbitalwiki.com". The database is ODbL-1.0; the upstream sources named in meta.sources keep their own terms.
Sources
- OrbitalWiki API, machine-readable OpenAPI 3.1 spec (endpoints and parameters)Retrieved 2026-08-04Confirmed