AutomationFlowsEmail & Gmail › Monitor Flight Price Drops and Send Email Alerts with Serpapi and Gmail

Monitor Flight Price Drops and Send Email Alerts with Serpapi and Gmail

ByYash Choudhary @yashnitiim on n8n.io

🚨It is difficult to manually track changing flight prices and quickly identify the best time to book a ticket. Many travelers miss deals or spend too much time monitoring fares for their specific routes and travel dates. An active SerpAPI account (for flight search API access)…

Cron / scheduled trigger★★★★☆ complexity5 nodesHTTP RequestGmail
Email & Gmail Trigger: Cron / scheduled Nodes: 5 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #6503 — we link there as the canonical source.

This workflow follows the Gmail → HTTP Request recipe pattern — see all workflows that pair these two integrations.

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
{
  "id": "s2ucjAukkvRz8P1W",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Flight Price Drop Indicator",
  "tags": [],
  "nodes": [
    {
      "id": "758fdc37-1f36-4d00-b402-d9731f1efce8",
      "name": "Cron",
      "type": "n8n-nodes-base.cron",
      "position": [
        -400,
        -96
      ],
      "parameters": {
        "triggerTimes": {
          "item": [
            {
              "hour": 8
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "f12725fa-a814-452c-bfda-44dfa72f8a52",
      "name": "Fetch Price - SerpAPI",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -176,
        -96
      ],
      "parameters": {
        "url": "https://serpapi.com/search?engine=google_flights",
        "options": {},
        "authentication": "predefinedCredentialType",
        "queryParametersUi": {
          "parameter": [
            {
              "name": "departure_id",
              "value": "BLR"
            },
            {
              "name": "arrival_id",
              "value": "DEL"
            },
            {
              "name": "outbound_date",
              "value": "2025-09-06"
            },
            {
              "name": "currency",
              "value": "INR"
            },
            {
              "name": "type",
              "value": "2"
            }
          ]
        },
        "nodeCredentialType": "serpApi"
      },
      "credentials": {
        "serpApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "9a29e1f9-e22f-4a3c-8e60-73ddaa661f6e",
      "name": "Check Price Drop",
      "type": "n8n-nodes-base.function",
      "position": [
        48,
        -96
      ],
      "parameters": {
        "functionCode": "const result = items[0].json;\nlet price = null;\n\ntry {\n  price = result.best_flights[0].price;\n} catch (e) {\n  price = 999999; // fallback if no price found\n}\n\nconst threshold = 4000; // you can update this\n\nreturn [{\n  json: {\n    priceDrop: price < threshold,\n    currentPrice: price\n  }\n}];"
      },
      "typeVersion": 1
    },
    {
      "id": "2240c223-c9c9-428d-85cd-d56ad11eb728",
      "name": "IF Price Dropped?",
      "type": "n8n-nodes-base.if",
      "position": [
        272,
        -96
      ],
      "parameters": {
        "conditions": {
          "boolean": [
            {
              "value1": "={{ $json[\"priceDrop\"] }}",
              "value2": true
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "65fb8b03-8fab-45a4-b24a-21b3c692ea7a",
      "name": "Send a message",
      "type": "n8n-nodes-base.gmail",
      "position": [
        480,
        -96
      ],
      "parameters": {
        "sendTo": "user@example.com",
        "message": "=Hi Yash,\n\nThe Flight price to Delhi dropped to  {{ $json.currentPrice }}.\n\nYou can book the flight now\n\nRegards\nTeam Yash Choudhary",
        "options": {},
        "subject": "Hi Yashi! Flight price to Delhi Dropped",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    }
  ],
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "2d3fa3e6-8ddf-4f7a-b92f-0d08af430239",
  "connections": {
    "Cron": {
      "main": [
        [
          {
            "node": "Fetch Price - SerpAPI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Price Drop": {
      "main": [
        [
          {
            "node": "IF Price Dropped?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF Price Dropped?": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Price - SerpAPI": {
      "main": [
        [
          {
            "node": "Check Price Drop",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

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

🚨It is difficult to manually track changing flight prices and quickly identify the best time to book a ticket. Many travelers miss deals or spend too much time monitoring fares for their specific routes and travel dates. An active SerpAPI account (for flight search API access)…

Source: https://n8n.io/workflows/6503/ — original creator credit. Request a take-down →

More Email & Gmail workflows → · Browse all categories →

Related workflows

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

Email & Gmail

YOUR_ID 4. Uses gmail, googleDrive, googleSheets, httpRequest. Scheduled trigger; 53 nodes.

Gmail, Google Drive, Google Sheets +1
Email & Gmail

Instead of providing a routine check, it focuses on significant movements by: Sending a Slack alert only if a query crosses a defined movement threshold. Emailing a structured report with the Top 25 i

HTTP Request, Slack, Gmail
Email & Gmail

Looking for a way to track GitHub bounty issues automatically and get notified in real time? This GitHub Bounty Tracker workflow monitors repositories for issues labeled 💎 Bounty, logs them in Google

Google Sheets, HTTP Request, WhatsApp +1
Email & Gmail

This workflow automatically sends a beautifully designed HTML newsletter every Sunday at 8 AM, featuring products currently on sale from your Algolia-powered e-commerce store.

Google Sheets, HTTP Request, Gmail
Email & Gmail

This workflow automatically identifies your weekly bestselling product from your Algolia-powered e-commerce store and generates a cinematic product video using Google VEO 3.0 AI, helping marketing tea

HTTP Request, Gmail