Satellite Passes

Satellite Passes — keyless JSON API

🔭 Science & SpaceHEALTHYchecked 4h ago
AUTH NONECORS AGENT HTTPS COMMERCIAL ?

Satellite Passes. Find satellite passes

84HOW IT'S SCORED ⓘ
Status badge · for your READMEshipapis health badge: 84 · healthy
Uptime history
99.02%90 days
98.3%30 days
976P50 · ms
3243P95 · ms
operationalpartialdownno data
Response time · last 48 checks
Fastest 227 ms, slowest 2324 ms, most recent 667 ms.
Live response samplecaptured by our last successful check
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 · 5HealthyFULL DOCS ↗
Monitored path responding — GET /openapi.json976 mschecked 4h ago
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

Stable. No schema drift observed since monitoring began — the response shape has not changed under our checks.

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?

As of our last scheduled check, Satellite Passes is healthy with 99.02% uptime over 90 days and a 976 ms median response. We re-probe it every sweep — the status badge and uptime chart above always show the latest.