Reference · Tools
Jina AI
Interact with Jina AI APIs for web reading, searching, and deep research
The Jina AI node reads web pages into clean text, searches the web, and runs deep research, using Jina's Reader, Search and DeepSearch APIs. CSS selectors let you keep the part of a page you want and drop the rest. A typical build is turning a list of article URLs into clean markdown ready for summarising.
- Node type
- Action
- Parameters
- 13
- Outputs
- Output, Error
- Credentials
- Jina AI API
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 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:
{
"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:
{
"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:
{
"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:
{
"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:
{
"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.
Frequently asked questions
Which operations fan out into multiple items?
Search does — a simplified Search produces one item per result. Read and Deep Research always produce exactly one item per input item.
How do I get JSON rather than a specific format?
Leave Output Format empty. Setting `markdown`, `text`, `html` or `screenshot` asks Jina to return that representation instead of the JSON structure.
How do I strip navigation and ads from a page?
Use Exclude CSS Selector to remove them, and Target CSS Selector to narrow extraction to the content you actually want. Both accept standard CSS selectors.
Which credential does it need?
A Jina AI API credential, shared across the Reader, Search and DeepSearch operations.
Build with the Jina AI node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Jina AI API credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.