# CelesTrak Satellites Orbital Catalog Scraper (`parseforge/celestrak-tle-satellites-scraper`) Actor

Scrapes satellite orbital data from CelesTrak by group, NORAD ID, or international designator. Returns each object as a flat row with TLE lines and orbital elements.

- **URL**: https://apify.com/parseforge/celestrak-tle-satellites-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Business, Automation, Other
- **Stats:** 3 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $24.38 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### CelesTrak Satellites Orbital Catalog Scraper

**Scrape satellite orbital data from CelesTrak by group, NORAD ID, or international designator, up to a million objects per run.** Every satellite comes with its TLE lines, orbital elements, and metadata. No login or API key. Export to CSV, JSON, Excel, or XML.

CelesTrak publishes the most current two-line element sets for thousands of satellites, space stations, and debris objects, but pulling that data programmatically means parsing raw GP feeds and handling group-specific URLs. This Actor reads the public CelesTrak catalog directly, lets you pick from 50+ pre-defined groups (Starlink, OneWeb, GPS, weather, debris fields, and more), and returns each object in one fixed schema.
You can also fetch every group in a single run for a complete snapshot, or target a single satellite by NORAD ID or COSPAR international designator.

| Who uses it | What they scrape CelesTrak for |
|---|---|
| Satellite operators | Monitor their own constellations and nearby objects for conjunction analysis. |
| Space situational awareness analysts | Pull the latest orbital elements for debris fields and active payloads. |
| Amateur astronomers | Get TLEs for visual passes and radio tracking of specific satellites. |
| Researchers and educators | Build a complete snapshot of the orbital catalog for population studies. |

### What it does

This Actor collects satellite orbital data from CelesTrak by group, NORAD ID, or international designator, and returns each object as a flat row with TLE lines and orbital elements.

- 🛰️ **50+ pre-defined groups:** active satellites, Starlink, OneWeb, GPS, weather, debris fields, amateur radio, and more.
- 🔍 **Single-object lookup:** fetch one satellite by NORAD catalog ID (e.g. 25544 for ISS) or COSPAR international designator (e.g. 1998-067A).
- 📦 **Fetch all groups:** iterate every available group and merge results into one dataset for a full catalog snapshot.
- 📐 **Orbital filters:** narrow results by minimum and maximum inclination in degrees.
- 🔎 **Name search:** filter the fetched group by satellite name substring, case-insensitive (e.g. 'STARLINK', 'NOAA').
- 📄 **Supplementary catalogue:** pass a SUPCAT identifier for operator-specific or mission-specific catalogs.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with CelesTrak data

**🛰️ Monitor a constellation.**

A satellite operator selects the Starlink group, sets maxItems to 5000, and exports the latest TLEs to feed an internal conjunction assessment tool.

**📡 Track debris fields.**

A space situational awareness analyst pulls the Fengyun-1C debris group daily and filters by inclination to identify objects crossing a protected orbital regime.

**🔭 Plan visual observations.**

An amateur astronomer fetches the brightest visual group, searches for 'ISS', and uses the TLE to predict the next overhead pass.

**📊 Study the orbital population.**

A researcher enables fetchAllGroups, collects every active satellite and debris object, and analyzes inclination distributions across operator nations.

### Why choose this scraper

|  | What you get |
|---|---|
| **No API key or registration** | Reads the public CelesTrak feeds directly with no account setup. |
| **Fixed flat schema** | Every satellite row has the same fields, ready for analysis or a database. |
| **One run, all groups** | The fetch-all-groups option builds a complete catalog in a single execution. |
| **Precision targeting** | Pull exactly one object by NORAD ID or COSPAR designator when you need a single TLE update. |

### How it compares

This Actor and the CelesTrak TLE & Orbital Elements Scraper both pull data from CelesTrak, but they differ in the fields they return and the filtering they offer.

| Feature | ParseForge | CelesTrak TLE & Orbital Elements Scraper |
|---|---|---|
| Pre-defined satellite groups | Yes, 50+ groups | Yes |
| Fetch all groups in one run | Yes | Not listed |
| Single-object lookup by NORAD ID | Yes | Not listed |
| Single-object lookup by international designator | Yes | Not listed |
| Inclination range filter | Yes | Not listed |
| Satellite name search filter | Yes | Not listed |
| Server-computed apogee and perigee | Not listed | Yes |

### Configure the run

Drive the Actor from a satellite group, NORAD ID, or international designator, and filters run after the group is fetched so only matching objects reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "maxItems": 10
}
```

A larger pull:

```json
{
  "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.0325 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $3.25 |
| 1,000 results | $32.50 |
| 10,000 results | $325.00 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [CelesTrak Satellites Orbital Catalog Scraper](https://apify.com/parseforge/celestrak-tle-satellites-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to CelesTrak through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/celestrak-tle-satellites-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check that your search filter or inclination range is not too restrictive. If you set both a NORAD ID and a group, the NORAD ID takes precedence and the group is ignored. Try removing filters and running with only a group selected.

**Why does my run time out?**

Fetching all groups with a high maxItems can take a while. Increase the run timeout in your Actor settings, or reduce maxItems and run multiple smaller fetches.

**Why do I get fewer results than expected?**

The maxItems setting caps the total output. If you set it to 100 but the group has 5000 objects, only the first 100 are returned. Raise maxItems or remove the limit.

**Why is my NORAD ID lookup returning the wrong satellite?**

Verify the NORAD catalog ID. The ISS is 25544. If you also set a group or search filter, the NORAD ID overrides them, so the group selection does not matter.

**What does 'supplementary catalogue not found' mean?**

The SUPCAT value you entered is not recognized by the CelesTrak feed for the selected group. Check the CelesTrak documentation for valid SUPCAT identifiers, or leave the field blank.

### FAQ

| Question | Answer |
|---|---|
| What is a TLE? | A two-line element set is a standard format that encodes a satellite's orbital state at a specific epoch. It lets you predict the satellite's position with reasonable accuracy for a few days. |
| How often does CelesTrak update the data? | CelesTrak refreshes its GP feeds multiple times per day as new element sets are published by the U.S. Space Force. This Actor pulls the latest available data on each run. |
| Can I get TLEs for a single satellite? | Yes. Set the NORAD Catalog ID (e.g. 25544 for the ISS) or the International Designator (e.g. 1998-067A) and the Actor returns only that object. |
| What groups are available? | Over 50 groups: active satellites, space stations, visual objects, weather, navigation constellations (GPS, GLONASS, Galileo, BeiDou), communications (Starlink, OneWeb, Iridium), debris fields, amateur radio, CubeSats, and more. |
| How do I get every satellite in one run? | Enable the 'Fetch All Groups' checkbox. The Actor iterates every available group and merges the results into a single dataset. |
| Can I filter by orbital inclination? | Yes. Set a minimum inclination, a maximum inclination, or both, and only objects whose inclination falls within that range are kept. |
| What is a SUPCAT? | A supplementary catalogue identifier that some CelesTrak feeds support for operator-specific or mission-specific sub-catalogs. Leave it blank unless you need a particular sub-catalog. |
| Does this Actor need an API key? | No. It reads the public CelesTrak GP data feeds directly. No registration, no API key, no OAuth. |
| What export formats are supported? | You can export your dataset to CSV, JSON, Excel, or XML from the Apify platform. |
| How many satellites can I scrape in one run? | You can set maxItems up to 1,000,000. The active group alone contains tens of thousands of objects, and fetchAllGroups can return even more. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by CelesTrak. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

## `group` (type: `string`):

Pre-defined satellite group to retrieve. 'active' returns every active object. Specialized groups narrow to constellations, missions, or debris fields. Mutually exclusive with NORAD ID and International Designator (those take precedence).

## `fetchAllGroups` (type: `boolean`):

Iterate every available satellite group sequentially and merge results into one dataset. Overrides the single-group selection above. Useful for a complete catalogue snapshot in a single run.

## `supcat` (type: `string`):

Optional supplementary catalogue identifier (e.g. specific operator or mission catalog) supported by the upstream catalogue.

## `search` (type: `string`):

Filter results by object name (case-insensitive substring, e.g. 'STARLINK', 'ISS', 'NOAA'). Filter is applied after fetching the chosen group.

## `noradId` (type: `integer`):

Return only the object with this NORAD catalog ID (e.g. 25544 = ISS). Takes precedence over Group and International Designator.

## `objectId` (type: `string`):

Return only the object with this COSPAR international designator (e.g. '1998-067A' = ISS). Takes precedence over Group when set, but yields to NORAD Catalog ID if both are provided.

## `minInclination` (type: `number`):

Only include objects with orbital inclination greater than or equal to this value.

## `maxInclination` (type: `number`):

Only include objects with orbital inclination less than or equal to this value.

## `maxItems` (type: `integer`):

How many satellites to collect per run.

## Actor input object example

```json
{
  "group": "active",
  "fetchAllGroups": false,
  "supcat": "",
  "search": "",
  "objectId": "",
  "maxItems": 10
}
```

# Actor output Schema

## `overview` (type: `string`):

Overview of scraped data

## `fullData` (type: `string`):

Complete dataset

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/celestrak-tle-satellites-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "maxItems": 10 }

# Run the Actor and wait for it to finish
run = client.actor("parseforge/celestrak-tle-satellites-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxItems": 10
}' |
apify call parseforge/celestrak-tle-satellites-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/celestrak-tle-satellites-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/UbTtQN7e108Rpva0c/builds/hZOavON9m4tCazG3W/openapi.json
