AutomationFlowsData & Sheets › Monitor Amazon Product Prices with Bright Data and Google Sheets

Monitor Amazon Product Prices with Bright Data and Google Sheets

ByCyril Nicko Gaspar @cngaspar on n8n.io

This workflow enables you to monitor the prices of Amazon product listings directly from a Google Sheet, using data provided by Bright Data’s Amazon Scraper API. It automates the retrieval of price data for specified products and is ideal for market research, competitor…

Cron / scheduled trigger★★★★☆ complexity15 nodesHTTP RequestGoogle Sheets
Data & Sheets Trigger: Cron / scheduled Nodes: 15 Complexity: ★★★★☆ Added:

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

This workflow follows the Google Sheets → 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
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "0e56a2f3-4977-498b-9434-e10b717779b9",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        160,
        -1400
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "88ac7caa-6408-4b4b-96ef-b5b575da9d52",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -800,
        -840
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "170b1458-07a1-4295-af4b-c87022eef71c",
      "name": "Check Status by Snapshot ID",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        380,
        -1400
      ],
      "parameters": {
        "url": "=https://api.brightdata.com/datasets/v3/progress/{{ $json.snapshot_id }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "9c020893-da19-48b1-8816-594bed76ae16",
      "name": "Get the data",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1180,
        -1400
      ],
      "parameters": {
        "url": "=https://api.brightdata.com/datasets/v3/snapshot/{{ $json.snapshot_id }}",
        "options": {},
        "sendQuery": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBearerAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "format",
              "value": "json"
            }
          ]
        }
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "02f3e1e6-55af-4472-999b-9a656ba8c76f",
      "name": "Initiate request from URLs",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        440,
        -700
      ],
      "parameters": {
        "url": "https://api.brightdata.com/datasets/v3/trigger",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ $json.data.map(i => {\nreturn {url:i['Product URL'],\nzipcode: i['ZIP code']\n}\n}).toJsonString() }}",
        "sendBody": true,
        "sendQuery": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBearerAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "dataset_id",
              "value": "gd_l7q7dkf244hwjntr0"
            },
            {
              "name": "include_errors",
              "value": "true"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {}
          ]
        }
      },
      "credentials": {
        "brightdataApi": {
          "name": "<your credential>"
        },
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "ecf9d3e8-5435-4426-a82b-b5dd6ff85e86",
      "name": "Read data from Google Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -420,
        -840
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1-cX3l_oxylIH2J8rzC-LN0XmFoOOXjJGW0bUe-4bsAw/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1-cX3l_oxylIH2J8rzC-LN0XmFoOOXjJGW0bUe-4bsAw",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1-cX3l_oxylIH2J8rzC-LN0XmFoOOXjJGW0bUe-4bsAw/edit?usp=drivesdk",
          "cachedResultName": "Sample Amazon Products Monitoring"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "c079c769-406e-43d0-9f41-11db53da340f",
      "name": "Process URLs by batch of 10s",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        20,
        -720
      ],
      "parameters": {
        "options": {},
        "batchSize": 10
      },
      "typeVersion": 3
    },
    {
      "id": "89930387-958b-48c3-8583-8f2aac59718b",
      "name": "Combine the batch",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        240,
        -720
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData"
      },
      "typeVersion": 1
    },
    {
      "id": "8ad0c86a-5107-4ccc-b2d6-e4dda7c98b4f",
      "name": "Update the records by ASIN",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1520,
        -1400
      ],
      "parameters": {
        "columns": {
          "value": {
            "ASIN": "={{ $json.asin }}",
            "Price": "={{ $json.final_price }}"
          },
          "schema": [
            {
              "id": "Product URL",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Product URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Price",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Price",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Product Title",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Product Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ZIP code",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ZIP code",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ASIN",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ASIN",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "ASIN"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1-cX3l_oxylIH2J8rzC-LN0XmFoOOXjJGW0bUe-4bsAw/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1-cX3l_oxylIH2J8rzC-LN0XmFoOOXjJGW0bUe-4bsAw",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1-cX3l_oxylIH2J8rzC-LN0XmFoOOXjJGW0bUe-4bsAw/edit?usp=drivesdk",
          "cachedResultName": "Sample Amazon Products Monitoring"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "636aa558-8973-4493-8788-f566edf5021b",
      "name": "Check the status of snapshot",
      "type": "n8n-nodes-base.switch",
      "position": [
        620,
        -1400
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "a2198ad8-e1ae-411d-8c6b-38e74b727560",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.status }}",
                    "rightValue": "ready"
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "b8fa19aa-f90c-4da5-a039-9962f2a34776",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.status }}",
                    "rightValue": "running"
                  }
                ]
              }
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "920f766f-2815-46c9-bd24-30d6f4490c58",
      "name": "Space the request by 1 second",
      "type": "n8n-nodes-base.wait",
      "position": [
        660,
        -660
      ],
      "parameters": {
        "amount": 1
      },
      "typeVersion": 1.1
    },
    {
      "id": "1d79897c-2139-4579-b86e-d9b0bea9e0bc",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -840,
        -1080
      ],
      "parameters": {
        "color": 4,
        "width": 700,
        "height": 460,
        "content": "## Schedule and Read from Google Sheets\nSet up or modify a Google Sheet. The sheet should have columns named \u201cProduct URL,\u201d \u201cZIP code,\u201d and \u201cASIN.\u201d The \u201cASIN\u201d column should be a function that extracts the ASIN from the product URL. The formula to achieve this is:\n```\n=REGEXEXTRACT(A4, \u201c/(?:dp|gp/product|product)/([A-Z0-9]{10})\u201d)"
      },
      "typeVersion": 1
    },
    {
      "id": "9e8866c2-8ae1-467f-a6fb-ce0d1a9e1ac5",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -60,
        -860
      ],
      "parameters": {
        "color": 5,
        "width": 940,
        "height": 460,
        "content": "## Process Data into Bright Data by batch\n\n Obtain an API key from Bright Data and create a generic bearer authentication credential."
      },
      "typeVersion": 1
    },
    {
      "id": "b894627b-e326-40a8-8656-db4e1c18a8d2",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        80,
        -1540
      ],
      "parameters": {
        "width": 740,
        "height": 460,
        "content": "## Check the requested data from Bright Data using snapshot ID\n\nThis checks if the snapshot has processed the data. If the data is ready, it proceeds to the \u2018true\u2019 branch of the If node."
      },
      "typeVersion": 1
    },
    {
      "id": "5439d333-922f-4a6f-a391-6963f57be0be",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1060,
        -1540
      ],
      "parameters": {
        "color": 3,
        "width": 720,
        "height": 460,
        "content": "## Obtain the data from the snapshot and update it to Google Sheets"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Wait": {
      "main": [
        [
          {
            "node": "Check Status by Snapshot ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get the data": {
      "main": [
        [
          {
            "node": "Update the records by ASIN",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Read data from Google Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Combine the batch": {
      "main": [
        [
          {
            "node": "Initiate request from URLs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Initiate request from URLs": {
      "main": [
        [
          {
            "node": "Space the request by 1 second",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Status by Snapshot ID": {
      "main": [
        [
          {
            "node": "Check the status of snapshot",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read data from Google Sheet": {
      "main": [
        [
          {
            "node": "Process URLs by batch of 10s",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check the status of snapshot": {
      "main": [
        [
          {
            "node": "Get the data",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Process URLs by batch of 10s": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Combine the batch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Space the request by 1 second": {
      "main": [
        [
          {
            "node": "Process URLs by batch of 10s",
            "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

This workflow enables you to monitor the prices of Amazon product listings directly from a Google Sheet, using data provided by Bright Data’s Amazon Scraper API. It automates the retrieval of price data for specified products and is ideal for market research, competitor…

Source: https://n8n.io/workflows/3878/ — 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

This workflow automates video distribution to 9 social platforms simultaneously using Blotato's API. It includes both a scheduled publisher (checks Google Sheets for videos marked "Ready") and a subwo

Google Sheets, HTTP Request, Form Trigger +2
Data & Sheets

YogiAI. Uses googleSheets, googleSheetsTool, httpRequest, stopAndError. Scheduled trigger; 61 nodes.

Google Sheets, Google Sheets Tool, HTTP Request +1
Data & Sheets

This workflow monitors Google Calendar for events indicating that a customer will visit the company today or the next day, retrieves the required details, and sends reminder notifications to the relev

Google Calendar, Google Sheets, HTTP Request +1
Data & Sheets

ofn hook v0.24.0 beta. Uses start, httpRequest, functionItem, itemLists. Scheduled trigger; 42 nodes.

Start, HTTP Request, Function Item +3
Data & Sheets

Security teams, DevOps engineers, vulnerability analysts, and automation builders who want to eliminate repetitive Nessus scan parsing, AI-based risk triage, and manual reporting. Designed for orgs fo

Email Send, HTTP Request, Google Sheets +1