Science & Math — entry 025 of 28
TLE
The TLE API serves NORAD two-line-element orbital data for tracked satellites, including a continuously updated record for the ISS, in a lightweight Hydra/JSON-LD format. It's a free, keyless single-developer project with no separate documentation site beyond its own browsable endpoints.
The TLE API is a single Hydra/JSON-LD resource collection: GET /api/tle/{satelliteId} returns one NORAD two-line-element record by ID, and GET /api/tle/ returns a paginated collection, optionally narrowed with a search query parameter.
GreatAPIs Score
Auth quickstart
- No account or key required — every route answers a plain, unauthenticated GET.
- The collection route needs the trailing slash:
/api/tle?search=iss301-redirects (with aLocationheader and an HTML meta-refresh body) to/api/tle/?search=iss, confirmed live this run — call the trailing-slash form directly to skip the extra round-trip.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Get the ISS's current orbital elements
GEThttps://tle.ivanstanojevic.me/api/tle/25544
{"@context":"https:\/\/www.w3.org\/ns\/hydra\/context.jsonld","@id":"https:\/\/tle.ivanstanojevic.me\/api\/tle\/25544","@type":"Tle","satelliteId":25544,"name":"ISS (ZARYA)","date":"2026-07-26T09:51:36+00:00","line1":"1 25544U 98067A 26207.41084145 .00010751 00000+0 20166-3 0 9995","line2":"2 25544 51.6317 105.9876 0006941 339.4731 20.5977 15.49181604577830"}Captured byte-for-byte from this run's live probe; line1/line2 are the ISS's current NORAD TLE and are re-fit every few hours, so date/line1/line2 will differ on any later call.
Developer reference
https://tle.ivanstanojevic.me/apiGotchas & limits
- A satellite ID that doesn't exist doesn't 404 with HTML — it returns HTTP 404 with a small JSON body, confirmed live this run against id
999999:{"response":{"message":"Unable to find record with id 999999"}}. - The collection route paginates via
page/page-sizequery params, defaultpage-size20 (confirmed live this run via theparametersblock the response itself echoes back) — it does not return the whole catalogue in one call. The full catalogue was 25,675 satellites (totalItems) at probe time. searchdoes real substring filtering on satellite name, not a no-op: live probes this run against the same collection route returnedtotalItems12,354 forsearch=starlink, 30 forsearch=iss, and 0 (with an emptymemberarray, not an error) for a nonsense term.- CORS is wide open — a live probe with
Origin: https://example.comreturnsAccess-Control-Allow-Origin: *unconditionally, confirmed this run.