Skip to content
SatelliteIndex

Developers

The SatelliteIndex API

Every page on this site is rendered from the public JSON API documented here — there is no private dataset behind it. Free, no key required during the MVP, rate-limited per client.

Interactive docs (Swagger)OpenAPI 3 schemaStatus

Basics

Base URL: https://www.satelliteindex.io/api/v1. All endpoints are GET, return application/json encoded in UTF-8, and use UTC ISO-8601 timestamps. Units are kilometres, km/s, kilograms, degrees and minutes. Countries are ISO 3166-1 alpha-2 codes. Numbers aggregated by the database may arrive as strings — parse them as decimals.

Satellites can be addressed by slug (iss-zarya-25544), NORAD catalog number (25544) or COSPAR designator (1998-067A). Internal ids are prefixed ULIDs (sat_…) and are stable; NORAD and COSPAR are source identifiers and are kept as such.

curl
curl -s "https://www.satelliteindex.io/api/v1/satellites/25544" | jq '.data | {name, norad_id, status, orbit_class, live}'

Response envelope and pagination

Single resources return { data, meta }; list endpoints add a pagination block. meta.request_id is the id you will find in our server logs if you report a problem; meta.generated_at is the server time of the response (responses may be cached for up to a few minutes).

Shape
{
  "data": [ … ],
  "pagination": { "page": 1, "page_size": 50, "total": 17026, "pages": 341 },
  "meta": { "request_id": "b382117229134a57", "generated_at": "2026-09-11T18:17:53Z" }
}

Errors use the same envelope with an error object: { "error": { "title", "detail", "status" } } and the matching HTTP status (404 unknown entity, 422 invalid parameter, 429 rate limited, 503 upstream/database unavailable). Paginate with page and page_size (1–200; sitemap feeds allow more).

Endpoints

Satellites

  • GET/satellites

    Paginated catalog with filters (status, object_type, orbit_class, mission_type, country, operator, constellation, launch, launch_site, on_orbit, has_gp, launched_after/before, decayed_after, min/max_perigee, tag, q, sort).

    curl -s "https://www.satelliteindex.io/api/v1/satellites?status=ACTIVE&orbit_class=LEO&sort=-launch_date&page_size=25"
  • GET/satellites/facets

    Facet counts (status, object type, orbit class, mission type, country, constellation) for the same filters.

    curl -s "https://www.satelliteindex.io/api/v1/satellites/facets?constellation=starlink"
  • GET/satellites/{ident}

    One object by slug, NORAD id or COSPAR id — canonical record, latest elements, live position, provenance, freshness, events, siblings.

    curl -s "https://www.satelliteindex.io/api/v1/satellites/25544"
  • GET/satellites/{ident}/positionrate bucket: position

    Geodetic position (lat, lon, altitude, velocity) at `time` (default now), propagated on demand with SGP4.

    curl -s "https://www.satelliteindex.io/api/v1/satellites/25544/position"
  • GET/satellites/{ident}/liverate bucket: position

    Lightweight live position for polling UIs (30 s cache).

    curl -s "https://www.satelliteindex.io/api/v1/satellites/25544/live"
  • GET/satellites/{ident}/track

    Ground track: points `before`/`after` now (minutes) every `step` seconds, with a `future` flag.

    curl -s "https://www.satelliteindex.io/api/v1/satellites/25544/track?before=45&after=90&step=60"
  • GET/satellites/{ident}/orbit

    Orbital element history (append-only), newest first.

    curl -s "https://www.satelliteindex.io/api/v1/satellites/25544/orbit?limit=50"
  • GET/satellites/{ident}/history

    Field change log (status, operator, orbit class…) plus a daily altitude/period/inclination series.

    curl -s "https://www.satelliteindex.io/api/v1/satellites/25544/history"

Endpoints

Entities

  • GET/constellations

    Constellations with fleet counts, growth and activity score.

    curl -s "https://www.satelliteindex.io/api/v1/constellations?sort=-active"
  • GET/constellations/{slug}

    Constellation detail: shells, histograms, launches, memberships, match patterns and CelesTrak groups used.

    curl -s "https://www.satelliteindex.io/api/v1/constellations/starlink"
  • GET/operators

    Operators / organizations with payload counts.

    curl -s "https://www.satelliteindex.io/api/v1/operators?sort=-active_payloads"
  • GET/operators/{slug}

    Operator detail: fleet, constellations, launches, distributions.

    curl -s "https://www.satelliteindex.io/api/v1/operators/spacex"
  • GET/countries

    Countries ranked by active payloads, on-orbit objects or debris.

    curl -s "https://www.satelliteindex.io/api/v1/countries?sort=active"
  • GET/countries/{ident}

    Country detail by ISO code or slug.

    curl -s "https://www.satelliteindex.io/api/v1/countries/CA"

Endpoints

Launches, debris, reentries

  • GET/launches

    Launches derived from international designators, with payload/object counts.

    curl -s "https://www.satelliteindex.io/api/v1/launches?year=2026&sort=-launch_date"
  • GET/launches/timeline

    Launches and payloads per year and month, plus launch sites.

    curl -s "https://www.satelliteindex.io/api/v1/launches/timeline"
  • GET/launches/{cospar}

    One launch by designator prefix (YYYY-NNN) with all catalogued objects.

    curl -s "https://www.satelliteindex.io/api/v1/launches/1998-067"
  • GET/launch-sites

    Launch sites with coordinates and counts.

    curl -s "https://www.satelliteindex.io/api/v1/launch-sites"
  • GET/launch-sites/{slug}

    Launch site detail with yearly series and recent launches.

    curl -s "https://www.satelliteindex.io/api/v1/launch-sites/kennedy-space-center"
  • GET/debris

    Debris and rocket-body totals by country, altitude, launch; growth and decay series.

    curl -s "https://www.satelliteindex.io/api/v1/debris"
  • GET/reentries

    Recently decayed objects (paginated), monthly series and a low-perigee watch list.

    curl -s "https://www.satelliteindex.io/api/v1/reentries?days=30"

Endpoints

Events and statistics

  • GET/events

    Detected events (launch catalogued, decay, status change, orbit change…) with linked entities.

    curl -s "https://www.satelliteindex.io/api/v1/events?type=DECAY&page_size=20"
  • GET/events/{event_id}

    One event.

    curl -s "https://www.satelliteindex.io/api/v1/events/evt_…"
  • GET/stats

    Latest global statistics snapshot: totals, by orbit class / object type / mission, yearly series, top entities, orbital buckets, connector state.

    curl -s "https://www.satelliteindex.io/api/v1/stats"
  • GET/rankings

    Ranked lists by metric (e.g. active_payloads, debris, launches_365d).

    curl -s "https://www.satelliteindex.io/api/v1/rankings?metric=active_payloads&limit=20"
  • GET/orbit/density

    Orbital density: objects per perigee bucket, 25 km LEO profile, 5° inclination profile. Informational, not a risk metric.

    curl -s "https://www.satelliteindex.io/api/v1/orbit/density"

Endpoints

Orbit (batch)

  • GET/orbit/positionsrate bucket: positions

    Positions of every tracked object at t0 and t0+step, as compact parallel arrays (see below).

    curl -s "https://www.satelliteindex.io/api/v1/orbit/positions?step=60"

Endpoints

Transparency

  • GET/sources

    Source catalog with license, attribution, connectors, snapshot and provenance counts, freshness.

    curl -s "https://www.satelliteindex.io/api/v1/sources"
  • GET/sources/status

    Connector health (last success, schedule, failures, circuit breaker) and orbital element age.

    curl -s "https://www.satelliteindex.io/api/v1/sources/status"
  • GET/methodology

    Versioned metric definitions, constellation rules and owner-code table.

    curl -s "https://www.satelliteindex.io/api/v1/methodology"
  • GET/health

    Liveness + component checks (also at /health without the prefix).

    curl -s "https://www.satelliteindex.io/api/v1/health"

Batch positions format

/orbit/positions returns the position of every object in the propagator (tens of thousands) at two instants, t0 and t1 = t0 + step_s, so a client can interpolate smoothly between polls. To keep the payload small the response is a set of parallel arrays rather than one object per satellite: index i of each array describes the same object.

Fields
{
  "t0": "…", "t1": "…", "step_s": 60, "count": N, "total_tracked": N,
  "fields": ["norad", "cls", "mission", "active", "pos", "vel"],
  "norad":   [25544, …],            // NORAD id per object
  "cls":     [0, …],                // index into legend.cls   (orbit class)
  "mission": [8, …],                // index into legend.mission
  "active":  [1, …],                // 1 = ACTIVE status
  "pos":     [lat0, lon0, alt0, lat1, lon1, alt1, …],   // 6 numbers per object (deg, deg, km)
  "vel":     [v0, v1, …],           // km/s at t0 and t1
  "legend":  { "cls": ["LEO","MEO","GEO","HEO","OTHER"], "mission": [ … ] }
}

Positions are derived from the latest element set of each object and inherit its age; check /sources/status for the median element age before relying on them.

Rate limits

Limits are applied per client IP over a sliding 60-second window. Exceeding a bucket returns 429 Too Many Requests with the bucket name in the error detail. Cache responses on your side; most datasets change hourly at most.

BucketRequests / minApplies to
default600every endpoint not listed below
search120/search, /search/suggest
position240/satellites/{ident}/position, /live
positions60/orbit/positions (batch)

Attribution and terms

If you republish data from this API you must keep the upstream attributions. The orbital elements and catalog come from CelesTrak, whose terms require credit: “Orbital data courtesy of CelesTrak.” Derived values (orbit class, mission type, constellation membership, activity score, density) should be credited to SatelliteIndex with a link to the methodology. The full source list with licenses is on /sources.

SatelliteIndex aggregates public and licensed orbital, governmental, scientific, and operator data from multiple sources. Orbital data courtesy of CelesTrak. Derived classifications (constellation membership, orbit class, mission type) follow the published methodology.

SatelliteIndex.io is an informational platform. Orbital positions, predictions, conjunction information, reentry predictions, and derived metrics may contain delays or uncertainty and must not be used as the sole source for safety-critical, navigation, mission-control, military, or operational decisions.

Full terms of use.

Keys and tiers

The API is free during the MVP and requires no key. API keys, higher rate limits and paid tiers for heavy or commercial use will come later; the public endpoints documented here will keep a free tier. If you are building on the API, say hello at contact@spboucher.ai so we can warn you before any breaking change.