Historical GP¶
Historical element sets with time-range queries. Data goes back to 2004.
Free tier access
All users have full access to the historical archive with no date restrictions. Use the /range endpoint to check what coverage is available for an object before querying.
Date formats¶
All date parameters (start, end, epoch) accept three formats:
| Format | Example | Description |
|---|---|---|
| ISO 8601 | 2024-01-01T00:00:00Z |
Standard datetime |
| Julian Date | jd:2460310.5 |
Prefix with jd: |
| Unix epoch | unix:1704067200 |
Prefix with unix: |
GET /gp/{norad_id}/history¶
Returns all GP element sets for an object within a time range.
Parameters¶
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
norad_id |
path | integer | Yes | NORAD catalog number |
start |
query | string | No | Start of time range |
end |
query | string | No | End of time range |
data_source |
query | string | No | spacetrack or all (default: all) |
format |
query | string | No | Response format. Default: json |
page |
query | integer | No | Page number (default: 1) |
per_page |
query | integer | No | Results per page (1–500, default: 100) |
Example¶
Get ISS element sets for January 2024:
curl -H "X-Api-Key: YOUR_KEY" \
"https://orbital-data-api.davidhsu.cc/api/v1/gp/25544/history?start=2024-01-01T00:00:00Z&end=2024-02-01T00:00:00Z"
{
"data": [
{
"OBJECT_NAME": "ISS (ZARYA)",
"NORAD_CAT_ID": 25544,
"EPOCH": "2024-01-01T03:12:45.000Z",
"MEAN_MOTION": 15.49712345,
"INCLINATION": 51.6412,
"APOGEE_KM": 423.5,
"PERIGEE_KM": 419.1
}
],
"pagination": {
"total": 47,
"page": 1,
"per_page": 100,
"total_pages": 1,
"next": null,
"prev": null
},
"meta": {
"norad_id": 25544,
"object_name": "ISS (ZARYA)",
"earliest_epoch": "2024-01-01T03:12:45.000Z",
"latest_epoch": "2024-01-31T21:45:12.000Z",
"total_elsets": 47
}
}
GET /gp/{norad_id}/nearest¶
Returns the single element set closest in time to the specified epoch. Useful for propagation at a specific historical time.
Parameters¶
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
norad_id |
path | integer | Yes | NORAD catalog number |
epoch |
query | string | Yes | Target epoch |
data_source |
query | string | No | spacetrack or all (default: all) |
format |
query | string | No | Response format. Default: json |
Response headers¶
| Header | Description |
|---|---|
X-Epoch-Delta-Seconds |
Signed offset from requested epoch (seconds). Negative = element set is before the requested epoch. |
Example¶
Find the nearest element set to a specific time:
curl -H "X-Api-Key: YOUR_KEY" \
"https://orbital-data-api.davidhsu.cc/api/v1/gp/25544/nearest?epoch=2024-06-15T12:00:00Z"
{
"OBJECT_NAME": "ISS (ZARYA)",
"NORAD_CAT_ID": 25544,
"EPOCH": "2024-06-15T11:45:22.000Z",
"MEAN_MOTION": 15.50112345,
"INCLINATION": 51.6419,
"APOGEE_KM": 421.8,
"PERIGEE_KM": 417.9
}
The X-Epoch-Delta-Seconds header would be -878 (the element set epoch is 878 seconds before the requested time).
GET /gp/{norad_id}/adjacent¶
Returns the two element sets immediately before and after the specified epoch. Useful for interpolation or maneuver detection around a known event time.
Parameters¶
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
norad_id |
path | integer | Yes | NORAD catalog number |
epoch |
query | string | Yes | Target epoch |
Note
The /adjacent endpoint only supports JSON format (the nested before/after structure is not compatible with TLE, CSV, or XML).
Example¶
Get bracketing element sets around a specific time:
curl -H "X-Api-Key: YOUR_KEY" \
"https://orbital-data-api.davidhsu.cc/api/v1/gp/25544/adjacent?epoch=2024-06-15T12:00:00Z"
{
"before": {
"OBJECT_NAME": "ISS (ZARYA)",
"NORAD_CAT_ID": 25544,
"EPOCH": "2024-06-15T11:45:22.000Z",
"MEAN_MOTION": 15.50112345,
"INCLINATION": 51.6419
},
"after": {
"OBJECT_NAME": "ISS (ZARYA)",
"NORAD_CAT_ID": 25544,
"EPOCH": "2024-06-15T14:30:11.000Z",
"MEAN_MOTION": 15.50115678,
"INCLINATION": 51.6420
},
"gap_hours": 2.75
}
GET /gp/{norad_id}/range¶
Returns the epoch range and total element set count for an object. Use this to check what historical coverage is available before querying.
Parameters¶
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
norad_id |
path | integer | Yes | NORAD catalog number |
Example¶
{
"norad_id": 25544,
"total_elsets": 31380,
"year_files": 22,
"earliest_epoch": "2001-04-30T20:13:16.671648Z",
"latest_epoch": "2026-03-22T03:54:40.385952Z"
}
Response fields¶
| Field | Type | Description |
|---|---|---|
norad_id |
integer | NORAD catalog number |
total_elsets |
integer | Total number of historical element sets |
year_files |
integer | Number of year-partitioned data files |
earliest_epoch |
datetime | Oldest element set epoch |
latest_epoch |
datetime | Most recent element set epoch |