This workflow corresponds to n8n.io template #4329 — we link there as the canonical source.
This workflow follows the Google Drive → Google Sheets 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 →
{
"id": "D3YKQWTlFoSxj7lp",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Extract Product Info from Webpage Screenshots using Dumpling AI and GPT-4o",
"tags": [],
"nodes": [
{
"id": "fd1389e6-1495-4226-a158-db98a2a5b1ab",
"name": "Trigger on New URL in Sheet",
"type": "n8n-nodes-base.googleSheetsTrigger",
"position": [
-980,
-180
],
"parameters": {
"event": "rowAdded",
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1TDp408j9W1D8DF21XI5WrpeIA56qWjLBRlmWXqgo0p4/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1TDp408j9W1D8DF21XI5WrpeIA56qWjLBRlmWXqgo0p4/edit?usp=drivesdk",
"cachedResultName": "Competitors"
}
},
"credentials": {
"googleSheetsTriggerOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "0c6cf56f-8244-4131-96c0-2dee533c68d4",
"name": "Take Full-Page Screenshot using Dumpling AI",
"type": "n8n-nodes-base.httpRequest",
"position": [
-760,
-180
],
"parameters": {
"url": "https://app.dumplingai.com/api/v1/screenshot",
"method": "POST",
"options": {},
"jsonBody": "={\n \"url\":\"{{ $json.URL }}\",\n \"fullPage\": true\n}\n",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth"
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "aa6ba2a5-6d25-4ca7-afef-05b688bf630b",
"name": "Extract All Visible Data from Screenshot (Dumpling AI)",
"type": "n8n-nodes-base.httpRequest",
"position": [
-540,
-180
],
"parameters": {
"url": "https://app.dumplingai.com/api/v1/extract-image",
"method": "POST",
"options": {},
"jsonBody": "={\n \"inputMethod\": \"url\",\n \"images\": [\"{{ $json.screenshotUrl }}\"],\n \"prompt\": \"You are a detail-oriented assistant. Analyze the screenshot provided and extract all visible information in a clear and organized way. Include all text content exactly as it appears, labels, buttons, icons, or form field names, any numbers, figures, or timestamps, section headers or groupings, notes or messages if any, and table data or list items if present. Present the result in a neatly structured format using plain text. Do not summarize, interpret, or skip anything. Maintain the original order and layout as much as possible for clarity.\"\n}\n\n",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth"
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "574a04b5-3b5a-4f7e-830a-de3cb580e355",
"name": "Download Screenshot File",
"type": "n8n-nodes-base.httpRequest",
"position": [
-320,
-180
],
"parameters": {
"url": "={{ $('Take Full-Page Screenshot using Dumpling AI').item.json.screenshotUrl }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "41a174e8-15e5-4c95-840d-8b6a99ac3539",
"name": "Save Screenshot to Drive Folder",
"type": "n8n-nodes-base.googleDrive",
"position": [
-100,
-180
],
"parameters": {
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "https://drive.google.com/drive/folders/1TT91LtI3ods32838DMggLM8v397DTWIH",
"cachedResultName": "Webpage-Screenshoot"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "fcd1c828-0704-4d74-87f0-601320ec1740",
"name": " Log Screenshot URL to Spreadsheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
120,
-180
],
"parameters": {
"columns": {
"value": {
"URL": "={{ $('Trigger on New URL in Sheet').item.json.URL }}",
"screenshoot URL": "={{ $('Take Full-Page Screenshot using Dumpling AI').item.json.screenshotUrl }}"
},
"schema": [
{
"id": "URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "screenshoot URL",
"type": "string",
"display": true,
"required": false,
"displayName": "screenshoot URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Summary of the webpage",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Summary of the webpage",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"URL"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1TDp408j9W1D8DF21XI5WrpeIA56qWjLBRlmWXqgo0p4/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1TDp408j9W1D8DF21XI5WrpeIA56qWjLBRlmWXqgo0p4/edit?usp=drivesdk",
"cachedResultName": "Competitors"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
},
{
"id": "b8d6b452-be2d-41e2-aa67-911131ad66c5",
"name": "Extract Product Info from Screenshot Text with GPT-4o",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
340,
-180
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o",
"cachedResultName": "GPT-4O"
},
"options": {},
"messages": {
"values": [
{
"role": "system",
"content": "=Extract only the product-related information from the text. For each product, return a JSON object with the following fields: \"name\", \"ratings\", \"purchased\", \"price\", \"deal\", \"delivery\", \"buyingOptions\", \"colorOptions\", and \"badges\". Include only the available fields for each product. If a field is not mentioned for a product, skip it. Ignore unrelated content like navigation, help, or footer sections. Return the final output as a JSON object with a top-level \"products\" array containing the structured results.\n\nExample JSON output:\n{\n \"products\": [\n {\n \"name\": \"JBL Tune 510BT - Bluetooth headphones with up to 40 hours battery, microphone for call, foldable and comfortable\",\n \"ratings\": \"76,254\",\n \"purchased\": \"100K+ bought in past month\",\n \"price\": \"$49.95\",\n \"delivery\": \"FREE delivery Tue, May 27\",\n \"deal\": \"Free 30 day Amazon music with purchase\",\n \"buyingOptions\": \"$25.87 (2+ used & new offers)\",\n \"colorOptions\": [\"Black\", \"Blue\", \"White\", \"Purple\"]\n },\n {\n \"name\": \"Beats Studio Pro - Wireless Bluetooth Noise Cancelling Headphones\",\n \"ratings\": \"20,437\",\n \"purchased\": \"10K+ bought in past month\",\n \"price\": \"$199.95\",\n \"deal\": \"List: $349.95\",\n \"delivery\": \"FREE delivery Tue, May 27\",\n \"buyingOptions\": \"$146.65 (5+ used & new offers)\"\n }\n \n ]\n}"
},
{
"content": "=Here is the text: {{ $('Extract All Visible Data from Screenshot (Dumpling AI)').item.json.results }}"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "2c390314-9d9c-464d-a80b-b8c1e12bb671",
"name": " Split Each Product into Individual Record",
"type": "n8n-nodes-base.splitOut",
"position": [
716,
-180
],
"parameters": {
"options": {},
"fieldToSplitOut": "message.content.products"
},
"typeVersion": 1
},
{
"id": "94b7e7bf-5b8f-431a-9020-ca39c409ce0d",
"name": "Save Products info to Google Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
936,
-180
],
"parameters": {
"columns": {
"value": {
"deal": "={{ $json.deal }}",
"price": "={{ $json.price }}",
"ratings": "={{ $json.ratings }}",
"purchased": "={{ $json.purchased }}",
"Product Name": "={{ $json.name }}",
"buyingOptions": "={{ $json.buyingOptions }}"
},
"schema": [
{
"id": "Product Name",
"type": "string",
"display": true,
"required": false,
"displayName": "Product Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "price",
"type": "string",
"display": true,
"required": false,
"displayName": "price",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "purchased",
"type": "string",
"display": true,
"required": false,
"displayName": "purchased",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "ratings",
"type": "string",
"display": true,
"required": false,
"displayName": "ratings",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "deal",
"type": "string",
"display": true,
"required": false,
"displayName": "deal",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "buyingOptions",
"type": "string",
"display": true,
"required": false,
"displayName": "buyingOptions",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1TDp408j9W1D8DF21XI5WrpeIA56qWjLBRlmWXqgo0p4/edit#gid=641974727",
"cachedResultName": "Sheet2"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1TDp408j9W1D8DF21XI5WrpeIA56qWjLBRlmWXqgo0p4/edit?usp=drivesdk",
"cachedResultName": "Competitors"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
},
{
"id": "df27aa1a-1cbe-4913-90d1-09ac5a484677",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-960,
-360
],
"parameters": {
"width": 1000,
"height": 220,
"content": "### \ud83d\udcf8 Automate Screenshot Capture & Text Extraction\n\nThis first part of the workflow begins by monitoring a Google Sheet for new URLs. When a new row is added, Dumpling AI captures a full-page screenshot of the given URL. Then, Dumpling AI\u2019s extract-image endpoint pulls all visible text and UI elements from the screenshot. The file is downloaded and saved in Google Drive for future reference. A separate log of the screenshot URL is written back to the original spreadsheet.\n"
},
"typeVersion": 1
},
{
"id": "657a7360-b9d1-40c5-93a5-be032c22de88",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
80,
-360
],
"parameters": {
"width": 960,
"height": 220,
"content": "### \ud83d\udecd\ufe0f Extract and Store Product Listings with GPT-4o\n\nAfter saving the screenshot, GPT-4o receives the extracted text and processes it to identify structured product details like name, price, rating, purchase volume, deals, and buying options. Each product is split into an individual record using a Split Out node. Finally, each product is appended to a different sheet for structured logging and analysis.\n"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "991d7669-24c9-40b5-b921-07c63f9778c0",
"connections": {
"Download Screenshot File": {
"main": [
[
{
"node": "Save Screenshot to Drive Folder",
"type": "main",
"index": 0
}
]
]
},
"Trigger on New URL in Sheet": {
"main": [
[
{
"node": "Take Full-Page Screenshot using Dumpling AI",
"type": "main",
"index": 0
}
]
]
},
"Save Screenshot to Drive Folder": {
"main": [
[
{
"node": " Log Screenshot URL to Spreadsheet",
"type": "main",
"index": 0
}
]
]
},
" Log Screenshot URL to Spreadsheet": {
"main": [
[
{
"node": "Extract Product Info from Screenshot Text with GPT-4o",
"type": "main",
"index": 0
}
]
]
},
" Split Each Product into Individual Record": {
"main": [
[
{
"node": "Save Products info to Google Sheet",
"type": "main",
"index": 0
}
]
]
},
"Take Full-Page Screenshot using Dumpling AI": {
"main": [
[
{
"node": "Extract All Visible Data from Screenshot (Dumpling AI)",
"type": "main",
"index": 0
}
]
]
},
"Extract Product Info from Screenshot Text with GPT-4o": {
"main": [
[
{
"node": " Split Each Product into Individual Record",
"type": "main",
"index": 0
}
]
]
},
"Extract All Visible Data from Screenshot (Dumpling AI)": {
"main": [
[
{
"node": "Download Screenshot File",
"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.
googleDriveOAuth2ApigoogleSheetsOAuth2ApigoogleSheetsTriggerOAuth2ApihttpHeaderAuthopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow is perfect for eCommerce teams, market researchers, and product analysts who want to track or extract product information from websites that restrict scraping tools. It’s also useful for virtual assistants handling product comparison tasks.
Source: https://n8n.io/workflows/4329/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Transform your receipt management with this comprehensive n8n workflow that automatically processes receipts through Telegram, extracts transaction data using AI, and stores it across multiple platfor
The problem Ever attend a networking event and find yourself taking screenshots of people's LinkedIn? Sounds counter-intuitive because you are connecting on LinkedIn. But you find it hard to keep trac
This advanced n8n workflow automates the full lead enrichment, qualification, and personalized outreach process tailored specifically for the B2B real estate sector. Integrating top platforms like Api
This automation is designed to help you generate AI-powered music tracks, cover art, and fully rendered music videos — all triggered from a simple Telegram chat and managed via Google Sheets.
Domain Outbound Machine is an n8n workflow designed to fully automate the domain sales process: lead generation, email extraction, personalized outreach, and automated email sending. It also stores ex