<!-- BusyBot node reference — https://busybot.net/tools/jina-ai/ -->

> Node: Jina AI (`jina_ai`) · Action · v1
> Category: Utility · Credentials: Jina AI API (`jinaAiApi`)
> Updated: 2026-08-16

# Jina AI

> Extract web content, search the web, or perform deep research with Jina AI

## Overview

Jina AI provides AI-powered web content extraction, search, and deep research capabilities. The Reader API fetches content from any URL and converts it to clean, LLM-friendly formats (markdown, text, HTML, JSON). The Search API performs web searches and returns top results in clean formats. The Deep Research API performs in-depth research on a topic and generates a structured research report with citations. All APIs support output format customization and content filtering.

**Category:** Utility  
**Tool Name:** `jina_ai`  
**Version:** 1

**Appearance:** Icon: `lucide-Brain` | Color: `#FF6B35`

## Node Type

**Action** — processes input items and produces output

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **Jina AI API** credentials.
See the [Credentials Guide](https://busybot.net/credentials/jina-ai-api/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Reader | `reader` |
| Research | `research` |

### Operations

| Operation | Value | Description |
|-----------|-------|-------------|
| Read | `read` | Fetches content from a URL and converts it to clean, LLM-friendly formats |
| Search | `search` | Performs a web search via Jina AI and returns top results as clean, LLM-friendly formats |
| Deep Research | `deepResearch` | Research a topic and generate a structured research report |

`Read` and `Search` belong to the `reader` resource; `Deep Research` belongs to the `research` resource.

### Parameters

#### Reader: Read

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| URL | `string` | Yes | — | The URL to fetch content from. Supports expressions like {{ $json.link }}. |
| Simplify | `boolean` | No | `true` | Whether to return a simplified version of the response instead of the raw data. |
| Options | `collection` | No | `{}` | Optional settings that shape how the page is fetched and returned. Supports expressions inside its fields. |
| — Output Format | `options` | No | — | Specify desired output format. |
| | | | | Options: `markdown`, `text`, `html`, `screenshot`, or an empty value (the default) for JSON |
| — Target CSS Selector | `string` | No | — | CSS selector to focus on specific page elements. |
| — Exclude CSS Selector | `string` | No | — | CSS selector for elements to exclude. |
| — Enable Image Captioning | `boolean` | No | `false` | Whether to generate captions for images within the content. |
| — Wait for CSS Selector | `string` | No | — | Wait for a specific element to appear before extracting content (for dynamic pages). |

#### Reader: Search

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Search Query | `string` | Yes | — | The search query to perform. Supports expressions like {{ $json.query }}. |
| Simplify | `boolean` | No | `true` | Whether to return a simplified version of the response instead of the raw data. |
| Options | `collection` | No | `{}` | Optional settings that shape the search. Supports expressions inside its fields. |
| — Output Format | `options` | No | — | Specify desired output format. |
| | | | | Options: `markdown`, `text`, `html`, `screenshot`, or an empty value (the default) for JSON |
| — Site Filter | `string` | No | — | Restrict search to specific websites. |
| — Page Number | `number` | No | — | The page number of the search results to retrieve. |

#### Research: Deep Research

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Research Query | `string` | Yes | — | The topic or question for the AI to research. Supports expressions. |
| Simplify | `boolean` | No | `true` | Whether to return a simplified version of the response instead of the raw data. |
| Options | `collection` | No | `{}` | Optional settings that steer which sources the research draws on. Supports expressions inside its fields. |
| — Max Returned Sources | `number` | No | — | The maximum number of URLs to include in the final answer. |
| — Prioritize Sources | `string` | No | — | A comma-separated list of domains that are given higher priority for content retrieval. |
| — Exclude Sources | `string` | No | — | A comma-separated list of domains to be strictly excluded from content retrieval. |
| — Site Filter | `string` | No | — | Restrict search to specific websites (comma-separated). |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Max Concurrency | `number` | No | `5` | Maximum number of items to process concurrently. Lower values recommended due to API rate limits. |

## Output Data

The result is merged into the item JSON at the top level, so the incoming fields stay addressable alongside it, and binary data is forwarded. How many items come out, and what is on them, depends on the operation and on **Simplify**.

### Read

One output item per input item. With Simplify on, the Reader response's `data` object is merged — the page's extracted content in the format you asked for, together with the metadata Jina returns about the fetch. With Simplify off, the full envelope is merged instead, so the content sits one level down under `data` alongside the response's status fields.

### Search

**One output item per search result.** With Simplify on, the array of results is unpacked and each result is merged onto its own copy of the input item, so a query returning ten results produces ten items — no Split Out node needed. With Simplify off, the whole response is merged onto a single item and the results stay nested inside it as an array.

### Deep Research

One output item per input item. With Simplify on, the first choice of the research response is reduced to three properties:

```json
{
  "content": "…the research report…",
  "annotations": [],
  "usage": {}
}
```

- `content` — the generated report as text.
- `annotations` — the citations attached to the report, linking claims back to the sources used.
- `usage` — the token accounting Jina reports for the run.

With Simplify off, the raw chat-completions response is merged instead, so the report sits inside the `choices` array and `usage` stays at the top level.

Reference the result downstream by expression, e.g. `{{ $json.content }}`.

## Usage Examples

- Extract clean markdown content from a URL using Jina Reader
- Search the web for a topic and get LLM-friendly results
- Generate a deep research report on renewable energy
- Fetch a webpage as plain text with CSS selector targeting

## Example Configuration

Read a page as clean markdown, ignoring the chrome around the article:

```json
{
  "type": "jina_ai",
  "parameters": {
    "resource": "reader",
    "operation": "read",
    "url": "{{ $json.link }}",
    "simplify": true,
    "options": {
      "outputFormat": "markdown",
      "targetSelector": "#main-content .article",
      "excludeSelector": "header, footer, .ads"
    }
  }
}
```

Wait for a dynamic page to finish loading before extracting it:

```json
{
  "type": "jina_ai",
  "parameters": {
    "resource": "reader",
    "operation": "read",
    "url": "{{ $json.link }}",
    "options": {
      "waitForSelector": "#results-loaded",
      "enableImageCaptioning": true
    }
  }
}
```

Search the web and fan the results out one per item:

```json
{
  "type": "jina_ai",
  "parameters": {
    "resource": "reader",
    "operation": "search",
    "searchQuery": "{{ $json.topic }}",
    "simplify": true,
    "options": {
      "outputFormat": "markdown",
      "siteFilter": "jina.ai, github.com",
      "pageNumber": 1
    }
  }
}
```

Run a deep research report on a topic, steering it towards trusted domains:

```json
{
  "type": "jina_ai",
  "parameters": {
    "resource": "research",
    "operation": "deepResearch",
    "researchQuery": "{{ $json.question }}",
    "simplify": true,
    "options": {
      "maxReturnedSources": 5,
      "prioritizeSources": "nature.com, arxiv.org",
      "excludeSources": "example-spam.com"
    },
    "maxConcurrency": 1
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Extract web content, search, or perform deep research using Jina AI's Reader, Search, and DeepSearch APIs.

- **Search fans out, Read does not.** A simplified Search produces one item per result; Read and Deep Research always produce exactly one item per input item.
- **Leave Output Format empty for JSON.** The named formats (`markdown`, `text`, `html`, `screenshot`) ask Jina to return that representation instead.
- **CSS selectors cut the noise.** Target CSS Selector narrows extraction to the part of the page you want; Exclude CSS Selector strips navigation, footers and ad slots. Both accept several comma-separated selectors.
- **Wait for CSS Selector is for client-rendered pages.** Without it, a page that fills in after load can be read while still empty.
- **Domain lists are comma-separated.** Prioritize Sources, Exclude Sources and Site Filter each take a plain list of hostnames.
- **Deep Research is slow and expensive.** Keep Max Concurrency at 1 or 2 for research runs, and reserve larger values for Read.
- **Turn Simplify off when you need the envelope** — status fields for Read, the nested result array for Search, or the full choice objects for Deep Research.