Integrations
URLpipe in n8n
Any URL to Markdown, a screenshot or metadata inside a workflow — with the HTTP Request node you already have.
By Roger Campos · Last updated: September 2026
TL;DR
URLpipe needs no custom node in n8n: the built-in HTTP Request node posts to an endpoint such as https://urlpipe.dev/markdown with a Header Auth credential and a JSON body. Use sync: true and a timeout above 60 seconds for quick calls, or pass an n8n Webhook URL as report_to and let the result start the next workflow.
Free plan, no credit card. 1,000 credits a month.
Step 1
Set up the credential once
In n8n, create a credential of type Header Auth: name Authorization, value Bearer YOUR_API_KEY, using a project API key from the URLpipe dashboard. Every HTTP Request node that calls URLpipe picks this credential, so the key lives in one place and never in the workflow JSON.
Step 2
The HTTP Request node, field by field
| Field | Value |
|---|---|
| Method | <code>POST</code> |
| URL | <code>https://urlpipe.dev/markdown</code> — or <code>/screenshot</code>, <code>/meta</code>, <code>/scrape</code>… |
| Authentication | Generic Credential Type → Header Auth → your URLpipe credential |
| Send Body | On — Body Content Type <strong>JSON</strong>, Specify Body <strong>Using JSON</strong> |
| JSON | <code>{"url": "{{ $json.url }}", "sync": true}</code> |
| Options → Response | Response Format <strong>Text</strong> for /markdown and /screenshot; <strong>JSON</strong> for /meta, /console, /lighthouse, /scrape |
| Options → Timeout | <code>70000</code> ms. The node's default is 10 seconds; a sync call can take up to 60 |
{{ $json.url }} takes the URL from the incoming item, so the node runs once per row of a sheet, per RSS item, per record — whatever the previous node produced.
Copy and paste
An importable workflow
Copy this JSON and paste it onto an n8n canvas (or use Import from File). Open the HTTP Request node, choose your Header Auth credential, and run it. It reads a page as Markdown into a field called markdown.
{
"name": "URLpipe: URL to Markdown",
"nodes": [
{
"parameters": {},
"id": "6f1a2b3c-1d2e-4f50-8a9b-0c1d2e3f4a51",
"name": "Manual Trigger",
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [0, 0]
},
{
"parameters": {
"method": "POST",
"url": "https://urlpipe.dev/markdown",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "{\n \"url\": \"https://example.com\",\n \"sync\": true\n}",
"options": {
"response": {
"response": {
"responseFormat": "text",
"outputPropertyName": "markdown"
}
},
"timeout": 70000
}
},
"id": "6f1a2b3c-1d2e-4f50-8a9b-0c1d2e3f4a52",
"name": "URLpipe: Markdown",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [240, 0]
}
],
"connections": {
"Manual Trigger": {
"main": [
[
{ "node": "URLpipe: Markdown", "type": "main", "index": 0 }
]
]
}
},
"settings": { "executionOrder": "v1" }
}Swap the fixed URL for an expression — ={ "url": "{{ $json.url }}", "sync": true } — once a real trigger feeds it. For a screenshot, change the URL to /screenshot: the text response is the image in Base64, and the Convert to File node turns it into a binary file.
Step 3
Async: let the result start the workflow
For Lighthouse audits, big batches or anything slow, don't hold the node open. Build a second workflow that starts with a Webhook node (method POST), copy its Production URL, and pass it as report_to:
{
"url": "{{ $json.url }}",
"operations": ["markdown", "meta"],
"report_to": "https://your-n8n.example.com/webhook/urlpipe-results",
"labels": { "row": "{{ $json.id }}" }
}The first workflow gets back {"token": …, "status": "accepted"} at once. When the work is done, URLpipe posts the result to the Webhook node: body.success, body.result, body.labels.row to match it to your data, and body.error on failure. The webhook must be a public https (or http) address on the default port — a URL with :5678 or any other port is refused, and so are IP addresses and localhost. n8n Cloud's webhook URLs qualify; a self-hosted instance needs a public hostname on port 443.
Turn on webhook signing in the project's settings and deliveries carry an HMAC-SHA256 signature; verifying it needs the raw request body — see signing & verifying.
Limits
What it costs, and what it doesn't do
- Each node execution is one API call at the usual rate: 1 credit for Markdown or a screenshot, 5 for metadata. A repeat inside seven days is a free cache hit, so re-running a workflow while you build it costs nothing.
- The HTTP API allows 60 requests a minute and 15 per 10 seconds per project; on a big list, use the node's Batching option to space requests out.
- There is no URLpipe community node yet — this recipe uses n8n's own HTTP Request node, which is all the API needs.
Endpoints
The endpoints on this page
- Turn any URL into clean Markdown
Paste a link and get the page's main content as tidy Markdown — headings, lists, links and code kept, navigation and cookie banners stripped. The format LLMs and RAG pipelines work best with.
Try it free - Screenshot any website from its URL
Paste a link and get a full-page PNG of the rendered page — JavaScript executed, exactly as a real browser would draw it. Great for previews, monitoring and visual QA.
Try it free
FAQ
Frequently asked questions
Is there an official URLpipe node for n8n?
Why does my n8n request time out?
How do I get the result of an async request in n8n?
Can my self-hosted n8n receive URLpipe webhooks on port 5678?
Connect it in five minutes.
Free plan, no card. Confirm your email and your API key is live — you'll be making real requests in minutes.