This workflow follows the Agent → Airtable 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 →
{
"name": "Visual Scraping N8N",
"nodes": [
{
"parameters": {},
"id": "d78cf805-e0ea-41b7-af56-fc57ce00a49b",
"name": "When clicking \u2018Test workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
0,
0
],
"typeVersion": 1
},
{
"parameters": {
"url": "https://app.scrapingbee.com/api/v1",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "api_key",
"value": "TA CLE API"
},
{
"name": "url",
"value": "={{$json.url}}"
}
]
},
"options": {}
},
"id": "29b1e7f0-32c4-4882-8f7c-2017b76a85a6",
"name": "ScrapingBee- Get page HTML",
"type": "n8n-nodes-base.httpRequest",
"position": [
2000,
640
],
"typeVersion": 4.2
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "c53c5ed2-9c7b-4365-9953-790264c722ab",
"name": "url",
"type": "string",
"value": "={{ $json.url }}"
}
]
},
"options": {}
},
"id": "f44576e6-52f8-4625-a165-bfbc0d62dd3a",
"name": "Set fields",
"type": "n8n-nodes-base.set",
"position": [
1280,
0
],
"typeVersion": 3.4
},
{
"parameters": {
"url": "https://app.scrapingbee.com/api/v1",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "api_key",
"value": "TA CLE API"
},
{
"name": "url",
"value": "={{ $json.url }}"
},
{
"name": "screenshot_full_page",
"value": "true"
}
]
},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "User-Agent",
"value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
}
]
},
"options": {}
},
"id": "e751205d-4ad8-4d0a-bb70-906f363b1fb4",
"name": "ScrapingBee - Get page screenshot",
"type": "n8n-nodes-base.httpRequest",
"position": [
1700,
0
],
"typeVersion": 4.2
},
{
"parameters": {},
"id": "7e06da71-bcf6-4879-bc74-74014fdd06fc",
"name": "HTML-Scraping Tool",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
1200,
640
],
"typeVersion": 1
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "c53c5ed2-9c7b-4365-9953-790264c722ab",
"name": "url",
"type": "string",
"value": "={{ $json.query }}"
}
]
},
"options": {}
},
"id": "b7736159-bf73-4bac-ae08-445a5d3d2a45",
"name": "Set fields - from AI agent query",
"type": "n8n-nodes-base.set",
"position": [
1600,
640
],
"typeVersion": 3.4
},
{
"parameters": {
"html": "={{ $json.data }}",
"options": {}
},
"id": "598395f7-f95b-4403-adf2-02ab246e6f6a",
"name": "HTML to Markdown",
"type": "n8n-nodes-base.markdown",
"position": [
2460,
640
],
"typeVersion": 1
},
{
"parameters": {
"operation": "search",
"base": {
"__rl": true,
"value": "appRmm9kkMqVyn8Qi",
"mode": "list",
"cachedResultName": "Base D\u00e9monstration N8N",
"cachedResultUrl": "https://airtable.com/appRmm9kkMqVyn8Qi"
},
"table": {
"__rl": true,
"value": "tblWpSOaWGis3C0Zy",
"mode": "list",
"cachedResultName": "Site \u00e0 scraper",
"cachedResultUrl": "https://airtable.com/appRmm9kkMqVyn8Qi/tblWpSOaWGis3C0Zy"
},
"options": {}
},
"type": "n8n-nodes-base.airtable",
"typeVersion": 2.1,
"position": [
500,
0
],
"id": "a43cc96d-d7a5-4408-855b-4f966c2fa510",
"name": "Airtable",
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"fieldToSplitOut": "output",
"options": {}
},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
2460,
0
],
"id": "e6ba5e9f-7784-42a6-bfc7-c9814f4fe38a",
"name": "Split Out"
},
{
"parameters": {
"operation": "create",
"base": {
"__rl": true,
"value": "appRmm9kkMqVyn8Qi",
"mode": "list",
"cachedResultName": "Base D\u00e9monstration N8N",
"cachedResultUrl": "https://airtable.com/appRmm9kkMqVyn8Qi"
},
"table": {
"__rl": true,
"value": "tblynwBQ4HwBPSFHf",
"mode": "list",
"cachedResultName": "Livre",
"cachedResultUrl": "https://airtable.com/appRmm9kkMqVyn8Qi/tblynwBQ4HwBPSFHf"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"Nom du livre": "={{ $json.Nom_du_livre }}",
"Auteur": "={{ $json.Auteur_1 }}",
"Type de livre": "={{ $json.Type_livre }}",
"Prix": "={{ $json.Prix }}",
"Nombre d'avis": "={{ $json.Nb_avis }}",
"Note": "={{ $json.Note.round() }}"
},
"matchingColumns": [],
"schema": [
{
"id": "Nom du livre",
"displayName": "Nom du livre",
"required": false,
"defaultMatch": false,
"canBeUsedToMatch": true,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "Auteur",
"displayName": "Auteur",
"required": false,
"defaultMatch": false,
"canBeUsedToMatch": true,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "2eme Auteur",
"displayName": "2eme Auteur",
"required": false,
"defaultMatch": false,
"canBeUsedToMatch": true,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "Type de livre",
"displayName": "Type de livre",
"required": false,
"defaultMatch": false,
"canBeUsedToMatch": true,
"display": true,
"type": "options",
"options": [
{
"name": "Broch\u00e9",
"value": "Broch\u00e9"
},
{
"name": "Poche",
"value": "Poche"
},
{
"name": "Reli\u00e9",
"value": "Reli\u00e9"
}
],
"readOnly": false,
"removed": false
},
{
"id": "Prix",
"displayName": "Prix",
"required": false,
"defaultMatch": false,
"canBeUsedToMatch": true,
"display": true,
"type": "number",
"readOnly": false,
"removed": false
},
{
"id": "Note",
"displayName": "Note",
"required": false,
"defaultMatch": false,
"canBeUsedToMatch": true,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "Nombre d'avis",
"displayName": "Nombre d'avis",
"required": false,
"defaultMatch": false,
"canBeUsedToMatch": true,
"display": true,
"type": "number",
"readOnly": false,
"removed": false
}
]
},
"options": {}
},
"type": "n8n-nodes-base.airtable",
"typeVersion": 2.1,
"position": [
2700,
0
],
"id": "be2290f2-65f3-45f8-aa25-2c1164cb33ca",
"name": "Airtable1",
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"name": "Scrape_HTML_Page",
"description": "=Appeler cet outil pour r\u00e9cuperer le lien/URL vers chaque livre ",
"workflowId": {
"__rl": true,
"value": "sQAxK6IhSrq3SQyg",
"mode": "list",
"cachedResultName": "Scraping Stor Systemes"
},
"responsePropertyName": "data"
},
"id": "bccaad09-cf8b-405b-932a-9ca825a6c9b0",
"name": "Scrape_HTML_Page",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"position": [
2020,
280
],
"typeVersion": 1.2
},
{
"parameters": {
"content": "Outil n\u00b01 - Scraper Page HTML",
"height": 280,
"width": 1760
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
1040,
560
],
"id": "512f2f16-bcf0-45bc-8598-3b6c53579772",
"name": "Sticky Note"
},
{
"parameters": {
"modelName": "models/gemini-1.5-pro-latest",
"options": {}
},
"id": "faeb2cf9-6aa6-47c4-b9c6-811a283be981",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
1800,
260
],
"typeVersion": 1,
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "=Voici le screenshot de la page comportant les livres dont tu dois analys\u00e9s les informations :\n\n{{ $json.url }}",
"hasOutputParser": true,
"options": {
"systemMessage": "=Extraire les informations suivantes sur la page: \n\n- Nom du Livre\n- Auteur du Livre\n- 2eme Auteur du Livre\n- Prix du Livre\n- Note sur 5 \u00e9toiles\n- Nombre d'avis\n- Type de livre\n\n\u00c9tape 1 : Extraction bas\u00e9e sur l\u2019image\n\n- Analyser la capture d\u2019\u00e9cran fournie pour identifier et extraire les informations donn\u00e9es. (Exemple r\u00e9cuperer les informartions de l'auteur, note 5 \u00e9toiles)\n- Assurez-vous que l\u2019extraction soit compl\u00e8te et validez l'information sur chacun des livres.\n\n- Mettez en \u00e9vidence toute limitation (par exemple, texte flou, partiellement rogn\u00e9 ou manquant) rencontr\u00e9e lors du processus d\u2019extraction.\n\n\u00c9tape 2 : Utiliser l'outil : Scrape_HTML_Page pour obtenir le lien vers les livres amazon\n\n- Appelez l'outil : Scrape_HTML_Page avec l\u2019URL d\u2019entr\u00e9e pour acc\u00e9der au contenu de la page.\n- Extrayez les informations demand\u00e9es \u00e0 partir du HTML pour compl\u00e9ter ou remplacer le r\u00e9sultat bas\u00e9s sur l\u2019image.\n- Combinez les donn\u00e9es issues des deux sources (si applicable) pour garantir un r\u00e9sultat final exhaustif et pr\u00e9cis.\n\nExemples de r\u00e9ponse d'extraction du nombre de pages\n\n\" Nom du livre : Les Mis\u00e9rables \nde Victor Hugo et Benoit Ferrere\n4,5 \u00e9toiles 9,9k \nPoche\n10,70\u20ac\"\n\n\nNote additionnels\n\nUtiliser l'outil Scrape_HTML_Page pour obtenir le lien vers le livre\n\nExemple de sortie\n\nPour chaque livre obtenu, le json doit \u00eatre dans ce format exactement: \n\n[\n\n{\n \"Nom_du_livre\":\"Les Mis\u00e9rables\",\n \"Auteur_1\":\"Victor Hugo\",\n \"Auteur_2\":\"Benoit Ferrere\",\n \"Note\":5,\n \"Type_livre\":\"Broch\u00e9\",\n \"Nb_avis\":9000,\n \"Prix\":10,70\n}\n\n]",
"passthroughBinaryImages": true
}
},
"id": "acd0740c-4fec-4adc-a5ac-01a37ba9140c",
"name": "Agent Analyseur d'images",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1980,
0
],
"typeVersion": 1.7
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
"typeVersion": 1,
"position": [
2220,
200
],
"id": "5e9ef4ce-e1b2-48ab-84b2-a8dd57e2ec48",
"name": "Auto-fixing Output Parser"
},
{
"parameters": {
"jsonSchemaExample": "[\n\n{\n \"Nom_du_livre\":\"Les Mis\u00e9rables\",\n \"Auteur_1\":\"Victor Hugo\",\n \"url_livre:\":\"https://www.amazon.fr/mis%C3%A9rables-Fantine-int%C3%A9gral-%C3%89dition-illustr%C3%A9e/dp/B085QDM14S/ref=sr_1_1_sspa?crid=15XPQBVY467BL&dib=eyJ2IjoiMSJ9.a-et2m9aSHTBUI67jkTfzX0GxGR2HMwG5D9iBlTC9Q3ytBgmjJL4YjGpJnASKPh9FPIECTWm32XfTKQDmJWLBjTvZXJBA8ITVap9kdVHH9yIL_HpKMs1w4ErFan6IgxwKGmiKoib0YJYO7S8q6iaE_gA4TuTuxnROwRBD9XDSSk_7tP-9fl7wRAdb0jRKyVc3HNRWNJLFAsl8io6h7eyjoANAtSlb2d742fSeSE9XI9WRv1jFzlJhhUGPWx7SubtRCC88qjTgCrW3CPToAmRhi6HffcgmAhW--blkspvjCc.5ciNhoEZySSJZXTgK_zNRa_hj8LDyKrG0xN1-UMvLT8&dib_tag=se&keywords=les+miserables+victor+hugo&qid=1734019684&sprefix=les+miserab%2Caps%2C131&sr=8-1-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&psc=1\",\n \"Auteur_2\":\"Benoit Ferrere\",\n \"Note\":4,\n \"Type_livre\":\"Broch\u00e9\",\n \"Nb_avis\":9000,\n \"Prix\":10.7\n}\n\n]"
},
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"typeVersion": 1.2,
"position": [
2460,
360
],
"id": "3c80ba9b-4d3b-4334-aea6-6596dab9908c",
"name": "Structured Output Parser"
},
{
"parameters": {
"modelName": "models/gemini-1.5-pro-latest",
"options": {}
},
"id": "df394dc9-4d20-40a8-b5e9-2183f5337e2d",
"name": "Google Gemini Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
2220,
380
],
"typeVersion": 1,
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
}
],
"connections": {
"When clicking \u2018Test workflow\u2019": {
"main": [
[
{
"node": "Airtable",
"type": "main",
"index": 0
}
]
]
},
"ScrapingBee- Get page HTML": {
"main": [
[
{
"node": "HTML to Markdown",
"type": "main",
"index": 0
}
]
]
},
"Set fields": {
"main": [
[
{
"node": "ScrapingBee - Get page screenshot",
"type": "main",
"index": 0
}
]
]
},
"ScrapingBee - Get page screenshot": {
"main": [
[
{
"node": "Agent Analyseur d'images",
"type": "main",
"index": 0
}
]
]
},
"HTML-Scraping Tool": {
"main": [
[
{
"node": "Set fields - from AI agent query",
"type": "main",
"index": 0
}
]
]
},
"Set fields - from AI agent query": {
"main": [
[
{
"node": "ScrapingBee- Get page HTML",
"type": "main",
"index": 0
}
]
]
},
"Airtable": {
"main": [
[
{
"node": "Set fields",
"type": "main",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "Airtable1",
"type": "main",
"index": 0
}
]
]
},
"Scrape_HTML_Page": {
"ai_tool": [
[
{
"node": "Agent Analyseur d'images",
"type": "ai_tool",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "Agent Analyseur d'images",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Agent Analyseur d'images": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"Auto-fixing Output Parser": {
"ai_outputParser": [
[
{
"node": "Agent Analyseur d'images",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Auto-fixing Output Parser",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Google Gemini Chat Model1": {
"ai_languageModel": [
[
{
"node": "Auto-fixing Output Parser",
"type": "ai_languageModel",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "70edc791-544a-417c-bfc7-db7103bf5adc",
"id": "99Vigtu32QjPNRjk",
"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.
airtableTokenApigooglePalmApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Visual Scraping N8N. Uses httpRequest, executeWorkflowTrigger, airtable, toolWorkflow. Event-driven trigger; 17 nodes.
Source: https://github.com/Stirito/N8N_Workflow_Template/blob/3a287db93553c1da2bac6454d4792cdc8bdbc4d1/Visual_Scraping_N8N.json — 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.
The AI-Powered Shopify SEO Content Automation is an enterprise-grade workflow that transforms product content creation for e-commerce stores. This sophisticated multi-agent system integrates GPT-4o, C
How it Works
Typeform IA - YT. Uses typeformTrigger, agent, lmChatOpenAi, toolWorkflow. Event-driven trigger; 75 nodes.
Agent Nodes. Uses lmChatOpenAi, slack, stopAndError, errorTrigger. Event-driven trigger; 72 nodes.
This workflow helps to automatically discover undocumented API endpoints by analysing JavaScript files from the website's HTML code.