---
seo_title: n8n Node for File Conversion and Web Scraping | EnConvert
meta_desc: Install the EnConvert n8n community node to convert DOCX, PDF and images, scrape pages into markdown, and crawl sites into vector-ready chunks in one node.
keywords: n8n pdf node, n8n docx to pdf, n8n convert file node, n8n extract text from docx, n8n web scraping node, n8n scrape url to markdown, n8n screenshot node, n8n rag vector store website, n8n community node file conversion, enconvert n8n node, n8n ai agent web scraping tool
---

# n8n Node for File Conversion and Web Data

`@enconvert/n8n-nodes-enconvert` is the official [n8n](https://n8n.io) community node for EnConvert. One node covers sixteen operations across six resources: convert files between formats, compress images, scrape web pages into markdown, extract structured fields from pages, search the web, and crawl an entire site into passages that are ready to embed in a vector store. It returns real n8n binary data, so a screenshot or a converted PDF drops straight into a Gmail attachment or a Google Drive upload with no extra HTTP Request node.

<div class="alert alert-info">
<strong>npm:</strong> <code>@enconvert/n8n-nodes-enconvert</code> · <strong>Source:</strong> <a href="https://github.com/enconvert/n8n-nodes-enconvert">enconvert/n8n-nodes-enconvert</a> · <strong>License:</strong> MIT
</div>

---

## What the node does

n8n ships two file nodes of its own. `Extract From File` reads CSV, HTML, JSON, ICS, ODS, PDF text, RTF, TXT, XLS and XLSX. `Convert to File` writes the same set back out. Neither one reads Word, PowerPoint or EPUB, neither one renders a web page, and on n8n Cloud you cannot install the command-line tools that would normally fill those gaps.

This node covers exactly that territory:

| You need | The node gives you |
|----------|--------------------|
| Word, PowerPoint, Excel, EPUB or RTF as text | `File > Convert to Markdown`, returning the text in the item |
| Almost anything as a PDF | `File > Convert to PDF`, with page size, margins, header and footer |
| A web page as clean markdown | `Web Page > Scrape`, roughly six times smaller than raw HTML |
| A screenshot or page PDF as a real file | `Web Page > Scrape`, attached as n8n binary |
| Named fields off a page | `Web Page > Extract`, described in plain language |
| A whole site in a vector store | `Website > Crawl`, one item per passage |

Everything runs against the same REST API documented across this site, so your dashboard quota, rate limits and plan features apply exactly as they do everywhere else.

---

## Install

n8n community nodes install from the editor. Open **Settings → Community nodes → Install**, then enter the package name:

```text
@enconvert/n8n-nodes-enconvert
```

On self-hosted n8n you can also install it from the command line inside your n8n data directory:

```bash
npm install @enconvert/n8n-nodes-enconvert
```

<div class="alert alert-warning">
<strong>n8n Cloud installs verified nodes only.</strong> If the install button is missing or the package cannot be found on Cloud, the node has not finished n8n's verification review yet. Until then, self-hosted instances can install it, and any instance can call the API directly with the HTTP Request node.
</div>

Restart n8n after installing. The node appears in the nodes panel as **EnConvert**, and each operation is separately searchable, so typing "docx", "screenshot" or "crawl" surfaces it too.

---

## Add your EnConvert credential

1. Generate a **private** API key in the [dashboard](/dashboard/api-keys). Private keys start with `sk_`.
2. In n8n, open the node, click **Create new credential**, and choose **EnConvert API**.
3. Paste the key and click **Save**, then **Test**.

The credential test calls `GET /v1/whoami`, which only accepts private keys. That means a public `pk_` key fails here, at the moment you paste it, instead of failing later inside a workflow run with a confusing message.

| Field | Required | Default | Purpose |
|-------|----------|---------|---------|
| API Key | Yes | -- | Your private key (`sk_...`) |
| Base URL | No | `https://api.enconvert.com` | Only change this if you were given a different endpoint |

<div class="alert alert-warning">
<strong>Public keys will not work.</strong> Keys starting with <code>pk_</code> are meant for browser widgets and are rejected by every operation in this node. Read more in <a href="/docs/private-keys">Private Keys</a>.
</div>

---

## Operations

### File

| Operation | What it does |
|-----------|--------------|
| **Convert to PDF** | Turns a document, spreadsheet, presentation, web page, image or text file into a PDF. Page size, orientation, margins, scale, grayscale, header and footer apply to HTML, markdown, text, EPUB, images and SVG. Office files carry their own page setup, so only Grayscale affects them, and the node reports which settings it skipped rather than failing the run. |
| **Convert to Markdown** | Turns Word, PowerPoint, Excel, PDF, EPUB, RTF, HTML and text files into markdown. Returns the text in the item by default so it feeds an AI node directly. Built on [Anything to Markdown](/docs/anything-to-markdown). |
| **Convert Data** | Converts between JSON, CSV, XML, YAML, TOML and HTML. Converting to JSON gives you a parsed object under `data`, ready for expressions like `{{ $json.data.total }}`. |
| **Split Into Chunks** | Uploads the file on every input item as a single job and returns overlapping passages ready to embed. Up to 200 files per run. |

### Image

| Operation | What it does |
|-----------|--------------|
| **Convert Format** | Converts between JPEG, PNG, WebP, HEIC and SVG, and rasterizes a PDF page to JPEG. Width and Height set the canvas when the input is an SVG. |
| **Compress** | Shrinks a PNG, JPEG or WebP towards a target size in KB. The format never changes. The target is best effort: a budget that cannot be met returns the smallest file achieved rather than an error, so check the size that comes back. |

### Web Page

| Operation | What it does |
|-----------|--------------|
| **Scrape** | Renders one page and returns markdown, cleaned HTML, raw HTML, links, images and structured data inside the item, plus screenshots and PDFs as binary. Results are cached for about an hour and a cache hit costs nothing. Built on [Perceive](/docs/v2-perceive). |
| **Scrape Many** | Renders up to 1000 pages in one run. The URLs field accepts a list you type or an expression that resolves to an array, so it chains directly from **Website > Map**. Setting Output Mode to a single ZIP file with the PDF output archives a set of pages in one go. |
| **Extract** | Pulls named fields off one or many pages. Describe what you want in plain language, list the fields by name, or supply a JSON Schema. Optional CSS selectors answer whatever they can before anything falls through to AI extraction, which lowers the cost on pages with a fixed layout. Built on [Distill](/docs/v2-distill). |

### Website

| Operation | What it does |
|-----------|--------------|
| **Map** | Lists a site's addresses without rendering any of them. It is fast, and it consumes none of your page allowance. Built on [Discover](/docs/v2-discover). |
| **Crawl** | Reads a whole site and returns passages ready to embed, each carrying its source URL, title and heading path. Runs without cookies or sign-in by design. Built on [Ingest](/docs/v2-ingest). |

### Search

| Operation | What it does |
|-----------|--------------|
| **Search** | Searches the web, news, images, scholar, patents or maps and returns one item per result. Scrape Top Results also renders the first few results and attaches their markdown, so a single run gives you the results page and the page contents together. Built on [Lookup](/docs/v2-lookup). |

### Job

| Operation | What it does |
|-----------|--------------|
| **Get** | Looks up any EnConvert job by ID. The node picks the right endpoint from the prefix, so scrape (`per_`), multi-page scrape (`batch_`), crawl (`ing_`) and file conversion IDs all work in the same field. |
| **Get Many** | Lists your recent crawl jobs, with Return All or a limit. |
| **Cancel** | Stops a running crawl or multi-page scrape. |
| **Retry Webhook** | Sends a finished crawl's completion webhook again. |

---

## Choosing how results come back

Every File and Image operation offers three shapes under **Response Format**:

| Value | What lands on the item |
|-------|------------------------|
| **File** | The converted file as n8n binary, ready for Gmail, Drive, S3 or Write to Disk |
| **Text** | The contents as text under `text`. Converting to JSON gives a parsed object under `data` instead |
| **URL Only** | Just a download link under `downloadUrl`, with nothing transferred |

Convert to PDF and the two Image operations default to **File**. Convert to Markdown and Convert Data default to **Text**, because a markdown string or a parsed object is what the next node in a workflow almost always wants.

<div class="alert alert-warning">
<strong>Use URL Only above 16 MB.</strong> n8n's default maximum item size is 16 MB and it is not adjustable on n8n Cloud, so a large conversion fails when the node tries to carry the bytes. URL Only sidesteps that. Download links stay valid for 15 minutes.
</div>

---

## Operations that run as jobs

**Scrape Many**, **Crawl** and **Split Into Chunks** submit work that can take minutes. By default the node waits and hands you the finished result. Three settings under **Options** control that:

| Option | Default | What it does |
|--------|---------|--------------|
| Wait for Completion | On | Turn off to receive the job ID immediately and continue elsewhere |
| Max Wait Time (Seconds) | 120 | How long to keep waiting before giving up on the wait |
| Poll Interval (Seconds) | 3 | How often to check |

If the wait runs out, the work is not lost. The error names the job ID, and **Job > Get** retrieves the finished result whenever you come back to it.

<div class="alert alert-info">
<strong>On n8n Cloud, keep Max Wait Time under 300 seconds.</strong> Cloud can cancel an execution at that point regardless of the node's own setting. For a crawl of several hundred pages, set a Webhook URL, turn Wait for Completion off, point the webhook at an n8n Webhook node, and continue the workflow there when EnConvert calls back.
</div>

---

## Supported formats

**Convert to PDF** accepts `bmp` `csv` `doc` `docx` `epub` `gif` `heic` `heif` `htm` `html` `jpeg` `jpg` `markdown` `md` `mdown` `mkd` `numbers` `odp` `ods` `odt` `ots` `pages` `pdf` `png` `ppt` `pptx` `rtf` `svg` `text` `tif` `tiff` `txt` `webp` `xhtml` `xls` `xlsx`.

**Convert to Markdown** accepts `csv` `doc` `docx` `epub` `htm` `html` `markdown` `md` `mdown` `mkd` `odp` `ods` `odt` `pdf` `ppt` `pptx` `rtf` `text` `txt` `xhtml` `xls` `xlsx`.

**Convert Data** covers JSON to and from XML, YAML, TOML and CSV, CSV to and from XML, and markdown to HTML.

**Convert Format** covers JPEG, PNG, WebP, HEIC and SVG in any combination, plus PDF to JPEG. Width and Height apply only when the input is an SVG, each accepts 1 to 10000, and the two multiplied together cannot exceed 25 million.

**Compress** accepts `png` `jpg` `jpeg` `webp`.

The node checks the pair before it sends anything. Ask for a combination that does not exist and it tells you so in the editor, along with the formats that file can actually be converted to. Pages scanned as images with no text layer are not read, because the node does not perform OCR.

---

## Example workflows

### Word document to an AI summary

```text
Google Drive (Download)  ->  EnConvert                       ->  Basic LLM Chain
                             File · Convert to Markdown
                             Response Format: Text
```

The markdown arrives at `{{ $json.text }}`. This is the path that `Extract From File` cannot take, because it does not read `.docx`.

### HTML invoice to a PDF attachment

```text
Set (build the HTML)  ->  Convert to File   ->  EnConvert                 ->  Gmail (Send)
                          (Text to File)       File · Convert to PDF
                                               PDF Options: A4, margins
```

### Website to a vector store

```text
EnConvert                     ->  Embeddings  ->  Pinecone
Website · Crawl
Mode: Sitemap, Max Pages: 200
Output: Chunks
```

Each item carries `content`, `sourceUrl`, `title`, `headingsPath`, `wordCount` and `chunkIndex`, which is the exact shape a Default Data Loader and a vector store node expect. One node replaces the usual crawl, chunk, loop and code pipeline.

### Competitor pricing into a spreadsheet

```text
EnConvert         ->  EnConvert                          ->  Google Sheets
Website · Map         Web Page · Extract
Mode: Sitemap         Source: Specific URLs
                      Define Fields By: Description
                      "the plan name and the monthly price"
```

Map is the cheap first step here. It lists the site's addresses without rendering them, so you only spend page allowance on the pages you actually want.

### Daily screenshot into Slack

```text
Schedule Trigger  ->  EnConvert            ->  Slack (Upload file)
                      Web Page · Scrape
                      Outputs: Screenshot
```

The PNG arrives as binary under `screenshot`. No second node is needed to fetch it.

---

## Using the node as an AI Agent tool

Every operation is available to n8n's AI Agent node as a tool. The web operations suit an agent best, because an agent can supply a URL or a search query but has no way to hand over a file.

The four worth exposing to an agent are **Web Page > Scrape**, **Search > Search**, **Web Page > Extract** and **Website > Map**. Together they let an agent find pages, read them as markdown, and pull structured facts out of them, which is the loop most research and lead-generation agents need.

---

## Troubleshooting

**The node does not appear after installing.**
Restart n8n. Community nodes load at startup. On n8n Cloud, check that the package installed at all, since Cloud accepts verified nodes only.

**`EnConvert rejected the API key`.**
The key is wrong, or it is a public `pk_` key. Open the credential and run **Test**. Generate a private key in the [dashboard](/dashboard/api-keys).

**`This operation is not included in your EnConvert plan`.**
Scrape, Extract, Search, Map and Crawl are plan-gated, and each has a monthly allowance. Retrying will not help. Check your usage and plan on the [pricing page](/pricing).

**`Could not tell what kind of file is in "data"`.**
The incoming file has no extension in its name, which happens with downloads from the HTTP Request node. Set **Input File Format** under Options to say what it is, for example `docx`.

**`This operation expects the node's input data to contain a binary file`.**
The previous node did not output a file, or it used a different field name. Check **Input Binary Field**, which is `data` on most n8n nodes.

**A large conversion fails inside n8n.**
Switch Response Format to URL Only. n8n items cap at 16 MB by default and that limit is fixed on Cloud.

**A crawl times out.**
Raise Max Wait Time, or turn Wait for Completion off and collect the result later with **Job > Get** using the job ID from the error message.

---

## Source and links

- **npm**: [@enconvert/n8n-nodes-enconvert](https://www.npmjs.com/package/@enconvert/n8n-nodes-enconvert)
- **GitHub**: [enconvert/n8n-nodes-enconvert](https://github.com/enconvert/n8n-nodes-enconvert)
- **License**: MIT
- **n8n community nodes**: [docs.n8n.io](https://docs.n8n.io/integrations/community-nodes/)
- **Underlying API**: [Introduction](/docs/introduction)

---

## Frequently asked questions

### How do I convert a DOCX file to PDF in n8n?

Add the EnConvert node, choose the **File** resource and the **Convert to PDF** operation, and point **Input Binary Field** at the field holding the file, which is `data` on most nodes. The PDF comes back as binary on the same item, ready to attach to an email or upload to storage. Word files carry their own page setup, so page size and margins do not apply to them and the node tells you which settings it skipped.

### How do I extract text from a Word document in n8n?

Use **File > Convert to Markdown** with Response Format set to Text. The text lands at `{{ $json.text }}`. n8n's built-in `Extract From File` node cannot do this, because it reads CSV, HTML, JSON, ICS, ODS, PDF text, RTF, TXT, XLS and XLSX but not `.doc`, `.docx` or `.pptx`.

### Can I use this node on n8n Cloud?

n8n Cloud only installs community nodes that have passed n8n's verification review. Until this node completes that review, install it on a self-hosted instance, or call the API directly from the HTTP Request node, which works on every plan. Cloud is exactly where the node earns its keep, since Cloud users cannot install system tools or npm packages to convert files locally.

### How do I scrape a web page into markdown in n8n?

Use **Web Page > Scrape** with Markdown selected under Outputs. The markdown arrives at `{{ $json.markdown }}`. Markdown is roughly six times smaller than the raw HTML of the same page, which cuts the token cost of every AI node downstream and gives the model far less boilerplate to get confused by.

### How do I take a screenshot of a website in n8n?

Use **Web Page > Scrape** and select Screenshot or Full-Page Screenshot under Outputs. The PNG arrives as n8n binary under `screenshot`, so you can upload it to Slack or attach it to an email straight away. Most scraping nodes return a link instead, which forces you to add an HTTP Request node to fetch the image before you can use it.

### How do I load a whole website into a vector store with n8n?

Use **Website > Crawl** with Output set to Chunks. The node returns one item per passage, each carrying `content`, `sourceUrl`, `title`, `headingsPath` and `chunkIndex`, which plugs straight into a Default Data Loader, an Embeddings node and a vector store such as Pinecone, Qdrant or Supabase. It replaces the usual pipeline of a sitemap crawl, a scraper, a Code node and a loop.

### Why does my conversion return a link instead of the file?

Response Format is set to URL Only. Switch it to File to receive n8n binary. The reverse is also useful: results above 16 MB cannot travel inside an n8n item on Cloud, so URL Only is the way to handle large files. Download links stay valid for 15 minutes.

### What happens if a crawl takes longer than the wait time?

The job keeps running on EnConvert. The node raises an error that contains the job ID, and **Job > Get** retrieves the finished result later. For long crawls, set a Webhook URL, turn Wait for Completion off, and let EnConvert call an n8n Webhook node when it finishes.

### Does the node work with the n8n AI Agent node?

Yes, every operation is exposed as an agent tool. The web operations fit an agent best, because an agent can pass a URL or a search query but cannot hand over a file. Scrape, Search, Extract and Map are the four that make an agent genuinely useful for research and lead generation.
