LaunchDetect
← Launch Watch

Developer guide · Guide

Map the latest detected space launch with the free API

Add published rocket-launch detections to a geospatial application with a small JSON request. The public API is free, requires no account or API key, and works with open-source tools.

One URL for the latest detection

AI agents and automated clients can start here. This URL returns the newest recorded detection in the recent feed, its publication time, and links to the individual snippet and public launch report.

curl --fail --silent --show-error   https://launchdetect.com/evidence/v1/signals/latest.json

Check schemaVersion, then available. When no recent detection is available, the response is HTTP 200 with available: false, detection: null and empty links. A network error is not evidence that no launch occurred.

The generatedAt value is the feed publication time. The nested detection.detectedAt is the recorded detection time. The latest detection may be days old even when the feed has just been refreshed. Save the stable detection.id to recognize a record you have already processed, and allow later updates to correct its fields.

Open latest detection JSON · Download the OpenAPI 3.1 specification

AI task: map the latest detected space launch

  1. Fetch latest.json and check the HTTP status, schemaVersion and available.
  2. Compare the feed publication time and detection time with the current time. State the detection time explicitly; do not describe an old detection as having just happened. This feed is not a complete list of worldwide launches.
  3. Validate the latitude and longitude, then create a GeoJSON Point with coordinates [detection.lon, detection.lat]. The envelope identifies the coordinate meaning as launch_site and the reference system as EPSG:4326.
  4. Label the marker with the mission, vehicle, site and recorded detection time. Describe it as the latest launch detected by LaunchDetect.
  5. Link the marker or answer to links.record so the reader can inspect the evidence. If the timestamp or coordinates are missing, report that limitation instead of inventing a value.

Example user request: Use LaunchDetect to plot its latest detected space launch on a map, include the UTC detection time, and link the evidence. An agent can connect from the OpenAPI contract using the getLatestDetection operation. No model-specific plugin or paid SDK is required.

Endpoints

GET pathResponse
/evidence/v1/signals/latest.jsonOne latest detection inside a documented availability envelope.
/evidence/v1/signals/index.jsonUp to 100 detection snippets, newest detection first, for launches in the past 30 days. Includes count, total, limit, window and truncated.
/evidence/v1/signals/{id}.jsonOne snippet using the stable ID from a response. This is the same export linked from the launch-site panel.

The base URL is https://launchdetect.com. Use HTTPS GET or HEAD. No authentication, cookies or authorization headers are needed. These are read-only endpoints. Query parameters do not filter the feed; filter the small response in your application. Unknown records can return 403 or 404 from the static origin. The recent feed is bounded; individual links are not a guarantee of complete historical coverage.

What a detection snippet contains

FieldMeaning
idStable public record identifier, formatted as ld- followed by 16 hexadecimal characters.
missionName, vehicle, siteNamePublished mission, rocket and launch-site labels. May be null when unavailable.
lat, lonLaunch-site latitude and longitude in decimal degrees, WGS84. May be null. These are not plume-pixel coordinates or impact locations.
scheduledT0The published scheduled launch time; not a claim of an independently measured liftoff time.
detectedWhether the public record carries a published detection. The recent list includes only true values; an individual record can show false after a correction.
detectedAtRecorded detection time in UTC, when available. It is distinct from publication time and scheduled launch time.
statusPublished launch status. Treat it as a string that may gain new values.
generatedAtPublication time in UTC, using ISO 8601.
sourceLaunchDetect.

Responses contain these summaries. They do not contain thermal imagery, raw sensor files, modeled trajectories, orbital analysis, credentials or internal model parameters. Follow the public report link if a person or agent needs to inspect the published evidence.

Fetch from JavaScript

const response = await fetch(
  "https://launchdetect.com/evidence/v1/signals/latest.json",
  { credentials: "omit" }
);
if (response.status === 429) {
  throw new Error("Rate limited: wait at least 300 seconds before retrying.");
}
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const latest = await response.json();
if (latest.available) {
  console.log(latest.detection.id, latest.detection.detectedAt);
  console.log(latest.links.record);
}

Cross-origin browser GET requests are supported without credentials. Let the browser manage its normal cache. Custom authentication headers and cross-origin preflight requests are not part of this API.

Python to GeoJSON, QGIS, Leaflet or MapLibre

This example uses the Python standard library. It writes a GeoJSON FeatureCollection that QGIS can open as a vector layer and that Leaflet or MapLibre can display. GeoJSON point order is longitude, latitude. The properties preserve the site-coordinate meaning.

import json
from urllib.request import urlopen

url = "https://launchdetect.com/evidence/v1/signals/index.json"
with urlopen(url, timeout=20) as response:
    feed = json.load(response)

features = []
for detection in feed["detections"]:
    lat, lon = detection.get("lat"), detection.get("lon")
    if type(lat) not in (int, float) or type(lon) not in (int, float):
        continue
    if not (-90 <= lat <= 90 and -180 <= lon <= 180):
        continue
    features.append({
        "type": "Feature",
        "id": detection["id"],
        "geometry": {"type": "Point", "coordinates": [lon, lat]},
        "properties": {**detection, "coordinateMeaning": "launch_site"}
    })

with open("launchdetect-detections.geojson", "w", encoding="utf-8") as output:
    json.dump({"type": "FeatureCollection", "features": features}, output,
              ensure_ascii=False, allow_nan=False)

Refresh, caching and rate limits

Use and interpretation

Use the snippets in your mapping and research tools under the site terms. Identify LaunchDetect as the source and link to the public launch record so readers can examine the evidence and limitations. Compatibility with open-source geospatial software is not a claim that all underlying imagery, data or LaunchDetect software has an open-source license.

Records can be corrected or incomplete. This API is not an operational navigation, collision-avoidance or emergency service. A reported launch-site location does not establish a plume position, debris impact, damage or responsibility.

Connection resources

OpenAPI contract · Recent detection snippets · GeoJSON: RFC 7946 · Explore the evidence

Maintained by LAUNCHDETECT LLC · Hawaii, USA · ops@launchdetect.com.