n8n – Headless Browser Automation

n8n has many great functions, but one it lacks is direct interaction with websites. To solve this, you can run Browserless in a separate container alongside n8n.

Docker Compose service

services:
browserless:
image: browserless/chrome:latest
ports:
- "3050:3000"
environment:
- ENABLE_DEBUGGER=false
- PREBOOT_CHROME=true
- MAX_CONCURRENT_SESSIONS=10
restart: always

Text extraction with Browserless

HTTP Request node

Method: POST

URL: http://browserless:3000/function

Response Format: JSON

Body (JSON):

{
"code": "module.exports = async ({ page }) => {
await page.goto('https://ambientnode.uk', { waitUntil: 'domcontentloaded' });
const bodyText = await page.evaluate(() => document.body.innerText);
return { data: { bodyText }, type: 'application/json' };
}"
}

Screenshot with Browserless

A simple screenshot call:

HTTP Request node

Method: POST

URL: http://browserless:3000/screenshot

Response Format: File

Body (JSON):

{
"url": "https://ambientnode.uk",
"options": {
"type": "png",
"fullPage": true
}
}

This will give you back a PNG of the requested page.