ABOVE US
Home / API

ABOVE US · DATA ACCESS

A catalog for your projects

Orbital elements and reference knowledge in ready-to-use files. Download a snapshot, keep it locally, and update only when the data changes.

JSON / CSVgzipETag / 304No API key

Five catalog variants

Files are prepared in advance. Each variant offers JSON, CSV, and their gzip versions. The enriched catalog may contain more objects than Space-Track alone. Use the immutable links in the manifest for reproducible downloads.

Current sizes and version appear after the manifest is loaded.

Snapshot version
—
Generated (UTC)
—
Objects
—
VariantJSONJSON + gzipCSVCSV + gzip
spacetrackSpace-Track GP, without CelesTrak enrichment.JSON—JSON.GZ—CSV—CSV.GZ—
catalogMerged orbits and basic fields.JSON—JSON.GZ—CSV—CSV.GZ—
catalog-ruMerged catalog with Russian knowledge.JSON—JSON.GZ—CSV—CSV.GZ—
catalog-enMerged catalog with English knowledge.JSON—JSON.GZ—CSV—CSV.GZ—
catalog-zhMerged catalog with Simplified Chinese knowledge.JSON—JSON.GZ—CSV—CSV.GZ—

Downloads require no account or API key. gzip is a separate compressed file: decompress it before reading. CSV contains flat fields and a summary; detailed facts and image captions are available in JSON. Sizes describe the downloaded files; SHA-256 checksums are available in the manifest.

Requests and efficient downloads

Start with the small manifest. Save its ETag and send it in If-None-Match: HTTP 304 means the local manifest is still current. Download a catalog file only when its version changes.

curl -i 'https://aboveus.space/api/v1/catalog/manifest.json'

curl -i -H 'If-None-Match: "saved-etag"' 'https://aboveus.space/api/v1/catalog/manifest.json'
# 304: keep the local manifest. No response body.
# 429: wait for the Retry-After response header.

Quick JSON download

The --compressed option accepts compressed transfer and automatically saves decompressed JSON.

curl --fail --compressed --output catalog.json.part 'https://aboveus.space/api/v1/catalog/latest/spacetrack.json'

Download a gzip archive

A .json.gz file stays compressed; it does not need --compressed. Decompress the archive before reading.

curl --fail --output catalog.json.gz.part 'https://aboveus.space/api/v1/catalog/latest/spacetrack.json.gz'

On Windows, run these single-line commands with curl.exe instead of curl. Output is saved to .part; rename the file only after a successful download. For recurring updates and SHA-256 verification, use the example below.

Reliable download: use a temporary file

Example for a POSIX shell, curl, and jq. It never replaces a working file with a 304 response, an HTML error, or a partial download. Temporary files are removed on failure.

#!/bin/sh
set -eu
base='https://aboveus.space'
tmp=$(mktemp -d './.aboveus-download.XXXXXX')
trap 'rm -rf -- "$tmp"' EXIT HUP INT TERM

# curl >= 7.68; a missing ETag file is allowed on the first run.
[ -s catalog.json.gz ] && [ -s catalog-manifest.json ] || rm -f catalog.etag
status=$(curl --silent --show-error --connect-timeout 15 --max-time 120 \
  --etag-compare catalog.etag --etag-save "$tmp/etag" \
  --dump-header "$tmp/headers" --output "$tmp/manifest.json" \
  --write-out '%{http_code}' 'https://aboveus.space/api/v1/catalog/manifest.json')
case "$status" in
  304) echo 'Unchanged; keeping local files.'; exit 0 ;;
  200) ;;
  429|503) cat "$tmp/headers" >&2; exit 1 ;; # Honor Retry-After.
  *) echo "Manifest HTTP $status" >&2; exit 1 ;;
esac

# Choose catalog-zh.json.gz, catalog-en.json.gz, or catalog-ru.json.gz for localized knowledge.
file='spacetrack.json.gz'
url=$(jq -er --arg file "$file" '.files[] | select(.name == $file) | .url' "$tmp/manifest.json")
printf '%s' "$url" | grep -Eq '^/api/v1/catalog/snapshots/[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/(spacetrack|catalog|catalog-ru|catalog-en|catalog-zh)\.json\.gz$'
expected=$(jq -er --arg file "$file" '.files[] | select(.name == $file) | .sha256' "$tmp/manifest.json")
printf '%s' "$expected" | grep -Eq '^[0-9a-f]{64}$'
curl --fail --silent --show-error --connect-timeout 15 --max-time 3600 \
  --dump-header "$tmp/download-headers" --output "$tmp/catalog.json.gz" "$base$url" \
  || { cat "$tmp/download-headers" >&2; exit 1; }
printf '%s  %s\n' "$expected" "$tmp/catalog.json.gz" | sha256sum --check -
gzip -t "$tmp/catalog.json.gz"
mv -f "$tmp/catalog.json.gz" catalog.json.gz
mv -f "$tmp/manifest.json" catalog-manifest.json
mv -f "$tmp/etag" catalog.etag
# Change the chosen variant? Remove catalog.etag to force a fresh download.

Limits

Per IP: 30 manifest requests/min; 2 file requests/min, with up to 8 additional requests in a short burst; up to 2 concurrent connections per IP and 8 across the service. File speed is capped at 128 KiB/s. Check the manifest no more often than every 60 minutes.

Do not run parallel download loops. On 429, honor Retry-After; on 503, keep your previous snapshot and try later. Avoid immediate retry loops.

Server responses

200 — data · 304 — unchanged · 404 — unknown or expired release · 429 — rate limit · 503 — export not yet available.

GET downloads the file; HEAD returns headers. CORS permits reading this public API from browser applications.

Schema and field meaning

Schema version and snapshot version are separate. Read fields by name and tolerate additional fields. NORAD identifiers are strings, with no five-digit limit.

FieldTypeMeaning
schemaVersion / versionstring / UUIDJSON envelope schema and snapshot version. Records are in objects[].
generatedAt / sourcesUTC / objectExport generation time and source catalog retrieval times. In the manifest, metadataRevision and knowledgeRevision identify reference knowledge.
noradId / cosparstring / string|nullNORAD ID and international designator. null means missing information, not zero.
namestringSource name; the merged dataset uses the CelesTrak display name when available.
objectType / rawObjectTypeenum / string|nullpayload, rocket-body, debris, or unknown; rawObjectType preserves the source Space-Track classification.
activityenumlisted-active: in the CelesTrak list; assumed-active: Above Us heuristic; unknown: no confirmed status. Always unknown in spacetrack.
orbitClass / countryCode / launchDateenum / string|null / string|nullLEO, MEO, GEO, HEO; catalog owner code; YYYY-MM-DD launch date when known.
epoch / omm.EPOCHUTC stringEpoch of source mean elements, not the time of a current satellite position.
omm.MEAN_MOTION / ECCENTRICITYnumberMean motion: revolutions/day. Eccentricity: dimensionless.
omm.INCLINATION / RA_OF_ASC_NODE / ARG_OF_PERICENTER / MEAN_ANOMALYnumberAngles in degrees.
omm.BSTAR / MEAN_MOTION_DOT / MEAN_MOTION_DDOTnumberBSTAR: inverse Earth radii. Derivatives: rev/day² and rev/day³ in the source GP convention (TLE factors ½ and ⅙); do not rescale automatically.
provenanceobjectorbitSource, nameSource, cosparSource, countrySource, and activitySource. The newer orbital epoch wins; ties prefer Space-Track.
knowledgeobject (catalog-ru / catalog-en / catalog-zh)Language, status, level, localizedName, aliases, summary, facts, and sourceIds. All available facts are included; a missing story is not invented.
knowledge.language / localizedName / summarystring / string|null / string|nullLanguage variants: ru, en, and zh (Simplified Chinese). External Chinese reference text falls back to English. When localizedName is absent, use the original name. Identifiers and enum values remain unchanged. Old snapshots are immutable; catalog-zh appears after the next successful update.
references / knowledge.sourceIdsobject / string[]In enriched JSON envelopes, references is a dictionary of shared citations keyed by id: references[id] contains id, title, url, checkedAt, license, attribution, and termsUrl. knowledge.sourceIds and facts[].sourceIds refer to its keys. checkedAt is the latest contributing source check, not a new review of all facts. knowledge.metadataCheckedAt preserves the imported metadata date. A null license does not mean an open license. Envelope sources describes Space-Track/CelesTrak orbital snapshots, separately from these knowledge references.
knowledge.facts[].scope / sourceIdsenum / string[]object, event, or family: the subject of the claim. sourceIds links it to citations.
knowledge.provenanceobject, optionalParent, event, cause, and date. Preserve precision, dateKind, uncertain, and uncertaintyKind; phase-start does not establish a breakup time.
knowledge.imageobject, optionalCommons file reference, caption, subject, author, license, licenseUrl, pageUrl, and checkedAt. A reviewed reference, not image bytes or a promise of a new review.

An unknown activity status does not mean inactive. Family or event knowledge can describe a group rather than an individual spacecraft: preserve scope and sources.

CSV

UTF-8, commas, and RFC 4180 quoting. Numbers use decimal points; an empty cell means a missing value. Import identifiers and designators as text so spreadsheet software does not change them. CSV is a compact flat representation. OMM fields have separate columns without the omm prefix; orbitSource/nameSource/cosparSource/countrySource/activitySource are also flat. Enriched variants add language, localizedName, summary, knowledgeStatus, knowledgeLevel, reviewedAt, familyId, eventId, sourceIds, sourceUrls, imagePageUrl, imageAuthor, imageLicense, imageLicenseUrl, and wikidataId. sourceIds and sourceUrls are | separated lists in the same order. Full facts, their scope, date precision, detailed provenance, and image captions remain in JSON. Image files are not included. To prevent spreadsheet formulas, textual cells beginning with =, +, -, @ or control whitespace receive a leading apostrophe; numeric values stay numeric.

This is a normalized Above Us catalog, not a standalone CCSDS OMM standard document. Orbital elements use SGP4, TEME, and UTC; do not substitute them into another model without accounting for these conventions.

Updates, coverage, and limitations

A new export is published after a successful catalog update. If an update fails, the last valid snapshot remains available. File generation time is not orbital epoch: check source retrieval times and each object’s epoch.

The dataset covers current GP used by Above Us, not every object ever launched. Space-Track uses a 30-day epoch filter; CelesTrak adds objects from its current list. spacetrack is a snapshot of that GP feed, not a complete raw SATCAT. A missing record does not prove reentry. Read the object count and freshness warnings from the manifest.

The latest 2 successful releases are retained; this is not a permanent archive. Keep required files locally together with their manifest and attribution. After a 404, request the current manifest.

The data supports research and visualization. Public GP does not replace operational flight or conjunction assessment data. Above Us does not guarantee accuracy, completeness, or uninterrupted availability.

Sources, attribution, and rights

The combined catalog has no single license that replaces all source terms. When sharing it further, preserve the manifest sources, attribution on this page, and individual field provenance.

  • Space-Track.org / USSPACECOM: basic GP/OMM and SATCAT can be redistributed under the published USSPACECOM blanket approval with appropriate citation. This permission does not automatically cover all Space-Track products.
  • CelesTrak: a source for name and activity enrichment where identified by metadata. Its retrieval policy is not a universal redistribution license for all products. Above Us grants no additional rights in CelesTrak material.
  • GCAT — Jonathan C. McDowell: CC BY 4.0. Data is matched to NORAD identifiers, normalized, and expressed in Russian, English, and Simplified Chinese. Retain the author, catalog link, license, and notice of these changes.
  • Wikidata (CC0): structured labels, aliases, and short descriptions are CC0; this is not a license for Wikipedia prose or images.
  • NASA: a factual source for independently written summaries. Third-party materials and NASA identifiers have separate terms; attribution does not imply endorsement.
  • J. McDowell’s Debris Clouds Catalog is identified separately from GCAT: a factual citation does not declare that entire section CC BY 4.0. Above Us original text and third-party material retain their own terms.
  • Wikimedia Commons: each image has its own license. Links and author/license metadata convey no ownership. CC BY-SA applies to the image and its adaptations, not automatically to the entire catalog. Linking an image does not waive its terms.

Keep sourceIds, citations, and uncertainty notes with descriptions. Check the linked upstream terms for your intended use.