This workflow corresponds to n8n.io template #5392 — we link there as the canonical source.
This workflow follows the Execute Workflow Trigger → 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 →
{
"id": "9UyGvrk6EDY6Hm3W",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "WebPage-Reader",
"tags": [],
"nodes": [
{
"id": "f449a425-4ae9-462d-91bb-ff0b85a73202",
"name": "Content Extractor",
"type": "n8n-nodes-webpage-content-extractor.webpageContentExtractor",
"position": [
940,
100
],
"parameters": {
"html": "={{ $json.data }}"
},
"typeVersion": 1
},
{
"id": "e52eddc5-72a7-4bd8-8679-ecedccad447c",
"name": "Try Antibot Evasion",
"type": "n8n-nodes-base.if",
"position": [
280,
180
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "1351d4e8-1c27-43c2-8335-aee7c097422a",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.error.code }}",
"rightValue": "ECONNABORTED"
},
{
"id": "28a4c2eb-0a9b-44ac-87d5-6571be2fb447",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.error.code }}",
"rightValue": "ETIMEDOUT"
},
{
"id": "1287e08b-a342-4651-8e56-1d1ff4677222",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.error.code }}",
"rightValue": "ERR_CANCELED"
},
{
"id": "45256daa-063f-4ed3-8ef0-5ec91cdc0974",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.error.code }}",
"rightValue": "ERR_BAD_REQUEST"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "a90654b8-b83b-41ed-a665-9a0303a84de3",
"name": "Scrape.do",
"type": "n8n-nodes-base.httpRequest",
"position": [
500,
180
],
"parameters": {
"url": "=http://api.scrape.do",
"options": {
"timeout": 120000
},
"sendQuery": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpQueryAuth",
"queryParameters": {
"parameters": [
{
"name": "url",
"value": "={{ $json.url }}"
}
]
}
},
"credentials": {
"httpQueryAuth": {
"name": "<your credential>"
}
},
"retryOnFail": true,
"typeVersion": 4.2,
"waitBetweenTries": 5000
},
{
"id": "62c1fb07-35e0-4942-b38d-b888b559e109",
"name": "Server Error",
"type": "n8n-nodes-base.stopAndError",
"position": [
500,
380
],
"parameters": {
"errorMessage": "=Error requesting website ({{ $json.error.code }})"
},
"typeVersion": 1
},
{
"id": "7e793496-3ba7-4a30-bb6c-d483c00671c6",
"name": "Not 404",
"type": "n8n-nodes-base.if",
"position": [
60,
180
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "81558598-6188-4712-962c-3f80fcba1297",
"operator": {
"type": "number",
"operation": "notEquals"
},
"leftValue": "={{ $json.error.status }}",
"rightValue": 404
}
]
}
},
"typeVersion": 2.2
},
{
"id": "9ae25973-ffa0-4b14-943b-d8a9fa0ee3b0",
"name": "Not Found",
"type": "n8n-nodes-base.stopAndError",
"position": [
280,
380
],
"parameters": {
"errorMessage": "=Error requesting website (404)"
},
"typeVersion": 1
},
{
"id": "8af2bbee-ebd0-49e2-aa4a-bc58e1ccaf31",
"name": "Simple Scraper",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueErrorOutput",
"position": [
-160,
120
],
"parameters": {
"url": "={{ $json.url }}",
"options": {
"timeout": 10000,
"redirect": {
"redirect": {}
},
"allowUnauthorizedCerts": 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/0.0.0.0 Safari/537.36"
}
]
}
},
"retryOnFail": true,
"typeVersion": 4.2,
"waitBetweenTries": 5000
},
{
"id": "f0f8106a-9a8c-492e-8082-fc82a3852765",
"name": "Full Text",
"type": "n8n-nodes-base.if",
"position": [
1160,
100
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "b32569d1-ba84-401f-9dc9-99b2c804cba2",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $('Workflow Call').item.json.fulltext }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "325b73df-6fe0-4c22-985e-0916a09a8865",
"name": "Fulltext Output",
"type": "n8n-nodes-base.set",
"position": [
1380,
0
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "91a15268-86a9-4390-9e19-9fba4d21aeed",
"name": "title",
"type": "string",
"value": "={{ $json.title.replace(/\\p{Extended_Pictographic}/gu, '') }}"
},
{
"id": "90d16e3d-49ca-4a65-a4ae-cd689de990db",
"name": "text",
"type": "string",
"value": "={{\n( $json.textContent || '' )\n.replace(/\\p{Extended_Pictographic}/gu, '')\n.replace(/[\\r\\n]+/g, ' ')\n.replace(/\\s+/g, ' ')\n.trim()\n}}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "32e88e32-0068-47de-8f72-aee167f15ca2",
"name": "Summary Output",
"type": "n8n-nodes-base.set",
"position": [
1380,
200
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "91a15268-86a9-4390-9e19-9fba4d21aeed",
"name": "title",
"type": "string",
"value": "={{ $json.title.replace(/\\p{Extended_Pictographic}/gu, '') }}"
},
{
"id": "28476e01-485e-4373-a6c3-b3703d4ba1e4",
"name": "url",
"type": "string",
"value": "={{ $('Workflow Call').item.json.url }}"
},
{
"id": "90d16e3d-49ca-4a65-a4ae-cd689de990db",
"name": "content",
"type": "string",
"value": "={{\n( $json.excerpt || '' )\n.replace(/\\p{Extended_Pictographic}/gu, '')\n.replace(/[\\r\\n]+/g, ' ')\n.replace(/\\s+/g, ' ')\n.trim()\n}}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "96438bb1-1918-4ae6-9a40-0624968ca7b3",
"name": "Is Binary",
"type": "n8n-nodes-base.if",
"position": [
720,
0
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "8255ef66-f18d-4f38-a283-592cbd617109",
"operator": {
"type": "object",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $binary.data }}",
"rightValue": ".pdf"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "5bb977be-3e50-4240-a05a-4df23e8f7470",
"name": "ContentType Error",
"type": "n8n-nodes-base.stopAndError",
"position": [
940,
-80
],
"parameters": {
"errorMessage": "=Unsupported content-type"
},
"typeVersion": 1
},
{
"id": "7b68057e-9189-4291-a40f-e9941443a65a",
"name": "Workflow Call",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
-380,
120
],
"parameters": {
"workflowInputs": {
"values": [
{
"name": "url"
},
{
"name": "fulltext",
"type": "boolean"
}
]
}
},
"typeVersion": 1.1
},
{
"id": "bbe6563d-1131-4f7e-9a19-0dff16d1adb5",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1200,
-100
],
"parameters": {
"width": 760,
"height": 640,
"content": "# WebPage Reader for AI Agents & Workflows\n\nThis sub-workflow enables reliable and clean scraping of any public webpage by simply passing a **url** parameter. It is designed to be embedded into other workflows or used as a tool for AI agents.\n\n\ud83e\udde9 This template requires the [n8n-nodes-webpage-content-extractor](https://www.npmjs.com/package/n8n-nodes-webpage-content-extractor) community node, so it only works in self-hosted n8n environments.\n\n\ud83d\udca1 If the site is protected by anti-bot systems (like Cloudflare), it will automatically fallback to [Scrape.do](https://scrape.do/), a scraping API with a generous free plan. You only need to provide your API Token.\n\n## Input Parameters:\n- **url** (string): the webpage URL to scrape\n- **fulltext** (boolean): set true for full page content, false for summarized output\n\n## Output Modes:\n- **fulltext: true** \u2014 returns *{ title, text }* with full page content\n- **fulltext: false** \u2014 returns *{ title, url, content }* with a short excerpt\n\n## Usage:\nIn your workflows you can invoke this workflow using the **Execute Sub-workflow** or **Call n8n Workflow Tool** nodes.\nRemember to pass the url as a parameter and configure the fulltext option when invoking it.\n\n\n*(See the Setup note for instructions on how to set up this workflow.)*"
},
"typeVersion": 1
},
{
"id": "cf3a4e8f-d63f-482d-81eb-746ed7f66c85",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1600,
-100
],
"parameters": {
"width": 680,
"height": 660,
"content": "# Setup\nTo set up this workflow you will need to install the [n8n-nodes-webpage-content-extractor](https://www.npmjs.com/package/n8n-nodes-webpage-content-extractor) community node and API Token from your [Scrape.do](https://scrape.do/) account. Then you will just need to configure the `Scrape.do` node here with your credentials.\n\n## Community Node Installation\nBefore importing this workflow you first need to install this node on your n8n.\n- Go to your n8n's settings page. By clicking on the three dots next to your username in the bottom left corner of the screen.\n- In the left side menu click on Community Nodes.\n- Now click on the Install button.\n- In the npm Package Name field enter **n8n-nodes-webpage-content-extractor**, check the box that says *I understand the risks of installing unverified code from a public source*, and then click the Install button.\n\n## `Scrape.do` Node Setup\nBefore configuring the node, create your account on [Scrape.do](https://scrape.do/) and save your API Token\n- Open the Node `Scrape.do` configuration window by double-clicking on it.\n- In the **Authentication** field, select the **Generic Credential Type** option.\n- In the **Generic Credential Type** field below select the **Query Auth** option\n- In the **Query Auth** field below select **Create new credential**. To save your token to a new n8n credential.\n- In the window that opens, in the **Name** field, enter the word **token** only. In the **Value** field, paste your **API Token**. Then click the Save button.\n\n\n\n**Your workflow is ready! You can now use it in your workflows and in your AI Agents!**"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"callerPolicy": "workflowsFromSameOwner",
"errorWorkflow": "4HcJPFvOCSd7pZeG",
"executionOrder": "v1",
"saveDataSuccessExecution": "none"
},
"versionId": "8cc14be0-b5b6-41c3-8838-e92591538965",
"connections": {
"Not 404": {
"main": [
[
{
"node": "Try Antibot Evasion",
"type": "main",
"index": 0
}
],
[
{
"node": "Not Found",
"type": "main",
"index": 0
}
]
]
},
"Full Text": {
"main": [
[
{
"node": "Fulltext Output",
"type": "main",
"index": 0
}
],
[
{
"node": "Summary Output",
"type": "main",
"index": 0
}
]
]
},
"Is Binary": {
"main": [
[
{
"node": "ContentType Error",
"type": "main",
"index": 0
}
],
[
{
"node": "Content Extractor",
"type": "main",
"index": 0
}
]
]
},
"Scrape.do": {
"main": [
[
{
"node": "Is Binary",
"type": "main",
"index": 0
}
]
]
},
"Workflow Call": {
"main": [
[
{
"node": "Simple Scraper",
"type": "main",
"index": 0
}
]
]
},
"Simple Scraper": {
"main": [
[
{
"node": "Is Binary",
"type": "main",
"index": 0
}
],
[
{
"node": "Not 404",
"type": "main",
"index": 0
}
]
]
},
"Content Extractor": {
"main": [
[
{
"node": "Full Text",
"type": "main",
"index": 0
}
]
]
},
"Try Antibot Evasion": {
"main": [
[
{
"node": "Scrape.do",
"type": "main",
"index": 0
}
],
[
{
"node": "Server Error",
"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.
httpQueryAuth
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
Source: https://n8n.io/workflows/5392/ — 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.
Upload files from any source to your account Kommo or AmoCRM with a simple and reusable workflow. It can split a large file into small ones and upload chunks. Works for Kommo and amoCRM There are 3 re
It validates all inputs, queries providers sequentially, and merges results into a single enforced output schema. The workflow is designed to guarantee complete coverage for the requested currencies.
This workflow is designed to translate a video accessible by URL (supported sources: YouTube, Google Drive, S3, Vimeo, or a direct link) into a language supported by Rask AI.
This workflow integrates the Apache Airflow API DAGRun and XCom. It enables n8n to trigger Airflow DAGs and retrieve the execution results. Update Airflow API Link Prefix Navigate to the node. Update
[n8n] Advanced URL Parsing and Shortening Workflow - Switchy.io Integration. Uses splitInBatches, stickyNote, httpRequest, html. Event-driven trigger; 56 nodes.