Satellite Passes

Satellite Passes — keyless JSON API

AUTH NONECORS AGENT ?HTTPS COMMERCIAL ?

Satellite Passes. Find satellite passes

HOW IT'S SCORED ⓘ
Status badge · for your READMEshipapis health badge: — · unmonitored
ON PROBE SCHEDULE

We probe a documented GET and expect 2xx JSON — full uptime and health score. Open provider docs ↗

Uptime historystarts after first probe

On our probe schedule. Uptime charts appear after the first check lands.

Example responsefrom provider docs — not verified by us
GET https://sat.terrestre.ar/openapi.json

{
  "openapi": "3.0.3",
  "info": {
    "title": "Satellite Passes API",
    "description": "Query next passes for a given satellite above you.",
    "version": "0.1.0"
  },
  "servers": [
    {
      "url": "https://sat.terrestre.ar/"
    },
    {
      "url": "http://0.0.0.0:8000/"
    }
  ],
  "paths": {
    "/passes/{norad_id}": {
      "get": {
        "tags": [
          "Satellite Passes"
        ],
        "parameters": [
          {
            "name": "norad_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 999999999
            }
          },
          {
            "name": "lat",
            "in": "query",
            "required": true,
            "schema": {
              "type": "number",
              "minimum": -90,
              "maximum": 90
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SatellitePass"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/ValidationError"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "error": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "error"
                      ]
                    }
                  ]
                }
              }
            }
          },
          "default": {
            "description": "Unexpected error"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "SatellitePass": {
        "type": "object",
        "properties": {
          "rise": {
            "$ref": "#/components/schemas/Event"
          },
          "culmination": {
            "$ref": "#/components/schemas/Event"
          },
          "set": {
            "$ref": "#/components/schemas/Event"
          },
          "visible": {
            "type": "boolean"
          }
        },
        "required": [
          "visible"
        ]
      },
      "Event": {
        "type": "object",
        "title": "Event",
        "required": [
          "alt",
          "az"
        ],
        "properties": {
          "alt": {
            "type": "string",
            "title": "Altitude",
            "description": "Altitude above the horizon. In degrees."
          },
          "az": {
            "type": "string",
            "title": "Azimuth",
            "description": "The angle between the satellite and the North. In degrees."
          },
          "az_octant": {
            "type": "string",
            "title": "Azimuth octant",
            "enum": [
              "N",
              "NE"
            ]
          },
          "utc_datetime": {
            "type": "string",
            "title": "UTC date-time",
            "format": "date-time"
          },
          "utc_timestamp": {
            "type": "integer",
            "title": "UTC timestamp",
            "minimum": 0
          },
          "is_sunlit": {
            "type": "boolean",
            "title": "Is sunlit",
            "description": "If satellite is being illuminated by the sun."
          },
          "visible": {
            "type": "boolean",
            "title": "Visible",
            "description": "If the satellite will be probably visible, considering the sun is near the horizon, and the observer is at night."
          }
        }
      },
      "ValidationError": {
        "type": "object",
        "properties": {
          "lat": {
            "$ref": "#/components/schemas/FieldError"
          },
          "lon": {
            "$ref": "#/components/schemas/FieldError"
          },
          "limit": {
            "$ref": "#/components/schemas/FieldError"
          },
          "days": {
            "$ref": "#/components/schemas/FieldError"
          },
          "visible_only": {
            "$ref": "#/components/schemas/FieldError"
          }
        }
      },
      "FieldError": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    }
  }
}
Call itcurl · fetch · python
curl "https://sat.terrestre.ar/openapi.json"
const res = await fetch("https://sat.terrestre.ar/openapi.json");
const data = await res.json();
console.log(data);
import requests

res = requests.get("https://sat.terrestre.ar/openapi.json")
print(res.json())
Endpoints · 5On scheduleFULL DOCS ↗
On schedule — GET /openapi.json awaits first probe
GET/openapi.jsonPROBED

Satellite Passes — keyless JSON API

GET/openapi.json?limit=5

Paginated variant with limit parameter.

GET/passes/{norad_id}

{Norad Id} — documented GET route.

GET/passes/&lt

&Lt — documented GET route.

GET/passes/25544?lat=-34.9112212&amp

Passes details by ID (example: 25544).

Machine-readable spec

We probe a documented GET and expect 2xx JSON — full uptime and health score. Export includes every documented route below.

Response-shape history

Not tracked yet. Shape-change history starts once this API joins our probe schedule.

Satellite Passes: common questions

Is Satellite Passes free to use?

Yes — Satellite Passes is a free science & space API. Free tier: Free — limits not published. Whether the free tier allows commercial use is unclear — check the provider docs.

Does Satellite Passes need an API key?

No — Satellite Passes needs no API key or signup. You can call it straight away; rate limits still apply (Unpublished).

Can I call Satellite Passes from the browser?

Yes — Satellite Passes returns CORS headers over HTTPS, so front-end code can fetch it directly with no backend proxy. Use the fetch snippet on this page, or hit "Run live" to try it now.

Is Satellite Passes up right now?

Satellite Passes is catalogued but not yet on our probe schedule, so we don't publish a live status for it. Check the provider's own status page or docs for its current state.