{
  "name": "🏤 Scrapping of European Union events with Google Sheets",
  "nodes": [
    {
      "id": "c9c69735-c28f-4d7a-bc1c-e3080775afee",
      "name": "Initiate Static Data",
      "type": "n8n-nodes-base.code",
      "position": [
        260,
        240
      ]
    },
    {
      "id": "5bdf8d01-a9da-4c31-b13a-92e1f39e3e37",
      "name": "Store Tables",
      "type": "n8n-nodes-base.code",
      "position": [
        1320,
        200
      ]
    },
    {
      "id": "4556022a-7ba7-47f4-bf52-9f9a14a3e22b",
      "name": "page+1",
      "type": "n8n-nodes-base.code",
      "position": [
        260,
        400
      ]
    },
    {
      "id": "8c993d99-7332-46eb-a08b-a8bdc4379294",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        1320,
        400
      ]
    },
    {
      "id": "b99bb32a-40bd-40b4-9515-79ea1a8e834f",
      "name": "Extract Blocks",
      "type": "n8n-nodes-base.html",
      "position": [
        660,
        400
      ]
    },
    {
      "id": "228e0085-0f55-4684-831f-561ea9e8b21a",
      "name": "Query EU Website",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        480,
        400
      ]
    },
    {
      "id": "b0903872-0698-42d0-a26f-7b173e5b675a",
      "name": "Load Old Records",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        460,
        920
      ]
    },
    {
      "id": "2ca706a4-8dcf-4e7d-a403-af485768d30f",
      "name": "Aggregate",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        680,
        920
      ]
    },
    {
      "id": "e69edaf8-0ad9-475e-8d3b-89ab12adfbc8",
      "name": "Events Already Existing?",
      "type": "n8n-nodes-base.if",
      "position": [
        1260,
        920
      ]
    },
    {
      "id": "5b181fad-b08c-47d9-83e3-3cec229ab7d3",
      "name": "15 sec",
      "type": "n8n-nodes-base.wait",
      "position": [
        1580,
        480
      ]
    },
    {
      "id": "180d5c28-6c37-4b99-bdf2-8a5dd1e1eaf5",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 400,
        "height": 680,
        "content": "### 1. Workflow Trigger with Cron Job\nThe workflow is triggered every morning at 08:30 am (local time). It starts with the initialization of variables that will store **page number** and **events info"
      }
    },
    {
      "id": "7a78eb03-8c2e-4c83-8837-85714e7ee192",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        20,
        340
      ]
    },
    {
      "id": "8157f612-0a1d-4b1d-bf1b-045bfd54f57c",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        420,
        0
      ],
      "parameters": {
        "width": 1340,
        "height": 680,
        "content": "### 2. Scrapping and Parsing of Events blocks\nThis starts with the HTTP node collecting HTML code that is parsed to extract Event description, link, date and location.\n#### How to setup?\n- Set up the "
      }
    },
    {
      "id": "653dcf5a-4cc6-4c44-90d1-2d867fcb9584",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        420,
        700
      ],
      "parameters": {
        "width": 580,
        "height": 500,
        "content": "### 3. Load events recorded in the Google Sheet\nLoading the events **already scrapped** to avoid duplicates.\n#### How to setup?\n1. Input of your **Google Sheet** credentials\n2. Select the folder and f"
      }
    },
    {
      "id": "fcf9b90c-3910-4452-a9f6-4c0a659c2696",
      "name": "Collect Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        1120,
        400
      ]
    },
    {
      "id": "85128970-d6d9-44d2-9633-1bf2aa2dccb5",
      "name": "Parse Information",
      "type": "n8n-nodes-base.html",
      "position": [
        880,
        400
      ]
    },
    {
      "id": "97a911da-4ab1-4cf5-b1c0-33361230c2cd",
      "name": "Combine New + Old Records",
      "type": "n8n-nodes-base.merge",
      "position": [
        1060,
        920
      ]
    },
    {
      "id": "d96ac76d-306d-4f41-b394-c8461652067c",
      "name": "Store New Records",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1520,
        940
      ]
    },
    {
      "id": "c5167368-cb0c-434a-8cf2-a617e34a8c1f",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1020,
        700
      ],
      "parameters": {
        "width": 740,
        "height": 400,
        "content": "### 4. Record New Events in the Google Sheet\nRecording of new events in the google sheet.\n#### How to setup?\n1. Input of your **Google Sheet** credentials\n2. Select the folder and file where the event"
      }
    },
    {
      "id": "caa2365c-ce53-4617-847e-fef99c3b0b35",
      "name": "Return Lines Scrapped",
      "type": "n8n-nodes-base.code",
      "position": [
        560,
        1060
      ]
    },
    {
      "id": "37011622-32fc-474d-97ac-8ce01efbe44f",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -180,
        700
      ],
      "parameters": {
        "width": 580,
        "height": 380,
        "content": "### [Check the Tutorial](https://www.youtube.com/watch?v=ngGB2yEPPRk)\n![Thumbnail](https://www.samirsaci.com/content/images/2025/06/image-9.png)"
      }
    }
  ],
  "connections": {
    "If": {
      "main": [
        [],
        [
          {
            "node": "15 sec",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "15 sec": {
      "main": [
        [
          {
            "node": "page+1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "page+1": {
      "main": [
        [
          {
            "node": "Query EU Website",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "Combine New + Old Records",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Collect Fields": {
      "main": [
        [
          {
            "node": "Store Tables",
            "type": "main",
            "index": 0
          },
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Blocks": {
      "main": [
        [
          {
            "node": "Parse Information",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Load Old Records": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Query EU Website": {
      "main": [
        [
          {
            "node": "Extract Blocks",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "page+1",
            "type": "main",
            "index": 0
          },
          {
            "node": "Initiate Static Data",
            "type": "main",
            "index": 0
          },
          {
            "node": "Load Old Records",
            "type": "main",
            "index": 0
          },
          {
            "node": "Return Lines Scrapped",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Information": {
      "main": [
        [
          {
            "node": "Collect Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Return Lines Scrapped": {
      "main": [
        [
          {
            "node": "Combine New + Old Records",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Events Already Existing?": {
      "main": [
        [],
        [
          {
            "node": "Store New Records",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Combine New + Old Records": {
      "main": [
        [
          {
            "node": "Events Already Existing?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}