SpaceX Launches - Missions, Vehicles & Timelines
Pricing
from $1.00 / 1,000 results
SpaceX Launches - Missions, Vehicles & Timelines
Pull the full SpaceX launch catalog from spacex.com in clean JSON. Filter by vehicle, mission type, status, launch site, or date range. Returns vehicle, mission status, sites, date/time, images, mission links, and optional write-ups, webcasts, timelines, and carousel imagery.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
SpaceX Scraper: Launches, Missions & Webcasts
SpaceX Scraper turns the public spacex.com launch catalog into clean structured data. Get every Falcon 9, Falcon Heavy, Falcon 1 and Starship launch, past, in progress and upcoming, in a single run, with vehicle, mission type, status, launch and return site, date and time, and hero images. Filter the whole catalog by vehicle, mission type, status, launch site or date range, or paste specific mission page links. Turn on mission detail to add the full write-up, webcasts, pre and post launch timelines, carousel imagery and crew details. Export to JSON, CSV or Excel, or pull the results straight into your app through the API.
Why This Scraper?
- The entire catalog in one run. Past, in-progress and upcoming missions, roughly 700 launches, come from a single upstream request with no pagination to walk.
- Two ways to find data. Filter the whole catalog by vehicle, mission type, status, launch site and date range, or paste mission links directly. No need to build search queries by hand.
- Optional mission detail. Switch on the full write-up, webcasts, timelines, carousel images and crew details per launch, billed only for records that include it.
- Structured straight from the site's own content feed. Fields match what is shown on the page, plus the complete raw source object so nothing is lost.
- Client-side filters that compose. Combine vehicle, mission type, status, a launch site substring and a date window, then sort newest or oldest first.
- URL mode always requests full detail. Paste a mission link and the actor fetches the complete mission page for it, independent of the search-mode caps.
Use Cases
- Space news and content teams: build launch previews, recaps and timelines automatically from the mission write-ups and images.
- Space enthusiasts and hobby trackers: keep a personal or community feed of upcoming and in-progress launches.
- Data analysts and researchers: build a historical dataset of vehicles, mission types, launch sites and cadence over time.
- App and dashboard builders: feed launch schedules, countdowns and webcast links into a website, bot or notification tool.
- Educators and content creators: pull crew details, mission descriptions and imagery for presentations and social posts.
Data You Get
Sample shape: values are illustrative placeholders, not from a live record.
| Field | Example |
|---|---|
missionId | "sample-mission-1" |
title | "Sample Mission" |
url | "https://www.spacex.com/launches/sample-mission-1" |
vehicle | "Falcon 9" (also "Falcon Heavy", "Falcon 1", "Starship") |
missionType | "starlink" (also "resupply", "hsf", "nssl", and more) |
missionStatus | "final" (also "upcoming", "in-progress") |
launchSite / returnSite | "Sample Launch Complex, Florida" / "Droneship" |
launchDate / launchTime | "2024-05-01" / "08:00:00" |
launchDateTime | "2024-05-01T08:00:00" |
callToAction | "REWATCH" |
directToCell | false |
isLive | false |
hasDetails | true (set once mission detail was fetched) |
imageDesktopUrl / imageMobileUrl | hero image URLs |
ongoingMissionImageDesktopUrl / ongoingMissionImageMobileUrl | live-mission image URLs when present |
description | plain-text mission write-up (detail only) |
webcasts / webcastVideoIds / webcastVideoUrls | full webcast objects, plus flattened id and URL lists (detail only) |
carouselImageUrls / carouselMobileImageUrls / carouselVideoUrls / carouselCaptions | flattened lists from the mission image carousel (detail only) |
astronauts / astronautPortraitUrls | full crew objects, plus a flattened portrait URL list (detail only) |
primaryVideoUrl / videoUrls | first available video link, and every mission, webcast and carousel video URL, deduplicated |
preLaunchTimeline / postLaunchTimeline | full countdown and post-launch event timelines (detail only) |
infographicDesktopUrl / infographicMobileUrl | infographic image URLs (detail only) |
media | raw media block for missions that carry one, passed through verbatim (rare; detail only) |
Every raw field from the site's own tile and mission-detail payloads is also passed through verbatim (shortTitle, endDate/endTime, toTheIssTense, vehicleTrackerEnabled, and more), so nothing the site adds is ever dropped, even before this table catches up.
How to Use
- Pick a mode:
search(filter the whole catalog) orurl(paste specific mission links). - In search mode, set any filters you want (vehicle, mission type, status, launch site, date range) and a sort order.
- Turn on Fetch mission details if you want the write-up, webcasts, timelines, carousel and astronauts on each launch, and set Max launches.
- Click Start, then download the dataset as JSON, CSV or Excel, or read it through the API.
Search the whole catalog, newest first, 20 launches:
{"mode": "search","maxListings": 20,"sortBy": "date-desc"}
Only Starship launches, with full mission detail:
{"mode": "search","vehicle": "Starship","fetchDetails": true,"maxListings": 0}
Resupply missions to Florida in a date window:
{"mode": "search","missionType": "resupply","launchSiteContains": "Florida","dateFrom": "2023-01-01","dateTo": "2023-12-31"}
Fetch specific mission pages by URL:
{"mode": "url","urls": ["https://www.spacex.com/launches/sample-mission-1","https://www.spacex.com/launches/sample-mission-2"]}
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/spacex-com").call(run_input={"mode": "search", "vehicle": "Starship", "maxListings": 10})for launch in client.dataset(run["defaultDatasetId"]).iterate_items():print(launch["title"], launch["launchDate"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('abotapi/spacex-com').call({ mode: 'search', vehicle: 'Starship', maxListings: 10 });const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.
Max launches and mission URLs
Max launches (maxListings) caps how many records a search-mode run returns; set it to 0 to pull the entire catalog in one run. This cap, and the Fetch mission details toggle, only affect search mode. Pasting mission URLs in url mode ignores both: every valid pasted URL is processed with full detail requested, with no cap. If a mission's detail page cannot be read, that launch still comes back with its catalog fields; a URL that matches no known mission is skipped.
Send results into your apps (MCP connectors)
Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.
What gets written to the connector: a condensed, human-readable summary of each record, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.
- Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
- For Notion, also set
notionParentPageUrlto the page where items should be created.
The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | search | search filters the full catalog; url fetches the mission pages you paste. |
vehicle | string | (any) | Limit to one launch vehicle: Falcon 9, Falcon Heavy, Falcon 1, or Starship. |
missionType | string | (any) | Limit to one mission type, e.g. starlink, resupply, nssl, hsf, rideshare, science, starship. |
statusFilter | string | all | past, upcoming, in-progress, or all. |
launchSiteContains | string | (none) | Case-insensitive substring match on the launch site, e.g. Florida, California, Starbase. |
dateFrom | string | (none) | Keep launches on or after this date (YYYY-MM-DD). Launches without a date are excluded once any date bound is set. |
dateTo | string | (none) | Keep launches on or before this date (YYYY-MM-DD). Launches without a date are excluded once any date bound is set. |
sortBy | string | date-desc | date-desc (newest first) or date-asc (oldest first). |
urls | array | (none) | Mission page URLs, used only in url mode. Detail is always fetched for these. |
fetchDetails | boolean | false | Add the mission write-up, webcasts, timelines, carousel and astronauts per launch. Search mode only. |
maxListings | integer | 20 | Max launches to return in search mode. 0 means no limit. |
proxy | object | Apify datacenter | Connection settings. Datacenter proxy is enough for this public feed. |
mcpConnectors | array | (none) | Optional: send a summary of each record to apps you authorized under Integrations. |
notionParentPageUrl | string | (none) | Notion connector only: page under which records are created. |
maxNotifyListings | integer | 50 | Cap on items written to each connector per run. |
Output Example
Sample shape: values are illustrative placeholders, not from a live record.
{"id": 1042,"documentId": "sample1documentid001","missionId": "sample-mission-1","url": "https://www.spacex.com/launches/sample-mission-1","title": "Sample Mission","vehicle": "Falcon 9","missionType": "starlink","missionStatus": "final","launchSite": "Sample Launch Complex, Florida","returnSite": "Droneship","launchDate": "2024-05-01","launchTime": "08:00:00","launchDateTime": "2024-05-01T08:00:00","callToAction": "REWATCH","directToCell": false,"isLive": false,"hasDetails": true,"imageDesktopUrl": "https://example-cdn.test/assets/sample-mission-1-desktop.jpg","imageMobileUrl": "https://example-cdn.test/assets/sample-mission-1-mobile.jpg","description": "On a sample date, a Falcon 9 launched a batch of satellites to low Earth orbit from a sample launch complex in Florida.","webcastVideoUrls": ["https://example.test/watch/sample-mission-1"],"carouselImageUrls": ["https://example-cdn.test/assets/sample-mission-1-carousel-1.jpg"],"primaryVideoUrl": "https://example.test/watch/sample-mission-1"}
Plan Requirement
The default proxy setting works out of the box against this public content feed. If a request is refused, the run retries automatically with a fresh connection. For heavier or more frequent runs, a residential proxy group is available; pick it under Connection.
FAQ
How much does it cost?
You pay per record returned, plus a detail charge for records that include mission detail: in search mode only when Fetch mission details is on, and for every record in url mode, which always requests detail. The Pricing tab shows the current rates. Use Max launches to cap the cost of a search-mode run.
Is it legal to scrape SpaceX?
This actor collects only publicly available launch data from spacex.com. You are responsible for how you use it: follow SpaceX's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Mission facts and dates are generally public, but photos, videos and write-ups may be subject to third-party rights.
Can I run this on a schedule to catch new launches?
Yes, schedule the actor from the Schedules tab. There is no incremental mode: each run returns the full filtered set again, not just what changed since the last run. To find newly added launches yourself, compare missionId values against your previous run's dataset, or narrow dateFrom to the last date you already collected.
Why does url mode return full detail even when Fetch mission details is off?
Url mode always fetches the complete mission page for every URL you paste, regardless of Fetch mission details or Max launches. Those two settings only apply to search mode. Paste a link and you get one record back with full detail. If that mission's detail page cannot be read, the record still comes back with its catalog fields, and a warning appears in the log.
Why did my run fail instead of returning an empty dataset?
If the initial catalog request keeps failing after automatic retries, which is rare, the run stops with a one-line error instead of returning an empty dataset, so "no launches matched your filters" is never confused with "the catalog could not be read". A failed detail fetch for a single mission does not fail the run: that launch is still returned, just without the extra detail fields.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.
🔗 Want more car data?
Pair this actor with these related scrapers from the same team:
| 🚗 Turo Scraper Collect Turo vehicles by location and trip dates or listing URLs. Get make, model, year... | 🏷️ Tutti.ch Scraper Scrape listings from tutti.ch across all 23 categories, including vehicles, property... |
| 🚗 Cars.com Scraper Scrape cars.com listings by make, ZIP and radius. 90+ fields per car: price, MSRP... | 🏷️ Kijiji.ca Scraper Scrape Kijiji.ca listings across property, vehicles, jobs, electronics, furniture... |
| 🚗 Carsales.com.au Scraper Scrape structured vehicle listings from Carsales.com.au from $1 per 1K results. Built to... | 🚗 Autotrader US Scrape US car listings from Autotrader by make, model, ZIP, price, year, body style... |
💬 Support
- 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
- 🛠️ Need another site, extra fields or a private build? Email contact@abotapi.com.
- ⭐ Enjoying it? A quick review on the actor page helps other users find it.