SpaceX Launches - Missions, Vehicles & Timelines avatar

SpaceX Launches - Missions, Vehicles & Timelines

Pricing

from $1.00 / 1,000 results

Go to Apify Store
SpaceX Launches - Missions, Vehicles & Timelines

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

Abot API

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

Features

Limited permissions

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.

FieldExample
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"
directToCellfalse
isLivefalse
hasDetailstrue (set once mission detail was fetched)
imageDesktopUrl / imageMobileUrlhero image URLs
ongoingMissionImageDesktopUrl / ongoingMissionImageMobileUrllive-mission image URLs when present
descriptionplain-text mission write-up (detail only)
webcasts / webcastVideoIds / webcastVideoUrlsfull webcast objects, plus flattened id and URL lists (detail only)
carouselImageUrls / carouselMobileImageUrls / carouselVideoUrls / carouselCaptionsflattened lists from the mission image carousel (detail only)
astronauts / astronautPortraitUrlsfull crew objects, plus a flattened portrait URL list (detail only)
primaryVideoUrl / videoUrlsfirst available video link, and every mission, webcast and carousel video URL, deduplicated
preLaunchTimeline / postLaunchTimelinefull countdown and post-launch event timelines (detail only)
infographicDesktopUrl / infographicMobileUrlinfographic image URLs (detail only)
mediaraw 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

  1. Pick a mode: search (filter the whole catalog) or url (paste specific mission links).
  2. In search mode, set any filters you want (vehicle, mission type, status, launch site, date range) and a sort order.
  3. Turn on Fetch mission details if you want the write-up, webcasts, timelines, carousel and astronauts on each launch, and set Max launches.
  4. 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 ApifyClient
client = 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. The Fetch mission details toggle only affects search mode. In url mode, every pasted mission URL is processed with full detail requested and is not capped. Catalog URLs (see the table below) are expanded to launches and ARE capped by Max launches. 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.

Behaviour change: the Mission URLs field now ships with four distinct examples: one mission page, one Starship mission page, the launches catalog page and the upcoming-launches feed. A url-mode run that leaves the field untouched scrapes those (the same mission is never returned twice; the catalog and upcoming examples add up to Max launches launches). The remaining URL shapes in the table below (the content.spacex.com mission URL, apex host, trailing slash and query string) resolve to the same targets and are listed as prefill examples only. Clear the field and paste your own URLs to scrape only those.

Supported URL shapes

URL shapeExampleResult
Mission pagehttps://www.spacex.com/launches/sl-10-22That mission
Mission JSONhttps://content.spacex.com/api/spacex-website/missions/sl-10-22That mission
Launches pagehttps://www.spacex.com/launchesCatalog, up to Max launches
Catalog JSONhttps://content.spacex.com/api/spacex-website/launches-page-tilesCatalog, up to Max launches
Upcoming JSONhttps://content.spacex.com/api/spacex-website/launches-page-tiles/upcomingUpcoming launches, up to Max launches
Apex hosthttps://spacex.com/launches/sl-10-22That mission
Trailing slashhttps://www.spacex.com/launches/sl-10-22/That mission
Query stringhttps://www.spacex.com/launches/sl-10-22?foo=1That mission (query ignored)
Starship missionhttps://www.spacex.com/launches/starship-flight-11That mission

Any other URL is skipped and logged as a warning. The same mission pasted twice is returned once.

Compatibility fields and scope notes

Every launch also carries name (= title), status and status_description (= missionStatus), net and window_start (= launchDateTime, null when the launch has no date) and window_end (from endDate + endTime, null when spacex.com gives none). spacex.com publishes no launch window or outcome flag, so there is no success filter. It also exposes only aggregate totals for rockets and Dragon, not per-rocket, capsule, launchpad, crew or Starlink records, so those record kinds are not offered.

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.

  1. Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to 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

ParameterTypeDefaultDescription
modestringsearchsearch filters the full catalog; url fetches the mission pages you paste.
vehiclestring(any)Limit to one launch vehicle: Falcon 9, Falcon Heavy, Falcon 1, or Starship.
missionTypestring(any)Limit to one mission type, e.g. starlink, resupply, nssl, hsf, rideshare, science, starship.
statusFilterstringallpast, upcoming, in-progress, latest (only the single most recent completed launch that passes the other filters), or all.
yearinteger(none)Shortcut for a date window covering that calendar year; combined with dateFrom/dateTo the narrower bound wins.
launchSiteContainsstring(none)Case-insensitive substring match on the launch site, e.g. Florida, California, Starbase.
dateFromstring(none)Keep launches on or after this date (YYYY-MM-DD). Launches without a date are excluded once any date bound is set.
dateTostring(none)Keep launches on or before this date (YYYY-MM-DD). Launches without a date are excluded once any date bound is set.
sortBystringdate-descdate-desc (newest first) or date-asc (oldest first).
urlsarrayone example per supported shapeLaunch, mission and catalog URLs, used only in url mode. Detail is always fetched for these.
fetchDetailsbooleanfalseAdd the mission write-up, webcasts, timelines, carousel and astronauts per launch. Search mode only.
maxListingsinteger20Max launches to return in search mode. 0 means no limit.
proxyobjectApify datacenterConnection settings. Datacenter proxy is enough for this public feed.
resumeFromRunIdstring(none)Continue an interrupted run: launches it already delivered are skipped.
incrementalModebooleanfalseRemember delivered launches and push only NEW, UPDATED, REAPPEARED and EXPIRED rows.
stateKeystring(auto)Optional name for the incremental baseline; empty keys it on the inputs of the current mode (search filters in search mode, the pasted URLs in url mode).
emitUnchangedbooleanfalseWith incremental mode, also push unchanged launches (changeType UNCHANGED).
emitExpiredbooleantrueWith incremental mode, push tombstones for launches no longer in the catalog (complete reads only).
ignoreFieldsForChangesarray(none)Fields that never count as a change in incremental mode.
mcpConnectorsarray(none)Optional: send a summary of each record to apps you authorized under Integrations.
notionParentPageUrlstring(none)Notion connector only: page under which records are created.
maxNotifyListingsinteger50Cap 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

This scraper reads spacex.com's public content feed, which answers datacenter connections without a challenge, so no residential proxy is needed and the default proxy setting is enough on any plan that includes Apify proxy.

  • Free plan: Apify free plans do not include proxy access. If the default connection is refused, the run logs "The selected connection is unavailable to this run. Apify free plans do not include residential proxies. Continuing on a backup connection; some pages may still be unavailable.", then serves pages over a backup connection and logs "Served over the backup connection (the default connection was unavailable)."
  • Proxy refused for the account: if the proxy connection is refused and no backup lane is left, the run fails with "The proxy connection was refused for this account, so no page could be read. Your Apify plan does not include proxy access; a paid plan is required." If you entered your own proxy URLs, check that their credentials are valid.
  • Backup could not load the pages: the run fails with "No results: residential proxies are unavailable on this run (Apify free plans do not include them), and the backup connection could not load the requested SpaceX pages." Upgrade your plan or supply your own proxy URLs, then try again.
  • Other connection failures: the run fails with "Could not load any results page (the requests failed), so nothing was collected. This is a connection problem, not an empty search." Try again later.

Only an explicit refusal of the proxy connection counts as a plan problem; a site error or a timeout never switches connections.

FAQ

How much does it cost?

You pay per record returned (the result event), plus a Detail enrichment event (detail-enrichment) 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 Detail enrichment event is charged once per record, right after that record is saved, and only for records that actually include mission detail: never for a record whose detail fetch failed (saved as a plain launch row), an unchanged record that incremental mode suppresses, or a record skipped by resume. The Pricing tab shows the current rates. Use Max launches to cap the cost of a search-mode run.

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 and turn on Incremental mode in the Resume & recurring updates section. The actor remembers the launches it delivered for your exact filters (or for your own State key) and on each run pushes only what is new or changed, stamping every row with changeType (NEW, UPDATED, REAPPEARED, EXPIRED), changedFields, firstSeenAt and lastSeenAt. Unchanged launches are skipped and are not billed; switch on Also push unchanged rows to receive them. EXPIRED tombstones for launches that left the catalog are pushed only when the whole filtered catalog was read (not when Max launches cut it short, in url mode, or when resuming); switch them off with Push EXPIRED tombstones. Use Ignore fields when detecting changes for fields you do not want to count as a change. With Incremental mode off (the default), every run returns the full filtered set. To continue an interrupted run, paste its ID into Resume from run ID and the launches it already delivered are skipped.

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. That setting only applies to search mode. Max launches caps catalog URLs only. 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...
🚗 Drom.ru Scraper
Scrape drom.ru vehicle listings: make/model/year/mileage, price, engine and transmission...
🚗 Carsales.com.au Scraper
Scrape structured vehicle listings from Carsales.com.au from $1 per 1K results. Built to...
🚗 AutoTrader UK Scraper
Pull structured vehicle listings from autotrader.co.uk at scale. Search by filters or use...

👉 Browse all abotapi scrapers

💬 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.