{
  "openapi": "3.0.1",
  "info": {
    "title": "SpaceX Launches - Missions, Vehicles & Timelines",
    "description": "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.",
    "version": "1.2",
    "x-build-id": "6dJT82XGLwafUMrmP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~spacex-com/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-spacex-com",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/abotapi~spacex-com/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-spacex-com",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/abotapi~spacex-com/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-spacex-com",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "url"
            ],
            "type": "string",
            "description": "Choose 'search' to pull the full launch catalog with filters, or 'url' to fetch specific mission pages you paste below.",
            "default": "search"
          },
          "vehicle": {
            "title": "Vehicle",
            "enum": [
              "",
              "Falcon 9",
              "Falcon Heavy",
              "Falcon 1",
              "Starship"
            ],
            "type": "string",
            "description": "Limit results to a single launch vehicle. Leave as 'Any' for all vehicles.",
            "default": ""
          },
          "missionType": {
            "title": "Mission type",
            "enum": [
              "",
              "starlink",
              "commercialSatellite",
              "resupply",
              "nssl",
              "hsf",
              "rideshare",
              "science",
              "starship"
            ],
            "type": "string",
            "description": "Limit results to a single mission type.",
            "default": ""
          },
          "statusFilter": {
            "title": "Launch status",
            "enum": [
              "all",
              "past",
              "upcoming",
              "in-progress",
              "latest"
            ],
            "type": "string",
            "description": "Past = completed launches, Upcoming = scheduled, In progress = currently live. 'All' returns every status. 'Latest' returns only the single most recent completed launch that passes the other filters.",
            "default": "all"
          },
          "launchSiteContains": {
            "title": "Launch site contains",
            "type": "string",
            "description": "Optional text match against the launch site, e.g. 'Florida', 'California', 'SLC-40', 'Starbase'. Case-insensitive substring."
          },
          "dateFrom": {
            "title": "Launch date from",
            "type": "string",
            "description": "Only keep launches on or after this date (YYYY-MM-DD). Applies to launches that have a known date."
          },
          "dateTo": {
            "title": "Launch date to",
            "type": "string",
            "description": "Only keep launches on or before this date (YYYY-MM-DD). Applies to launches that have a known date."
          },
          "year": {
            "title": "Launch year",
            "minimum": 1900,
            "maximum": 2200,
            "type": "integer",
            "description": "Shortcut for a date window: keep launches from this calendar year. Combined with Launch date from/to, the narrower bound wins."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "date-desc",
              "date-asc"
            ],
            "type": "string",
            "description": "Order of the returned launches.",
            "default": "date-desc"
          },
          "urls": {
            "title": "Mission URLs",
            "type": "array",
            "description": "Paste spacex.com launch URLs: a mission page (https://www.spacex.com/launches/sl-10-22), its content.spacex.com missions API URL, the launches catalog page or launches-page-tiles API URL (expanded to launches, capped by 'Max launches'), or the launches-page-tiles/upcoming URL. Unrecognised URLs are skipped with a warning. Used only when mode is 'url'. Detail is always fetched for these.",
            "default": [
              "https://www.spacex.com/launches/sl-10-22",
              "https://www.spacex.com/launches",
              "https://content.spacex.com/api/spacex-website/launches-page-tiles/upcoming",
              "https://www.spacex.com/launches/starship-flight-11"
            ],
            "items": {
              "type": "string"
            }
          },
          "fetchDetails": {
            "title": "Fetch mission details",
            "type": "boolean",
            "description": "When on, each launch is enriched with an extra mission-page request that adds the write-up paragraphs, webcasts, pre/post-launch timelines, carousel images, and astronauts. Adds time and cost per launch. Only affects search mode: url mode always fetches full detail for every pasted URL regardless of this setting (see 'Mission URLs' above).",
            "default": false
          },
          "maxListings": {
            "title": "Max launches",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of launches to return. Set 0 for no limit (the full catalog is ~680 launches). Only applies in search mode; url mode has no cap and returns one record per pasted URL.",
            "default": 20
          },
          "proxy": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify datacenter proxy is enough; the data source is an open JSON API with no geo restriction. Residential is optional.",
            "default": {
              "useApifyProxy": true
            }
          },
          "resumeFromRunId": {
            "title": "Resume from run ID",
            "type": "string",
            "description": "ID of an interrupted run whose launches should not be re-fetched: this run skips the missions that run already delivered. Leave empty to start fresh. For recurring diff runs (new/updated only on a schedule) you don't need this - turn on Incremental mode below instead."
          },
          "incrementalMode": {
            "title": "Incremental mode (only push new or changed launches)",
            "type": "boolean",
            "description": "ON: the actor remembers the launches it delivered for this exact search scope (keyed automatically, or use State key below) and on each scheduled run classifies every launch as NEW, UPDATED, UNCHANGED or EXPIRED - pushing only new and changed rows plus EXPIRED tombstones, and stamping each row with changeType, changedFields, firstSeenAt and lastSeenAt. OFF (default): every run returns the full result set like before.",
            "default": false
          },
          "stateKey": {
            "title": "State key (optional)",
            "type": "string",
            "description": "Name for the incremental baseline when Incremental mode is ON. Leave empty to key the baseline on a hash of the search scope automatically (recommended). Use the same key across runs to compare like with like; a different key starts a new baseline."
          },
          "emitUnchanged": {
            "title": "Also push unchanged rows",
            "type": "boolean",
            "description": "With Incremental mode ON, also push launches that did not change (stamped changeType=UNCHANGED). Default OFF - unchanged launches are only remembered, not pushed.",
            "default": false
          },
          "emitExpired": {
            "title": "Push EXPIRED tombstones",
            "type": "boolean",
            "description": "With Incremental mode ON, push a tombstone row (changeType=EXPIRED, last known field values) for launches from the previous run that this run's search no longer returns - only when the search ran to completion. Default ON.",
            "default": true
          },
          "ignoreFieldsForChanges": {
            "title": "Ignore fields when detecting changes (incremental mode only)",
            "type": "array",
            "description": "With Incremental mode ON, dataset fields listed here never count as a change (they are excluded from changeType/changedFields while staying in the output). Use when a field you don't care about flickers run to run. The built-in defaults already cover the scrape timestamp.",
            "items": {
              "type": "string"
            }
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON — the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on items written to each connector per run. Does not affect the dataset.",
            "default": 50
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}