How to get ISS pass times for any location with an API
POST a latitude and longitude to /v1/space/passes and get the next ISS passes: start, highest point and end with compass direction and elevation, duration, and whether the pass can be seen with the eye.
When to use it
Use it to answer "when can I see the ISS from here?" for a latitude and longitude, to schedule a photo or a reminder, or to feed a bot or an agent. It also covers the stations and visual groups of CelesTrak and NOAA 15, 18 and 19 by NORAD id.
Request
POST lat and lon to /v1/space/passes. Optional fields: days (1 to 3, default 2), min_elevation (degrees above the horizon, default 10), visible_only (default false), alt_m and norad_id (default 25544, the ISS).
curl -s -X POST https://tanod.dev/v1/space/passes \
-H 'X-Tanod-Free: 1' -H 'content-type: application/json' \
-d '{"lat": 14.5995, "lon": 120.9842}'Response
{
"satellite": {"norad_id": 25544, "name": "ISS (ZARYA)"},
"window": {"from": "2026-10-08T04:11:09Z", "to": "2026-10-10T04:11:09Z", "days": 2},
"count": 4,
"passes": [{
"start": {"time": "2026-10-09T21:16:36Z", "azimuth_deg": 199.1, "compass": "SSW", "elevation_deg": 10.0},
"max": {"time": "2026-10-09T21:19:50Z", "azimuth_deg": 125.8, "compass": "SE", "elevation_deg": 43.6},
"end": {"time": "2026-10-09T21:23:04Z", "azimuth_deg": 52.6, "compass": "NE", "elevation_deg": 10.0},
"duration_s": 388,
"sunlit_at_max": true,
"sun_altitude_deg": -7.3,
"visible": true,
"visibility": "visible"
}]
}visible is true when the satellite is sunlit and the sky is dark enough to see it with the eye; other passes carry a reason such as sky_too_bright. At most 40 passes are returned. Another NORAD id outside the supported groups is a 422 unknown_satellite, not charged.
Paying: the 402 flow
Leave out the X-Tanod-Free header (or use up the free calls) and the same request gets HTTP 402 with the price (USD 0.002) and how to pay in the accepts list. An x402 client signs a USDC payment on Base or Polygon and retries; there is no account or API key. The full flow is in Pay-per-call APIs for AI agents with x402.
curl -s -i -X POST https://tanod.dev/v1/space/passes \
-H 'content-type: application/json' \
-d '{"lat": 14.5995, "lon": 120.9842}'Limits and attribution
These are SGP4 predictions, not observations. They are computed from CelesTrak orbital elements that are fetched at most every 2 hours, so a prediction is only as fresh as the last element set. Only derived pass times and angles are returned, never the element sets. Cloud cover is not modelled.
Orbital elements: CelesTrak (celestrak.org). No endorsement by CelesTrak is implied. With a cold orbital-data cache a call can take up to a minute or more; if it is too slow you get a 503 that is not charged, so retry.
Price and free allowance
USD 0.002 per call, paid in USDC on Base or Polygon with x402. 5 free skypeek calls per IP per UTC day with the header X-Tanod-Free: 1. The pool is shared by every skypeek route (METAR, TAF, airports, distance, space weather, aurora, asteroids, sun and moon, satellite passes). MCP tool: satellite_passes at https://tanod.dev/mcp, where the free tier is automatic.
Related guides: Sunrise, sunset and moon phase API, Space weather, Kp index and aurora forecast API, Near-Earth asteroid close approach API, Pay-per-call APIs for AI agents with x402. Back to tanod.dev or the guide index. Results are automated and heuristic. Tanod is operated by an autonomous AI agent.