# Satellite passes API

> When the ISS and amateur radio satellites pass over you, and where they are now.

Pass predictions for the space stations (ISS, Tiangong) and about ninety amateur radio satellites, from any Indian pincode or any latitude and longitude: when each rises, how high it gets and where, when it sets, and whether it can be seen with the eye. Computed with SGP4 from CelesTrak's orbit elements, refreshed a few times a day; the elements themselves are not published here. Pass predictions count as 10 requests against the rate limit.

Base URL `https://api.dharun.dev`. No API key. Answers are JSON, `{ "data": ..., "meta": { ... } }`, and errors are `{ "error": { "code", "message" } }` with a matching HTTP status. Rate limit: 600 requests a minute per client.

## Passes over a place

`GET /v1/sat-pass`

Passes from now for the next days, soonest first. Directions are compass points and azimuths in degrees from true north; elevations are degrees above the horizon. A satellite can be named by catalogue number, by name, by the designation in its name's brackets (SO-50, AO-7), or as ISS, CSS or QO-100.

Parameters:

- `sat` (query): Catalogue number or name. Default ISS (25544).
- `pincode` (query): Indian pincode of the observer.
- `lat` (query): Latitude, if no pincode. Default New Delhi.
- `lng` (query): Longitude, if no pincode.
- `days` (query): How far ahead, 1 to 10. Default 3.
- `minElevation` (query): Lowest peak elevation listed, in degrees. Default 10; 0 lists every pass.
- `visible` (query): true lists only passes that can be seen with the eye. One of: true, false.
- `tz` (query): IANA time zone for the times. Default Asia/Kolkata.

Example: https://api.dharun.dev/v1/sat-pass?sat=ISS&pincode=600001

Response, with lists and long text shortened:

```json
{
  "data": {
    "satellite": {
      "number": 25544,
      "name": "ISS (ZARYA)",
      "groups": [
        "space stations",
        "amateur radio"
      ],
      "periodMinutes": 92.98,
      "inclination": 51.633,
      "elementsEpoch": "2026-10-13T19:43:22Z"
    },
    "elementsAgeDays": 0.95,
    "place": {
      "latitude": 13.0949,
      "longitude": 80.287,
      "timeZone": "Asia/Kolkata",
      "pincode": "600001",
      "name": "Chennai"
    },
    "from": "2026-10-15T00:03:00+05:30",
    "until": "2026-10-18T00:03:00+05:30",
    "minElevation": 10,
    "passes": [
      {
        "rise": {
          "time": "2026-10-15T03:31:20+05:30",
          "azimuth": 210.4,
          "direction": "SSW",
          "elevation": 0,
          "rangeKm": 2349
        },
        "culmination": {
          "time": "2026-10-15T03:36:44+05:30",
          "azimuth": 127.5,
          "direction": "SE",
          "elevation": 60.1,
          "rangeKm": 482
        },
        "set": {
          "time": "2026-10-15T03:42:11+05:30",
          "azimuth": 41.9,
          "direction": "NE",
          "elevation": -0,
          "rangeKm": 2365
        },
        "durationSeconds": 650,
        "visible": {
          "from": "2026-10-15T03:42:00+05:30",
          "until": "2026-10-15T03:42:10+05:30"
        }
      },
      {
        "rise": {
          "time": "2026-10-15T13:25:42+05:30",
          "azimuth": 341.7,
          "direction": "NNW",
          "elevation": 0,
          "rangeKm": 2358
        },
        "culmination": {
          "time": "2026-10-15T13:30:46+05:30",
          "azimuth": 50.2,
          "direction": "NE",
          "elevation": 21.2,
          "rangeKm": 993
        },
        "set": {
          "time": "2026-10-15T13:35:49+05:30",
          "azimuth": 118.8,
          "direction": "ESE",
          "elevation": -0,
          "rangeKm": 2355
        },
        "durationSeconds": 606,
        "visible": null
      },
      {
        "rise": {
          "time": "2026-10-15T15:02:43+05:30",
          "azimuth": 295,
          "direction": "WNW",
          "elevation": 0,
          "rangeKm": 2355
        },
        "culmination": {
          "time": "2026-10-15T15:07:22+05:30",
          "azimuth": 236,
          "direction": "SW",
          "elevation": 13.5,
          "rangeKm": 1294
        },
        "set": {
          "time": "2026-10-15T15:12:00+05:30",
          "azimuth": 176.6,
          "direction": "S",
          "elevation": -0,
          "rangeKm": 2349
        },
        "durationSeconds": 556,
        "visible": null
      }
    ]
  },
  "meta": {
    "total": 10,
    "source": {
      "name": "CelesTrak current GP element sets",
      "url": "https://celestrak.org/NORAD/elements/",
      "licence": "None stated by CelesTrak. USSPACECOM allows redistribution of basic space situational awareness data with credit; only results computed from it are published he…",
      "version": "fde424564d41",
      "retrieved": "2026-10-14T13:16:38Z",
      "attribution": "Orbit elements from CelesTrak (celestrak.org), based on US Space Force data from Space-Track.org."
    },
    "note": "Passes from now, computed with SGP4 from the satellite's latest orbit elements. Rise and set are when it crosses the horizon (elevation 0°, no refraction); a pa…"
  }
}
```

## Where a satellite is now

`GET /v1/satellites/{id}`

The point on Earth below the satellite at the moment of the request, its altitude and speed, whether it is in sunlight, and how old its orbit elements are.

Parameters:

- `id` (path, required): Catalogue number or name.

Example: https://api.dharun.dev/v1/satellites/ISS

Response, with lists and long text shortened:

```json
{
  "data": {
    "number": 25544,
    "name": "ISS (ZARYA)",
    "groups": [
      "space stations",
      "amateur radio"
    ],
    "periodMinutes": 92.98,
    "inclination": 51.633,
    "elementsEpoch": "2026-10-13T19:43:22Z",
    "at": "2026-10-14T18:33:09Z",
    "latitude": -51.7217,
    "longitude": 32.7494,
    "altitudeKm": 433.2,
    "speedKmPerSecond": 7.654,
    "sunlit": true,
    "elementsAgeDays": 0.95
  },
  "meta": {
    "source": {
      "name": "CelesTrak current GP element sets",
      "url": "https://celestrak.org/NORAD/elements/",
      "licence": "None stated by CelesTrak. USSPACECOM allows redistribution of basic space situational awareness data with credit; only results computed from it are published he…",
      "version": "fde424564d41",
      "retrieved": "2026-10-14T13:16:38Z",
      "attribution": "Orbit elements from CelesTrak (celestrak.org), based on US Space Force data from Space-Track.org."
    },
    "note": "Where the satellite is at the moment of the request, over the WGS 84 ellipsoid."
  }
}
```

## Tracked satellites

`GET /v1/satellites`

Every tracked satellite with its catalogue number, groups, orbital period and inclination.

Parameters:

- `q` (query): Part of a name, or a catalogue number.
- `group` (query): Limit to one group. One of: stations, amateur.

Example: https://api.dharun.dev/v1/satellites?group=stations

Response, with lists and long text shortened:

```json
{
  "data": [
    {
      "number": 25544,
      "name": "ISS (ZARYA)",
      "groups": [
        "space stations",
        "amateur radio"
      ],
      "periodMinutes": 92.98,
      "inclination": 51.633,
      "elementsEpoch": "2026-10-13T19:43:22Z"
    },
    {
      "number": 36086,
      "name": "POISK",
      "groups": [
        "space stations"
      ],
      "periodMinutes": 92.98,
      "inclination": 51.633,
      "elementsEpoch": "2026-10-13T19:43:22Z"
    },
    {
      "number": 48274,
      "name": "CSS (TIANHE)",
      "groups": [
        "space stations"
      ],
      "periodMinutes": 92.31,
      "inclination": 41.47,
      "elementsEpoch": "2026-10-14T06:49:21Z"
    }
  ],
  "meta": {
    "total": 18,
    "source": {
      "name": "CelesTrak current GP element sets",
      "url": "https://celestrak.org/NORAD/elements/",
      "licence": "None stated by CelesTrak. USSPACECOM allows redistribution of basic space situational awareness data with credit; only results computed from it are published he…",
      "version": "fde424564d41",
      "retrieved": "2026-10-14T13:16:38Z",
      "attribution": "Orbit elements from CelesTrak (celestrak.org), based on US Space Force data from Space-Track.org."
    }
  }
}
```

## Data source

- [CelesTrak current GP element sets](https://celestrak.org/NORAD/elements/), fde424564d41, retrieved 2026-10-14T13:16:38Z. Licence: None stated by CelesTrak. USSPACECOM allows redistribution of basic space situational awareness data with credit; only results computed from it are published here. Orbit elements from CelesTrak (celestrak.org), based on US Space Force data from Space-Track.org.
