# SpaceX Scraper · Launches, Rockets, Payloads & Landings (`reapx/spacex-scraper`) Actor

Scrape SpaceX launches, rockets, payloads, launchpads, and landing details. Filter by year, rocket family, mission success, launch site, or payload type.

- **URL**: https://apify.com/reapx/spacex-scraper.md
- **Developed by:** [Tarek Etman](https://apify.com/reapx) (community)
- **Categories:** Developer tools, Business, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.30 / 1,000 launch scrapeds

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/platform/actors/running/actors-in-store#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

![reapX — public sources in, addressable records out](https://reapx.dev/reapx.gif)

## SpaceX Scraper · Launches, Rockets, Payloads & Landings

**SpaceX Scraper** collects historical and upcoming SpaceX launches, rocket vehicle configurations, payload manifests, launchpad sites, and core booster landing statistics. Filter launch records by year, rocket family model, launch outcome success status, launch site location, payload category, or keyword search query.

> Maintained by **reapX**. Every row cites the Apify run that produced it — nothing is inferred, modelled or filled in, and a field absent from the source is absent from the row. The extracted archive for this source is browsable at [reapx.dev/data/spacex-scraper/](https://reapx.dev/data/spacex-scraper/) and mirrored as an open dataset on [Hugging Face](https://huggingface.co/datasets/reapxdev/spacex-scraper) and [Kaggle](https://www.kaggle.com/datasets/reapxdev/spacex-scraper). Questions: reapxdev@proton.me

***

### How it works

The **SpaceX Scraper** queries public REST API endpoints to extract complete, structured SpaceX launch datasets. It retrieves data across:

1. **Launches**: Flight numbers, mission names, UTC launch timestamps, launch precision, flight success status, failure details, details notes, and media links.
2. **Rockets**: Rocket family names (Falcon 1, Falcon 9 v1.0/v1.1/Full Thrust/Block 5, Falcon Heavy, Starship), core serial numbers, reusability flight counts, and stage landing outcomes.
3. **Payloads**: Payload deployment lists, customer types (Starlink, Crew Dragon, Cargo Dragon, satellites, interplanetary space probes).
4. **Launchpads**: Launch site locations (Cape Canaveral SLC-40, Kennedy Space Center LC-39A, Vandenberg Space Force Base SLC-4E, Kwajalein Atoll, Starbase Boca Chica).

Data extraction is performed over lightweight HTTP requests without headless browser overhead. Records are streamed directly to the run's default dataset as they are scraped.

***

### ⬇️ Input

The scraper accepts JSON configuration input options to filter launch records precisely:

| Parameter | Type | Required | Default | Prefill | Description |
|---|---|---|---|---|---|
| `maxLaunches` | Integer | No | `100` | `100` | Maximum number of launch items to collect (1 to 1000). The higher the number, the longer the run takes and the more events are billed. |
| `year` | Integer | No | None | `2020` | Filter launches by 4-digit calendar year (2006 to 2026). Leave empty for all years. |
| `rocket` | String | No | None | `"falcon9"` | Filter launches by rocket model family (`falcon1`, `falcon9`, `falconheavy`, `starship`). |
| `launchpad` | String | No | None | `"slc_40"` | Filter launches by launchpad location ID (`slc_40`, `lc_39a`, `vafb_slc_4e`, `kwajalein`). |
| `payloadType` | String | No | None | `"Starlink"` | Filter launches by payload category (`Starlink`, `Crew Dragon`, `Dragon Cargo`, `Satellite`). |
| `successOnly` | Boolean | No | None | `true` | Filter launches by outcome (`true` for success, `false` for failure, empty for all). |
| `searchQuery` | String | No | None | `"Starlink"` | Keyword query to match against mission name or launch details. |

#### Example Input Configuration

```json
{
  "maxLaunches": 100,
  "year": 2020,
  "rocket": "falcon9",
  "launchpad": "lc_39a",
  "payloadType": "Crew Dragon",
  "successOnly": true,
  "searchQuery": "Crew"
}
```

***

### ⬆️ Output

Scraped records are output to the run's default dataset in clean JSON, CSV, Excel, XML, or HTML table format.

#### Example Output Item

```json
{
  "slug": "crew-demo-2",
  "launchId": "5eb87d46d7308c0006388650",
  "name": "Crew Demo-2",
  "flightNumber": 94,
  "dateUtc": "2020-05-30T19:22:00.000Z",
  "dateUnix": 1590866520,
  "datePrecision": "hour",
  "year": 2020,
  "rocket": "5e9d0d95eda69955f709d1ec",
  "rocketName": "Falcon 9",
  "success": true,
  "launchpad": "5e9e4502f57261680c3560b7",
  "launchpadName": "KSC LC 39A",
  "payloads": [
    "5eb0e4c6b6c3bb0006eeb255"
  ],
  "payloadTypes": "Crew Dragon",
  "details": "First crewed orbital spaceflight launched from US soil since STS-135 in 2011.",
  "upcoming": false,
  "webcastUrl": "https://www.youtube.com/watch?v=xY96v0OIc50",
  "wikipediaUrl": "https://en.wikipedia.org/wiki/Crew_Dragon_Demo-2",
  "articleUrl": "https://www.space.com/spacex-demo-2-crew-dragon-astronaut-launch.html",
  "patchImage": "https://images2.imgbox.com/bd/9f/O1O2y4Xq_o.png",
  "failures": "",
  "cores": "Core 5e9e2a9fed72164c0e0c243a, Flight 1, Reused: false, Landed: true",
  "scrapedAt": "2026-08-03T20:20:00.000Z"
}
```

***

### Output Fields Table

| Field Name | Type | Description |
|---|---|---|
| `slug` | String | Addressable entity page slug identifier (e.g. `crew-demo-2`). |
| `launchId` | String | Internal MongoDB ID string of the SpaceX launch record. |
| `name` | String | Official SpaceX mission or payload flight title. |
| `flightNumber` | Integer | Sequential SpaceX flight number. |
| `dateUtc` | String | ISO 8601 UTC timestamp of launch time. |
| `dateUnix` | Integer | Unix timestamp in seconds of launch time. |
| `datePrecision` | String | Precision rating of launch date (`hour`, `day`, `month`). |
| `year` | Integer | Four-digit calendar year of the launch. |
| `rocket` | String | Identifier string of launch vehicle rocket model. |
| `rocketName` | String | Human-readable rocket family name (e.g. Falcon 9). |
| `success` | Boolean | Mission flight outcome success indicator. |
| `launchpad` | String | Identifier of launch pad complex location. |
| `launchpadName` | String | Human-readable launch site location name. |
| `payloads` | Array | Array of payload IDs carried on the flight. |
| `payloadTypes` | String | Payload category designation. |
| `details` | String | Descriptive text summary of launch events. |
| `upcoming` | Boolean | Scheduled upcoming launch indicator. |
| `webcastUrl` | String | YouTube webcast video streaming URL. |
| `wikipediaUrl` | String | Wikipedia article link covering the mission. |
| `articleUrl` | String | News press release URL covering launch events. |
| `patchImage` | String | Direct URL to mission patch graphic image. |
| `failures` | String | Anomaly timing and failure cause summary. |
| `cores` | String | First stage core serial, reusability, and landing outcome details. |
| `scrapedAt` | String | ISO 8601 timestamp recording when record was extracted. |

***

### Pricing

This actor uses **Pay-Per-Event (PPE)** pricing:

- Primary event: `launch-scraped` at **$0.002** per launch item on the FREE tier.
- Tiered discounts apply across volume tiers (BRONZE, SILVER, GOLD, PLATINUM, DIAMOND).
- Platform compute costs are absorbed. Blocked, errored, or zero-result runs charge $0.

***

### ❓ FAQ

##### How are launch entity pages addressed?

Every launch item emits a unique `slug` derived from the official launch mission name (e.g. `falconsat`, `crew-demo-2`). The raw MongoDB identifier is preserved in `launchId`.

##### Does the scraper execute headless browsers?

No. The scraper uses fast HTTP APIs for low memory consumption, low compute unit cost, and rapid execution.

##### Are historical launch failures included?

Yes. Launches with anomalies carry failure timing and root cause explanations in the `failures` column, as well as `success: false`.

##### Where can I find the public extracted data archives?

Extracted datasets are maintained by reapX at [reapx.dev/data/spacex-scraper/](https://reapx.dev/data/spacex-scraper/) and mirrored on [Hugging Face](https://huggingface.co/datasets/reapxdev/spacex-scraper) and [Kaggle](https://www.kaggle.com/datasets/reapxdev/spacex-scraper).

***

### Disclaimer

Unofficial - not affiliated with SpaceX or Space Exploration Technologies Corp. Collects public data only. reapx. Contact: reapxdev@proton.me

### 🧪 Example input

A real, runnable configuration — this is an actual input this Actor has run with.

```json
{
  "year": 2006,
  "maxLaunches": 100
}
```

### 📄 Sample output

One real row from a real run of this Actor, unedited.

```json
{
  "slug": "falconsat",
  "launchId": "5eb87d46d7308c000638860e",
  "name": "FalconSat",
  "flightNumber": 1,
  "dateUtc": "2006-03-24T22:30:00.000Z",
  "dateUnix": 1143239400,
  "datePrecision": "hour",
  "year": 2006,
  "rocket": "5e9d0d95eda69955f709d1eb",
  "rocketName": "Falcon 1",
  "success": false,
  "launchpad": "5e9e4502f5726171363560b1",
  "launchpadName": "Kwajalein Atoll",
  "payloads": [
    "5eb0e4b5b6c3bb0006eeb1e1"
  ],
  "payloadTypes": "Satellite",
  "details": "Engine fire at T+33 seconds led to loss of vehicle",
  "upcoming": false,
  "webcastUrl": "https://www.youtube.com/watch?v=0a_00nJ_Y88",
  "wikipediaUrl": "https://en.wikipedia.org/wiki/Falcon_1",
  "articleUrl": "https://www.space.com/2196-spacex-inaugural-falcon-1-rocket-lost-launch.html",
  "patchImage": "https://images2.imgbox.com/3c/0e/T8iJcSN3_o.png",
  "failures": "Time: 33s, Reason: engine loss of thrust",
  "cores": "Core 5e9e2a9ed72163e3d40c2403, Flight 1, Reused: false, Landed: false",
  "scrapedAt": "2026-08-03T20:20:00.000Z"
}
```

### 💬 Your feedback

Found a bug, or need a field this does not return yet? Open an issue on the Actor's **Issues**
tab, or write to **reapxdev@proton.me**. Bugs get fixed and reasonable field requests get
added.

### ⚠️ Run outcomes and error handling

This Actor reports what happened in the run's **status message**, and it always keeps whatever it collected. These are the outcomes you can get and what each one means.

| Outcome | What it means |
|---|---|
| **Success** | Rows were returned and you were charged `launch-scraped` at $0.002 per row. |
| **No matches** | The source returned nothing for your filters. **Nothing is charged.** Widen the date window or drop a filter. |

#### What is guaranteed either way

- **Every row is pushed as it is built**, not buffered to the end of the run. Anything that buffers output loses everything to a timeout, a block or a migration; this does not.
- **A field absent from the source is absent from the row.** Nothing is inferred, modelled or filled in to make a row look complete.

# Actor input Schema

## `maxLaunches` (type: `integer`):

<b>Maximum number of SpaceX launch records to scrape and collect.</b><br><br>The higher the number, the longer the run takes and the more events are billed. Prefilled default is 100.<br><br>The higher the number, the longer the run takes and the more you are charged, because you pay per row returned.

## `year` (type: `integer`):

<b>Filter SpaceX missions by launch calendar year (e.g. <code>2020</code>).</b><br><br>Leave empty to scrape launches across all available years from 2006 to present. Higher ranges increase execution time and total events.

## `rocket` (type: `string`):

<b>Filter launches by launch vehicle rocket model or identifier (e.g. <code>falcon9</code>, falconheavy, falcon1, starship).</b><br><br>Leave empty to include missions using any rocket family.

## `launchpad` (type: `string`):

<b>Filter launches by launch site location code or identifier (e.g. <code>slc\_40</code>, lc\_39a, vafb\_slc\_4e, kwajalein).</b><br><br>Leave empty to scrape launch records across all launch pads.

## `payloadType` (type: `string`):

<b>Filter launches by payload category type (e.g. <code>Starlink</code>, Satellite, Dragon 1.0, Dragon 2.0, Crew Dragon, Cargo).</b><br><br>Leave empty to include missions carrying any type of payload.

## `successOnly` (type: `boolean`):

<b>Filter SpaceX missions by flight outcome status.</b><br><br>Set to true to collect successful missions only, false for failed launches, or leave empty to include all launches regardless of success.

## `searchQuery` (type: `string`):

<b>Search query to match against mission name or launch details (e.g. <code>Starlink</code>, CRS, Demo, Transporter, Crew).</b><br><br>Leave empty to collect all missions matching the main criteria.

## Actor input object example

```json
{
  "maxLaunches": 100,
  "year": 2020,
  "rocket": "falcon9",
  "launchpad": "slc_40",
  "payloadType": "Starlink",
  "searchQuery": "Starlink"
}
```

# Actor output Schema

## `results` (type: `string`):

Every SpaceX launch item collected by the scraper in the default 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 = {
    "maxLaunches": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("reapx/spacex-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 = { "maxLaunches": 100 }

# Run the Actor and wait for it to finish
run = client.actor("reapx/spacex-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 '{
  "maxLaunches": 100
}' |
apify call reapx/spacex-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,reapx/spacex-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/AadNgu5CnjCaoxjec/builds/nXPSHFQsbYNWRm30B/openapi.json
