AutomationFlowsSlack & Telegram › Sync Amazon Luna Prime Games to Google Sheets with Automatic Updates

Sync Amazon Luna Prime Games to Google Sheets with Automatic Updates

ByPaolo Ronco @paoloronco on n8n.io

Automatically fetch, organize, and maintain an updated catalog of Amazon Luna – Included with Prime games.This workflow regularly queries Amazon’s official Luna endpoint, extracts complete metadata, and syncs everything into Google Sheets without duplicates.

Cron / scheduled trigger★★★★☆ complexity16 nodesHTTP RequestGoogle SheetsDiscord
Slack & Telegram Trigger: Cron / scheduled Nodes: 16 Complexity: ★★★★☆ Added:

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

This workflow follows the Discord → 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": "A8imlsPnCWETHm6k",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "AmazonLuna-Games-Fetch",
  "tags": [],
  "nodes": [
    {
      "id": "6b95e9e1-d883-4e05-932f-c67963ddf17d",
      "name": "HTTP Request1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1408,
        352
      ],
      "parameters": {
        "url": "https://proxy-prod.eu-west-1.tempo.digital.a2z.com/getPage",
        "method": "POST",
        "options": {},
        "jsonBody": "{\"timeout\":10000,\"searchContext\":{\"query\":\"included_with_prime\",\"sort\":\"TITLE_A_TO_Z\",\"filtersList\":[]},\"featureScheme\":\"WEB_V1\",\"pageContext\":{\"pageType\":\"multistate_browse_results\",\"pageId\":\"default\"},\"clientContext\":{\"browserMetadata\":{\"browserClientRole\":\"browser\",\"browserType\":\"Chrome\",\"browserVersion\":\"0.0.0.0\",\"deviceModel\":\"unknown\",\"deviceType\":\"unknown\",\"osName\":\"Windows\",\"osVersion\":\"11\"}},\"inputContext\":{\"gamepadTypes\":[]},\"dynamicFeatures\":[]}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "={{ $json['Content-Type'] }}"
            },
            {
              "name": "Origin",
              "value": "={{ $json.Origin }}"
            },
            {
              "name": "Referer",
              "value": "={{ $json.Refer }}"
            },
            {
              "name": "x-amz-locale",
              "value": "={{ $json['x-amz-locale'] }}"
            },
            {
              "name": "x-amz-platform",
              "value": "={{ $json['x-amz-platform'] }}"
            },
            {
              "name": "x-amz-device-type",
              "value": "={{ $json['x-amz-device-type'] }}"
            },
            {
              "name": "x-amz-marketplace-id",
              "value": "={{ $json['x-amz-marketplace-id'] }}"
            },
            {
              "name": "Accept-Language",
              "value": "={{ $json['Accept-Language'] }}"
            },
            {
              "name": "User-Agent",
              "value": "={{ $json['User-Agent'] }}"
            },
            {
              "name": "searchContext",
              "value": "={{ $json.searchContext }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "46d0296b-bf10-45a1-b936-590db25bbb7c",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        1216,
        352
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "2014c337-009b-4c72-ab7a-cfc94318875e",
              "name": "Content-Type",
              "type": "string",
              "value": "text/plain;charset=UTF-8"
            },
            {
              "id": "af3dfb87-355d-40d3-8cc6-3074c7d99382",
              "name": "Origin",
              "type": "string",
              "value": "https://luna.amazon.it"
            },
            {
              "id": "971f2ce5-9d5e-4abd-b6f8-9815af9d1d6f",
              "name": "Refer",
              "type": "string",
              "value": "https://luna.amazon.it/"
            },
            {
              "id": "adc28f7c-1ad0-4e33-b4f8-1d4b678c1c2c",
              "name": "x-amz-locale",
              "type": "string",
              "value": "en_US"
            },
            {
              "id": "8852885e-013d-4b76-97e2-7393551e1f39",
              "name": "x-amz-platform",
              "type": "string",
              "value": "web"
            },
            {
              "id": "75790b6d-bdba-4547-866e-f078dae263b9",
              "name": "x-amz-device-type",
              "type": "string",
              "value": "browser"
            },
            {
              "id": "eb7c07a8-a963-41a3-8b44-9b94cd0c9f05",
              "name": "x-amz-marketplace-id",
              "type": "string",
              "value": "ATVPDKIKX0DER"
            },
            {
              "id": "cc5cf070-b37b-46b6-a5f5-5c588446395e",
              "name": "Accept-Language",
              "type": "string",
              "value": "en-US"
            },
            {
              "id": "9adc0222-535d-4c1d-9b9c-323184484875",
              "name": "User-Agent",
              "type": "string",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/0.0.0.0 Safari/537.36"
            },
            {
              "id": "0f9694c2-307f-4c84-85eb-4602351deeff",
              "name": "searchContext",
              "type": "string",
              "value": "{ \"query\": \"included_with_prime\" }."
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "853ee870-2926-48a4-b7bb-69efab9dd2ff",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        848,
        352
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "daysInterval": 5,
              "triggerAtHour": 15
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "6a6b35e4-cac9-46fa-a69b-83be9fbd5331",
      "name": "Get row(s) in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1040,
        352
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1234567,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1-Your_ID/edit#gid=Your_ID",
          "cachedResultName": "Sheet_Name"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1-YOUR_ID",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1-Your_ID/edit?usp=drivesdk",
          "cachedResultName": "Folder_Name"
        },
        "authentication": "serviceAccount"
      },
      "executeOnce": false,
      "typeVersion": 4.7,
      "alwaysOutputData": true
    },
    {
      "id": "7947a59c-696e-44b0-a952-d2daea6c5606",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2640,
        0
      ],
      "parameters": {
        "color": 5,
        "width": 640,
        "height": 536,
        "content": "### Section 3 \u2013 New game notifications\n\nThe \u201cisNew\u201d and \u201cIf1\u201d nodes keep only new titles. For each new game, the image is fetched, items are processed in small batches and a Wait node adds a short pause to avoid rate limits. Finally a message is sent to your notification channel.\n\n#### Choose a notification provider\n\nBy default this template uses a Discord node to post messages in a channel. Select your Discord credentials and channel ID, or replace this node with another service (Telegram, Slack, email, webhooks, etc.) while keeping the rest of the flow unchanged."
      },
      "typeVersion": 1
    },
    {
      "id": "6ffc3165-6d9c-4bdd-b56a-f15f5cf5eb57",
      "name": "parsing",
      "type": "n8n-nodes-base.code",
      "position": [
        1616,
        352
      ],
      "parameters": {
        "jsCode": "// Parse GAME_TILE widgets and extract game info\nconst data = items[0].json;\nconst out = [];\n\nfunction walk(n) {\n  if (Array.isArray(n)) return n.forEach(walk);\n  if (n && typeof n === 'object') {\n    if (n.type === 'GAME_TILE') {\n      const target = n.actions?.[0]?.target || '';\n      const parts = target.replace(/^\\/|\\/$/g,'').split('/');\n      const slug = parts[1] || null;\n      const asin = parts[2] || null;\n\n      let pd = {};\n      try { pd = JSON.parse(n.presentationData || '{}'); } catch(e){}\n\n      out.push({\n        asin,\n        slug,\n        title: pd.title || null,\n        releaseYear: pd.releaseYear || null,\n        publishers: pd.publishersText || null,\n        genres: Array.isArray(pd.genreTags) ? pd.genreTags.join(', ') : null,\n        productUrl: pd.productUrl || null,\n        imagePortrait: pd.imagePortrait || null,\n        imageLandscape: pd.imageLandscape || null,\n        ageRating: pd.ageRating?.categoryText || null,\n        target\n      });\n    }\n    Object.values(n).forEach(walk);\n  }\n}\nwalk(data);\n\nreturn out.map(x => ({ json: x }));\n"
      },
      "typeVersion": 2
    },
    {
      "id": "8f1a7332-659b-47e6-9baf-cc4f140de00c",
      "name": "isNew",
      "type": "n8n-nodes-base.code",
      "position": [
        1792,
        352
      ],
      "parameters": {
        "jsCode": "// Leggo tutte le righe dal nodo \"Get row(s) in sheet\"\nconst existingRows = $items('Get row(s) in sheet');\n\n// Se il foglio \u00e8 vuoto: tutti nuovi\nif (!existingRows || existingRows.length === 0) {\n  return items.map(item => {\n    item.json.isNew = true;\n    return item;\n  });\n}\n\n// Costruisco le chiavi gi\u00e0 presenti nel foglio:\n// prima asin, se vuoto uso il titolo (Title nel foglio, title negli item)\nconst existingKeys = new Set(\n  existingRows\n    .map(r => {\n      const asin = (r.json.asin || '').trim().toUpperCase();\n      const title =\n        (r.json.Title || r.json.title || '').trim().toUpperCase(); // \ud83d\udc48 QUI la differenza\n      return asin || title;\n    })\n    .filter(k => k !== '')\n);\n\n// Aggiungo isNew agli item in ingresso\nreturn items.map(item => {\n  const asin = (item.json.asin || '').trim().toUpperCase();\n  const title =\n    (item.json.Title || item.json.title || '').trim().toUpperCase();\n\n  const key = asin || title;\n\n  // se non ho n\u00e9 asin n\u00e9 titolo, lo considero nuovo\n  item.json.isNew = key === '' ? true : !existingKeys.has(key);\n\n  return item;\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "1ddad36e-291b-469e-bc72-e47ec4e1d736",
      "name": "Send a message1",
      "type": "n8n-nodes-base.discord",
      "position": [
        3136,
        352
      ],
      "parameters": {
        "files": {
          "values": [
            {}
          ]
        },
        "content": "=New game added on Amazon Luna!\nTitle: {{ $('If1').item.json.title }}\nGeneres: {{ $('If1').item.json.genres }}\nRelease Year: {{ $('If1').item.json.releaseYear }}\n \n\n",
        "guildId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_ID",
          "cachedResultUrl": "https://discord.com/channels/YOUR_ID",
          "cachedResultName": "AmazonLuna-games"
        },
        "options": {},
        "resource": "message",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "Your_ID",
          "cachedResultUrl": "https://discord.com/channels/YOUR_ID/YOUR_ID",
          "cachedResultName": "new-games-notifications"
        },
        "authentication": "oAuth2"
      },
      "credentials": {
        "discordOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "ea4ad23c-0658-43a6-b84b-4bfe85198e25",
      "name": "Append or update row in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2288,
        336
      ],
      "parameters": {
        "columns": {
          "value": {
            "asin": "={{ $('parsing').item.json.asin }}",
            "isNew": "=FALSE",
            "title": "={{ $('parsing').item.json.title }}",
            "genres": "={{ $('parsing').item.json.genres }}",
            "releaseYear": "={{ $('parsing').item.json.releaseYear }}",
            "imagePortrait": "={{ $('parsing').item.json.imagePortrait }}",
            "imageLandscape": "={{ $('parsing').item.json.imageLandscape }}"
          },
          "schema": [
            {
              "id": "title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "releaseYear",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "releaseYear",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "genres",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "genres",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "asin",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "asin",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "imagePortrait",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "imagePortrait",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "imageLandscape",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "imageLandscape",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "isNew",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "isNew",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "title"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1234567,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1-YOUR_ID/edit#gid=1234567",
          "cachedResultName": "AmazonLunaGames-Fetch"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1-YOUR_ID",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1-YOUR_ID/edit?usp=drivesdk",
          "cachedResultName": "n8n"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "c1ba88a4-ba57-4aaf-a135-2d2412c575c4",
      "name": "If1",
      "type": "n8n-nodes-base.if",
      "position": [
        1984,
        352
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "b51ea07a-8e6c-41c6-8d9b-45a0253f6712",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.isNew }}",
              "rightValue": "true"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "6bb72785-2d49-41b2-88d8-1517abf5efda",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        2736,
        336
      ],
      "parameters": {
        "options": {},
        "batchSize": 6
      },
      "typeVersion": 3
    },
    {
      "id": "e3c2a176-adae-4049-8a4e-c94e7ad789f4",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        2960,
        352
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "3e1941a4-c6a6-4a71-b976-ab8e66e768de",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2144,
        0
      ],
      "parameters": {
        "color": 5,
        "width": 376,
        "height": 532,
        "content": "### Section 2 \u2013 Update Google Sheet\n\nThe \u201cAppend or update row in sheet\u201d node writes the parsed games to your Google Sheet. Rows are matched by title so existing entries are updated and only new games are appended with their ASIN, genres and image URLs."
      },
      "typeVersion": 1
    },
    {
      "id": "18d4c8bd-0114-4b73-8fa0-6f9e3780b474",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        800,
        0
      ],
      "parameters": {
        "color": 5,
        "width": 1312,
        "height": 528,
        "content": "### Section 1 \u2013 Amazon request parameters\n\nThe **Edit Fields** node defines all required headers for the Amazon Luna request.  \nHere you should set:\n\n- `x-amz-locale` (language/region)\n- `x-amz-marketplace-id` (marketplace for your region)\n- `Accept-Language`\n- `User-Agent`\n- platform and device type\n\nThe **HTTP Request** node uses these values to call the Luna endpoint and retrieve the list of \u201cIncluded with Prime\u201d games.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "37eefa2e-cb7c-4f9f-b828-55b106a620cf",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 784,
        "height": 912,
        "content": "## Amazon Luna \u2013 Included with Prime\n\nThis workflow periodically fetches the list of \u201cIncluded with Prime\u201d games from Amazon Luna, parses the response, and keeps a Google Sheet in sync without duplicates.  \n\nNew titles are flagged and can be sent as notifications to a channel of your choice (for example Discord, Telegram, Slack, or email).  \n\nBefore activating the workflow, configure the Amazon request headers, region/marketplace, and Google Sheets document.\n\n#### Full Guide: https://paoloronco.it/amazon-luna-fetch-included-with-prime-games/\n\n### Video\n[![Watch the video](https://img.youtube.com/vi/PS6qdCbc5fU/maxresdefault.jpg)](https://youtu.be/PS6qdCbc5fU)\n\n\n### Important notes\n\n- The data returned by this workflow comes from Amazon Luna and remains the property of Amazon.  \nUse it only for personal or testing purposes.  \n\n- Do not republish, redistribute, or share the results publicly without permission.  \nHeaders, endpoint and response format may change over time, so if the workflow stops working, double-check the values used in the **Edit Fields** and **HTTP Request** nodes.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "d00de91b-a784-4fa2-9c17-0bcec8e29374",
      "name": "GetImage",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2528,
        336
      ],
      "parameters": {
        "url": "={{ $('isNew').item.json.imageLandscape }}",
        "options": {}
      },
      "typeVersion": 4.2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "2f5afecd-87a5-43cf-8f24-c3e85a3971d0",
  "connections": {
    "If1": {
      "main": [
        [
          {
            "node": "Append or update row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait": {
      "main": [
        [
          {
            "node": "Send a message1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "isNew": {
      "main": [
        [
          {
            "node": "If1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "parsing": {
      "main": [
        [
          {
            "node": "isNew",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "GetImage": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "HTTP Request1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request1": {
      "main": [
        [
          {
            "node": "parsing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send a message1": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get row(s) in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get row(s) in sheet": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append or update row in sheet": {
      "main": [
        [
          {
            "node": "GetImage",
            "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

Automatically fetch, organize, and maintain an updated catalog of Amazon Luna – Included with Prime games.This workflow regularly queries Amazon’s official Luna endpoint, extracts complete metadata, and syncs everything into Google Sheets without duplicates.

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

More Slack & Telegram workflows → · Browse all categories →

Related workflows

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

Slack & Telegram

This workflow monitors product prices from BooksToScrape and sends alerts to a Discord channel via webhook when competitor's prices are lower than our prices. Schedule (for daily or required schedule)

Discord, Google Sheets, HTTP Request
Slack & Telegram

This workflow provides an automated, intelligent solution for global weather monitoring. It goes beyond simple data fetching by calculating a custom "Comfort Index" and using AI to provide human-like

OpenWeatherMap, HTTP Request, Discord +1
Slack & Telegram

AmazonLuna-Games-Fetch. Uses httpRequest, scheduleTrigger, googleSheets, stickyNote. Scheduled trigger; 16 nodes.

HTTP Request, Google Sheets, Discord
Slack & Telegram

AI-Powered Short-Form Video Generator with OpenAI, Flux, Kling, and ElevenLabs and upload to all social networks. Uses httpRequest, openAi, stickyNote, googleDrive. Scheduled trigger; 51 nodes.

HTTP Request, OpenAI, Google Drive +4
Slack & Telegram

AI Automated TikTok/Youtube Shorts/Reels Generator. Uses httpRequest, openAi, stickyNote, googleDrive. Scheduled trigger; 41 nodes.

HTTP Request, OpenAI, Google Drive +2