AutomationFlowsWeb Scraping › St-05 Fleet Commander

St-05 Fleet Commander

ST-05 Fleet Commander. Uses httpRequest. Scheduled trigger; 9 nodes.

Cron / scheduled trigger★★★★☆ complexity9 nodesHTTP Request
Web Scraping Trigger: Cron / scheduled Nodes: 9 Complexity: ★★★★☆ Added:

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "updatedAt": "2026-05-27T07:18:59.604Z",
  "createdAt": "2026-05-27T00:27:10.602Z",
  "id": "Vb1VCWThIkn9nZZJ",
  "name": "ST-05 Fleet Commander",
  "description": null,
  "active": true,
  "isArchived": false,
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes",
              "minutesInterval": 2
            }
          ]
        }
      },
      "id": "821887fc",
      "name": "Every 2 min",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.1,
      "position": [
        100,
        300
      ]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "https://api.spacetraders.io/v2/my/ships",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "httpHeaderAuth",
        "alwaysOutputData": true
      },
      "id": "4ab23f95",
      "name": "List Ships",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        300,
        300
      ],
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "\nconst d = $input.first().json;\nconst ships = Array.isArray(d.data) ? d.data : (Array.isArray(d) ? d : []);\nreturn ships.map(s => ({json: s}));\n"
      },
      "id": "0d14f90d",
      "name": "Unpack Ships",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        500,
        300
      ]
    },
    {
      "parameters": {
        "batchSize": 1,
        "options": {}
      },
      "id": "197b346c",
      "name": "Each Ship",
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 3,
      "position": [
        700,
        300
      ]
    },
    {
      "parameters": {
        "jsCode": "\nconst s = $input.first().json;\nconst fuelPct = s.fuel?.capacity > 0 ? s.fuel.current / s.fuel.capacity : 1;\nconst status = s.nav?.status;\nconst arrival = new Date(s.nav?.route?.arrival).getTime();\nconst now = Date.now();\nif (status === 'IN_TRANSIT' && now < arrival) return [{json:{ship:s.symbol, action:'skip'}}];\nif (!s.fuel?.capacity) return [{json:{ship:s.symbol, action:'skip'}}]; // probe\nif (status === 'DOCKED' && fuelPct < 0.20) return [{json:{ship:s.symbol, action:'refuel'}}];\nif (status === 'DOCKED') return [{json:{ship:s.symbol, action:'orbit'}}];\nreturn [{json:{ship:s.symbol, action:'skip'}}];\n"
      },
      "id": "c90ded08",
      "name": "Decide",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        900,
        300
      ]
    },
    {
      "parameters": {
        "mode": "rules",
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "caseSensitive": true
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "4c11ed06",
                    "leftValue": "={{ $json.action }}",
                    "rightValue": "refuel",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    }
                  }
                ]
              },
              "renameOutput": false
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": true
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "0d8e0e60",
                    "leftValue": "={{ $json.action }}",
                    "rightValue": "orbit",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    }
                  }
                ]
              },
              "renameOutput": false
            }
          ]
        },
        "fallbackOutput": "extra",
        "options": {}
      },
      "id": "5c45fa1d",
      "name": "Switch",
      "type": "n8n-nodes-base.switch",
      "typeVersion": 3.2,
      "position": [
        1100,
        300
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "=https://api.spacetraders.io/v2/my/ships/{{$json.ship}}/refuel",
        "options": {},
        "continueOnFail": true,
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "httpHeaderAuth"
      },
      "id": "ed10d0dc",
      "name": "Refuel",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1300,
        200
      ],
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "=https://api.spacetraders.io/v2/my/ships/{{$json.ship}}/orbit",
        "options": {},
        "continueOnFail": true,
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "httpHeaderAuth"
      },
      "id": "dae49e5b",
      "name": "Orbit",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1300,
        340
      ],
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "http://localhost:5678/webhook/spaceship-notify",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\"title\":\"\ud83d\ude80 Fleet Commander\",\"message\":\"{{ $json.ship }}: {{ $json.action }}\",\"severity\":\"info\"}",
        "options": {}
      },
      "id": "73f2086b",
      "name": "Skip",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1300,
        480
      ]
    }
  ],
  "connections": {
    "Every 2 min": {
      "main": [
        [
          {
            "node": "List Ships",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "List Ships": {
      "main": [
        [
          {
            "node": "Unpack Ships",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Unpack Ships": {
      "main": [
        [
          {
            "node": "Each Ship",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Each Ship": {
      "main": [
        [],
        [
          {
            "node": "Decide",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Decide": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch": {
      "main": [
        [
          {
            "node": "Refuel",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Orbit",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Skip",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1",
    "errorWorkflow": "UBBtoeMsOM2deZTM"
  },
  "staticData": {
    "node:Every 2 min": {
      "recurrenceRules": []
    }
  },
  "meta": null,
  "versionId": "a94d3d89-e92d-4369-ab3e-64ceb4ebc40b",
  "activeVersionId": "a94d3d89-e92d-4369-ab3e-64ceb4ebc40b",
  "versionCounter": 27,
  "triggerCount": 1,
  "shared": [
    {
      "updatedAt": "2026-05-27T00:27:10.605Z",
      "createdAt": "2026-05-27T00:27:10.605Z",
      "role": "workflow:owner",
      "workflowId": "Vb1VCWThIkn9nZZJ",
      "projectId": "pQ9yqqsBtuSGk44p",
      "project": {
        "updatedAt": "2026-01-15T01:26:38.562Z",
        "createdAt": "2026-01-15T01:25:22.740Z",
        "id": "pQ9yqqsBtuSGk44p",
        "name": "Martin Castaneda <martinjosecastaneda1@gmail.com>",
        "type": "personal",
        "icon": null,
        "description": null,
        "creatorId": "57a0ed57-85ea-48e0-a5d9-21b1a9cc107c"
      }
    }
  ],
  "tags": [],
  "activeVersion": {
    "updatedAt": "2026-05-27T05:50:32.955Z",
    "createdAt": "2026-05-27T05:50:32.955Z",
    "versionId": "a94d3d89-e92d-4369-ab3e-64ceb4ebc40b",
    "workflowId": "Vb1VCWThIkn9nZZJ",
    "nodes": [
      {
        "parameters": {
          "rule": {
            "interval": [
              {
                "field": "minutes",
                "minutesInterval": 2
              }
            ]
          }
        },
        "id": "821887fc",
        "name": "Every 2 min",
        "type": "n8n-nodes-base.scheduleTrigger",
        "typeVersion": 1.1,
        "position": [
          100,
          300
        ]
      },
      {
        "parameters": {
          "method": "GET",
          "url": "https://api.spacetraders.io/v2/my/ships",
          "options": {},
          "authentication": "predefinedCredentialType",
          "nodeCredentialType": "httpHeaderAuth",
          "alwaysOutputData": true
        },
        "id": "4ab23f95",
        "name": "List Ships",
        "type": "n8n-nodes-base.httpRequest",
        "typeVersion": 4.2,
        "position": [
          300,
          300
        ],
        "credentials": {
          "httpHeaderAuth": {
            "id": "56bs6PUHWdbliMlu",
            "name": "SpaceTraders Auth"
          }
        }
      },
      {
        "parameters": {
          "jsCode": "\nconst d = $input.first().json;\nconst ships = Array.isArray(d.data) ? d.data : (Array.isArray(d) ? d : []);\nreturn ships.map(s => ({json: s}));\n"
        },
        "id": "0d14f90d",
        "name": "Unpack Ships",
        "type": "n8n-nodes-base.code",
        "typeVersion": 2,
        "position": [
          500,
          300
        ]
      },
      {
        "parameters": {
          "batchSize": 1,
          "options": {}
        },
        "id": "197b346c",
        "name": "Each Ship",
        "type": "n8n-nodes-base.splitInBatches",
        "typeVersion": 3,
        "position": [
          700,
          300
        ]
      },
      {
        "parameters": {
          "jsCode": "\nconst s = $input.first().json;\nconst fuelPct = s.fuel?.capacity > 0 ? s.fuel.current / s.fuel.capacity : 1;\nconst status = s.nav?.status;\nconst arrival = new Date(s.nav?.route?.arrival).getTime();\nconst now = Date.now();\nif (status === 'IN_TRANSIT' && now < arrival) return [{json:{ship:s.symbol, action:'skip'}}];\nif (!s.fuel?.capacity) return [{json:{ship:s.symbol, action:'skip'}}]; // probe\nif (status === 'DOCKED' && fuelPct < 0.20) return [{json:{ship:s.symbol, action:'refuel'}}];\nif (status === 'DOCKED') return [{json:{ship:s.symbol, action:'orbit'}}];\nreturn [{json:{ship:s.symbol, action:'skip'}}];\n"
        },
        "id": "c90ded08",
        "name": "Decide",
        "type": "n8n-nodes-base.code",
        "typeVersion": 2,
        "position": [
          900,
          300
        ]
      },
      {
        "parameters": {
          "mode": "rules",
          "rules": {
            "values": [
              {
                "conditions": {
                  "options": {
                    "caseSensitive": true
                  },
                  "combinator": "and",
                  "conditions": [
                    {
                      "id": "4c11ed06",
                      "leftValue": "={{ $json.action }}",
                      "rightValue": "refuel",
                      "operator": {
                        "type": "string",
                        "operation": "equals"
                      }
                    }
                  ]
                },
                "renameOutput": false
              },
              {
                "conditions": {
                  "options": {
                    "caseSensitive": true
                  },
                  "combinator": "and",
                  "conditions": [
                    {
                      "id": "0d8e0e60",
                      "leftValue": "={{ $json.action }}",
                      "rightValue": "orbit",
                      "operator": {
                        "type": "string",
                        "operation": "equals"
                      }
                    }
                  ]
                },
                "renameOutput": false
              }
            ]
          },
          "fallbackOutput": "extra",
          "options": {}
        },
        "id": "5c45fa1d",
        "name": "Switch",
        "type": "n8n-nodes-base.switch",
        "typeVersion": 3.2,
        "position": [
          1100,
          300
        ]
      },
      {
        "parameters": {
          "method": "POST",
          "url": "=https://api.spacetraders.io/v2/my/ships/{{$json.ship}}/refuel",
          "options": {},
          "continueOnFail": true,
          "authentication": "predefinedCredentialType",
          "nodeCredentialType": "httpHeaderAuth"
        },
        "id": "ed10d0dc",
        "name": "Refuel",
        "type": "n8n-nodes-base.httpRequest",
        "typeVersion": 4.2,
        "position": [
          1300,
          200
        ],
        "credentials": {
          "httpHeaderAuth": {
            "id": "56bs6PUHWdbliMlu",
            "name": "SpaceTraders Auth"
          }
        }
      },
      {
        "parameters": {
          "method": "POST",
          "url": "=https://api.spacetraders.io/v2/my/ships/{{$json.ship}}/orbit",
          "options": {},
          "continueOnFail": true,
          "authentication": "predefinedCredentialType",
          "nodeCredentialType": "httpHeaderAuth"
        },
        "id": "dae49e5b",
        "name": "Orbit",
        "type": "n8n-nodes-base.httpRequest",
        "typeVersion": 4.2,
        "position": [
          1300,
          340
        ],
        "credentials": {
          "httpHeaderAuth": {
            "id": "56bs6PUHWdbliMlu",
            "name": "SpaceTraders Auth"
          }
        }
      },
      {
        "parameters": {
          "method": "POST",
          "url": "http://localhost:5678/webhook/spaceship-notify",
          "sendBody": true,
          "specifyBody": "json",
          "jsonBody": "={\"title\":\"\ud83d\ude80 Fleet Commander\",\"message\":\"{{ $json.ship }}: {{ $json.action }}\",\"severity\":\"info\"}",
          "options": {}
        },
        "id": "73f2086b",
        "name": "Skip",
        "type": "n8n-nodes-base.httpRequest",
        "typeVersion": 4.2,
        "position": [
          1300,
          480
        ]
      }
    ],
    "connections": {
      "Every 2 min": {
        "main": [
          [
            {
              "node": "List Ships",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "List Ships": {
        "main": [
          [
            {
              "node": "Unpack Ships",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Unpack Ships": {
        "main": [
          [
            {
              "node": "Each Ship",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Each Ship": {
        "main": [
          [],
          [
            {
              "node": "Decide",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Decide": {
        "main": [
          [
            {
              "node": "Switch",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Switch": {
        "main": [
          [
            {
              "node": "Refuel",
              "type": "main",
              "index": 0
            }
          ],
          [
            {
              "node": "Orbit",
              "type": "main",
              "index": 0
            }
          ],
          [
            {
              "node": "Skip",
              "type": "main",
              "index": 0
            }
          ]
        ]
      }
    },
    "authors": "Martin Castaneda",
    "name": null,
    "description": null,
    "autosaved": false,
    "workflowPublishHistory": [
      {
        "createdAt": "2026-05-27T05:50:33.197Z",
        "id": 126,
        "workflowId": "Vb1VCWThIkn9nZZJ",
        "versionId": "a94d3d89-e92d-4369-ab3e-64ceb4ebc40b",
        "event": "activated",
        "userId": "57a0ed57-85ea-48e0-a5d9-21b1a9cc107c"
      },
      {
        "createdAt": "2026-05-27T07:18:59.690Z",
        "id": 150,
        "workflowId": "Vb1VCWThIkn9nZZJ",
        "versionId": "a94d3d89-e92d-4369-ab3e-64ceb4ebc40b",
        "event": "activated",
        "userId": "57a0ed57-85ea-48e0-a5d9-21b1a9cc107c"
      },
      {
        "createdAt": "2026-05-27T07:18:59.565Z",
        "id": 149,
        "workflowId": "Vb1VCWThIkn9nZZJ",
        "versionId": "a94d3d89-e92d-4369-ab3e-64ceb4ebc40b",
        "event": "deactivated",
        "userId": "57a0ed57-85ea-48e0-a5d9-21b1a9cc107c"
      }
    ]
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

ST-05 Fleet Commander. Uses httpRequest. Scheduled trigger; 9 nodes.

Source: https://github.com/mcastae813/SpaceShipIO/blob/27d6be2300fffb7224f8d2c78368363aed63e0cf/workflows/05-fleet.json — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

Birthday Automation - Production (Fixed). Uses stopAndError, httpRequest, emailSend, bannerbear. Scheduled trigger; 86 nodes.

Stop And Error, HTTP Request, Email Send +1
Web Scraping

This template runs two scheduled workflows to govern Microsoft Entra ID (Azure AD) guest accounts by detecting stale users via Microsoft Graph, staging deletions in SharePoint with a 72-hour window, n

Microsoft SharePoint, Microsoft Teams, Microsoft Entra +1
Web Scraping

Jira-Allure-Auto-Qa. Uses httpRequest, jira. Scheduled trigger; 68 nodes.

HTTP Request, Jira
Web Scraping

Spotify-Sync-Surrealdb-V1. Uses httpRequest, n8n-nodes-surrealdb, spotify. Scheduled trigger; 62 nodes.

HTTP Request, N8N Nodes Surrealdb, Spotify
Web Scraping

As n8n instances scale, teams often lose track of sub-workflows—who uses them, where they are referenced, and whether they can be safely updated. This leads to inefficiencies like unnecessary copies o

HTTP Request, n8n, N8N Trigger +1