Science & Math — entry 025 of 28

TLE

Verified Jul 2026

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.

satellitesorbital-dataspaceopen-data
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score74out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs0/20No docs or spec available
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 74 on greatapis.com
<a href="https://greatapis.com/api/tle/"><img src="https://greatapis.com/badge/tle.svg" alt="Scored 74 on greatapis.com"></a>

Auth quickstart

  1. No account or key required — every route answers a plain, unauthenticated GET.
  2. The collection route needs the trailing slash: `/api/tle?search=iss` 301-redirects (with a `Location` header 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.
Stored keyNo key stored

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

200 application/json

{"@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

Base URLhttps://tle.ivanstanojevic.me/api

Gotchas & 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-size` query params, default `page-size` 20 (confirmed live this run via the `parameters` block 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.
  • `search` does real substring filtering on satellite name, not a no-op: live probes this run against the same collection route returned `totalItems` 12,354 for `search=starlink`, 30 for `search=iss`, and 0 (with an empty `member` array, not an error) for a nonsense term.
  • CORS is wide open — a live probe with `Origin: https://example.com` returns `Access-Control-Allow-Origin: *` unconditionally, confirmed this run.