AutomationFlowsData & Sheets › Fetch Weather Data to Airtable via Cron

Fetch Weather Data to Airtable via Cron

Original n8n title: Getweather

GetWeather. Uses openWeatherMap, airtable. Scheduled trigger; 5 nodes.

Cron / scheduled trigger★★★★☆ complexity5 nodesOpenWeatherMapAirtable
Data & Sheets Trigger: Cron / scheduled Nodes: 5 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
{
  "createdAt": "2024-12-07T00:02:58.988Z",
  "updatedAt": "2024-12-08T21:46:34.000Z",
  "id": "73oRLNdKh8Ivfgv1",
  "name": "GetWeather",
  "active": true,
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        0,
        0
      ],
      "id": "8b9c15c3-a06f-40d0-a33e-0e2379e4eeed",
      "name": "Schedule Trigger"
    },
    {
      "parameters": {
        "operation": "5DayForecast",
        "cityName": "castleford",
        "language": "en"
      },
      "type": "n8n-nodes-base.openWeatherMap",
      "typeVersion": 1,
      "position": [
        220,
        0
      ],
      "id": "48ed062c-4c47-41a6-a857-9f180d71dda2",
      "name": "OpenWeatherMap",
      "credentials": {
        "openWeatherMapApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "const input = items[0].json; \nconst entries = input.list || []; // Adjust to match your JSON structure\nreturn entries.map(entry => ({ json: entry }));"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        460,
        0
      ],
      "id": "63b0c188-b11b-47d2-bf82-88edba5216de",
      "name": "Code"
    },
    {
      "parameters": {
        "operation": "upsert",
        "base": {
          "__rl": true,
          "value": "applKEn03UJQRKT60",
          "mode": "list",
          "cachedResultName": "Weather5Day",
          "cachedResultUrl": "https://airtable.com/applKEn03UJQRKT60"
        },
        "table": {
          "__rl": true,
          "value": "tblhKVsyiBNvmp6IT",
          "mode": "list",
          "cachedResultName": "Table 1",
          "cachedResultUrl": "https://airtable.com/applKEn03UJQRKT60/tblhKVsyiBNvmp6IT"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Temp": "={{ $json.main.temp }}",
            "min": "={{ $json.main.temp_min }}",
            "max": "={{ $json.main.temp_max }}",
            "dt": "={{ $json.dt }}",
            "Date": "={{ $json.dt_txt }}",
            "locId": "={{ $('OpenWeatherMap').item.json.city.id }}"
          },
          "matchingColumns": [
            "dt",
            "locId"
          ],
          "schema": [
            {
              "id": "id",
              "displayName": "id",
              "required": false,
              "defaultMatch": true,
              "display": true,
              "type": "string",
              "readOnly": true,
              "removed": true
            },
            {
              "id": "dt",
              "displayName": "dt",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "number",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "locId",
              "displayName": "locId",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "number",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "Date",
              "displayName": "Date",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "dateTime",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "Temp",
              "displayName": "Temp",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "number",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "min",
              "displayName": "min",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "number",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "max",
              "displayName": "max",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "number",
              "readOnly": false,
              "removed": false
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 2.1,
      "position": [
        660,
        0
      ],
      "id": "e6755a40-6840-422a-af36-3bff3a7259ad",
      "name": "AddWeather",
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "upsert",
        "base": {
          "__rl": true,
          "value": "applKEn03UJQRKT60",
          "mode": "list",
          "cachedResultName": "Weather5Day",
          "cachedResultUrl": "https://airtable.com/applKEn03UJQRKT60"
        },
        "table": {
          "__rl": true,
          "value": "tblqXxiZyZh8zu88v",
          "mode": "list",
          "cachedResultName": "Table 2",
          "cachedResultUrl": "https://airtable.com/applKEn03UJQRKT60/tblqXxiZyZh8zu88v"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "locId": "={{ $json.city.id }}",
            "Lat": "={{ $json.city.coord.lat }}",
            "Location": "={{ $json.city.name }}",
            "Lon": "={{ $json.city.coord.lon }}"
          },
          "matchingColumns": [
            "locId"
          ],
          "schema": [
            {
              "id": "locId",
              "displayName": "locId",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "Location",
              "displayName": "Location",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "Lat",
              "displayName": "Lat",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "number",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "Lon",
              "displayName": "Lon",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "number",
              "readOnly": false,
              "removed": false
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 2.1,
      "position": [
        460,
        -320
      ],
      "id": "6658b78d-a118-45c0-a643-68d29188d178",
      "name": "AddLocation",
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "OpenWeatherMap",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenWeatherMap": {
      "main": [
        [
          {
            "node": "AddLocation",
            "type": "main",
            "index": 0
          },
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code": {
      "main": [
        [
          {
            "node": "AddWeather",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AddWeather": {
      "main": [
        []
      ]
    },
    "AddLocation": {
      "main": [
        []
      ]
    }
  },
  "settings": {
    "executionOrder": "v1",
    "timezone": "Europe/London",
    "callerPolicy": "workflowsFromSameOwner"
  },
  "staticData": {
    "node:Schedule Trigger": {
      "recurrenceRules": []
    }
  },
  "meta": null,
  "versionId": "a17c0f47-7421-4ab5-aaca-ea00eaf426ce",
  "triggerCount": 1,
  "tags": []
}

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

GetWeather. Uses openWeatherMap, airtable. Scheduled trigger; 5 nodes.

Source: https://github.com/creamofclubs/n8nbackup/blob/b36a0695020c3904718c19e3dd8bcbd673d4516a/workflows/.json — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

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

Data & Sheets

I prepared a detailed guide that showed the whole process of integrating the Binance API and storing data in Airtable to manage funding statements associated with tokens in a wallet.

Crypto, HTTP Request, Airtable
Data & Sheets

Stop wasting hours on manual dialing and listening to ringtones. This workflow transforms your Airtable into a high-velocity AI Call Center using Vapi AI**.

Airtable, HTTP Request
Data & Sheets

Reel-Analysis-Of-Favourite-Content-Creator. Uses httpRequest, airtable. Scheduled trigger; 26 nodes.

HTTP Request, Airtable
Data & Sheets

Link-By-Reel-Analysis. Uses httpRequest, airtable. Scheduled trigger; 24 nodes.

HTTP Request, Airtable
Data & Sheets

&gt; Transform your content strategy with automated competitor intelligence

HTTP Request, Airtable, Notion +2