This workflow follows the Chainllm → Chat Trigger recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "QqbYH25we4JDZrZD",
"name": "\ud83d\udd0d\ud83d\udee0\ufe0f Tavily Search & Extract - Template",
"tags": [],
"nodes": [
{
"id": "e029204b-2e05-4262-b464-7c1b3a995f91",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-780,
-940
],
"parameters": {
"color": 4,
"width": 520,
"height": 940,
"content": "## Tavily API Search Endpoint\n\n**Base URL**: `https://api.tavily.com/search`\n**Method**: POST\n\n### Required Parameters\n- `query`: The search query string\n- `api_key`: Your Tavily API key\n\n### Optional Parameters\n- `search_depth`: \"basic\" or \"advanced\" (default: \"basic\")\n- `topic`: \"general\" or \"news\" (default: \"general\") \n- `max_results`: Maximum number of results to return (default: 5)\n- `include_images`: Include query-related images (default: false)\n- `include_answer`: Include AI-generated answer (default: false)\n- `include_raw_content`: Include parsed HTML content (default: false)\n- `include_domains`: List of domains to include\n- `exclude_domains`: List of domains to exclude\n- `time_range`: Filter by time range (\"day\", \"week\", \"month\", \"year\")\n- `days`: Number of days back for news results (default: 3)\n\n### Example Request\n```json\n{\n \"api_key\": \"tvly-YOUR_API_KEY\",\n \"query\": \"Who is Leo Messi?\",\n \"search_depth\": \"basic\",\n \"include_answer\": false,\n \"include_images\": true,\n \"max_results\": 5\n}\n```\n"
},
"typeVersion": 1
},
{
"id": "6c47edec-6c6e-460d-b098-f9a26caa5f8e",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-220,
-940
],
"parameters": {
"color": 6,
"width": 640,
"height": 720,
"content": "## Tavily API Extract Endpoint \n\n**Base URL**: `https://api.tavily.com/extract`\n**Method**: POST\n\n### Required Parameters\n- `urls`: Single URL string or array of URLs\n- `api_key`: Your Tavily API key\n\n### Optional Parameters\n- `include_images`: Include extracted images (default: false)\n\n### Example Request\n```json\n{\n \"api_key\": \"tvly-YOUR_API_KEY\", \n \"urls\": [\n \"https://en.wikipedia.org/wiki/Artificial_intelligence\",\n \"https://en.wikipedia.org/wiki/Machine_learning\"\n ]\n}\n```"
},
"typeVersion": 1
},
{
"id": "cacae1d1-c9ec-4c2f-ba5d-f782257697cc",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1240,
-940
],
"parameters": {
"color": 3,
"width": 420,
"height": 540,
"content": "## Tavily API Documentation\n\nThe Tavily REST API provides seamless access to Tavily Search, a powerful search engine for LLM agents, and Tavily Extract, an advanced web scraping solution optimized for LLMs.\n\nhttps://docs.tavily.com/docs/rest-api/examples\n\nhttps://docs.tavily.com/docs/rest-api/api-reference#parameters\n\nThe Tavily API provides two main endpoints for search and data extraction.\n\nThe API returns JSON responses containing:\n\n- Search results with titles, URLs, and content\n- Extracted raw content from specified URLs\n- Response time metrics\n- Any error messages for failed requests\n\n\n**Note**: Error handling should check for failed results in the response before processing.\n"
},
"typeVersion": 1
},
{
"id": "16e977f4-e72d-474c-a04b-3f3ad51cc322",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1240,
-360
],
"parameters": {
"width": 420,
"height": 360,
"content": "## Tavily Use Cases\n\n\ud83d\udcdc Why Use Tavily API for Data Enrichment?\n\nhttps://docs.tavily.com/docs/use-cases/data-enrichment\n\n\ud83d\udca1 Why Use Tavily API for Company Research?\n\nhttps://docs.tavily.com/docs/use-cases/company-research\n\n\ud83d\udd0d GPT Researcher\n\nhttps://docs.tavily.com/docs/gpt-researcher/introduction"
},
"typeVersion": 1
},
{
"id": "7e4d0b3c-761d-42b9-bbbe-6ceb366fdc6f",
"name": "Tavily Search",
"type": "n8n-nodes-base.httpRequest",
"position": [
-580,
-180
],
"parameters": {
"url": "https://api.tavily.com/search",
"body": "={\n \"api_key\": \"tvly-YOUR_API_KEY\",\n \"query\": \"What is n8n?\",\n \"search_depth\": \"basic\",\n \"include_answer\": false,\n \"include_images\": true,\n \"include_image_descriptions\": true,\n \"include_raw_content\": false,\n \"max_results\": 5,\n \"include_domains\": [],\n \"exclude_domains\": []\n}",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "raw",
"rawContentType": "application/json"
},
"typeVersion": 4.2
},
{
"id": "47c0bfcf-a187-4b15-b208-2458c934d5f7",
"name": "Tavily Extract",
"type": "n8n-nodes-base.httpRequest",
"position": [
40,
-400
],
"parameters": {
"url": "https://api.tavily.com/extract",
"body": "={\n \"api_key\": \"tvly-YOUR_API_KEY\",\n \"urls\": [\n \"https://en.wikipedia.org/wiki/Artificial_intelligence\"\n ]\n}",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "raw",
"rawContentType": "application/json"
},
"typeVersion": 4.2
},
{
"id": "47791d39-087b-4104-aa0d-ef98deee945c",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1940,
-1020
],
"parameters": {
"color": 7,
"width": 660,
"height": 1020,
"content": "## Tavily API Overview\nhttps://docs.tavily.com/docs/welcome\n\nThe Tavily API provides a specialized search engine built specifically for AI agents and LLM applications, offering two main endpoints:\n\n## Search Endpoint\n\nThe search endpoint enables intelligent web searching with:\n\n**Key Features**\n- Query-based search with customizable depth (\"basic\" or \"advanced\")\n- Topic filtering for general or news content\n- Control over result quantity and content type\n- Domain inclusion/exclusion capabilities\n- Time range filtering and news date restrictions\n\n## Extract Endpoint\n\nThe extract endpoint focuses on content retrieval:\n\n**Key Features**\n- Single or batch URL processing\n- Raw content extraction\n- Optional image extraction\n- Structured response format\n\n## Implementation Benefits\n\n**For AI Integration**\n- Optimized for RAG (Retrieval Augmented Generation)\n- Single API call handles searching, scraping and filtering\n- Customizable response formats\n- Built-in content relevance scoring\n\n**Technical Advantages**\n- JSON response format\n- Error handling for failed requests\n- Response time metrics\n- Flexible content filtering options\n\n\nThis API is designed to simplify the integration of real-time web data into AI applications while ensuring high-quality, relevant results through intelligent processing and filtering."
},
"typeVersion": 1
},
{
"id": "76b291bc-8c34-44f1-b366-09c9f51089e2",
"name": "Get Top Result",
"type": "n8n-nodes-base.set",
"position": [
-700,
140
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "a73e848c-f7e7-4b3a-ae99-930c577b47be",
"name": "results",
"type": "object",
"value": "={{ $json.results.first() }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "4b098e57-eff2-4e70-9429-23b5c3d936c2",
"name": "Tavily Extract Top Search",
"type": "n8n-nodes-base.httpRequest",
"position": [
-480,
140
],
"parameters": {
"url": "https://api.tavily.com/extract",
"body": "={\n \"api_key\": \"{{ $('Tavily API Key').item.json.api_key }}\",\n \"urls\": [\n \"{{ $json.results.url }}\"\n ]\n}",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "raw",
"rawContentType": "application/json"
},
"typeVersion": 4.2
},
{
"id": "f593e164-1c9d-46e6-a619-39fe621c829f",
"name": "Filter > 90%",
"type": "n8n-nodes-base.set",
"position": [
-920,
140
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "8fd0cfc4-7adc-45f9-a278-d217e362ebfb",
"name": "results",
"type": "array",
"value": "={{ $json.results.filter(item => item.score > 0.80) }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "fadd100c-0335-42c2-9c3d-48e6d17eb2f9",
"name": "Tavily Search Topic",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1140,
140
],
"parameters": {
"url": "https://api.tavily.com/search",
"body": "={\n \"api_key\": \"{{ $json.api_key }}\",\n \"query\": \"{{ $('Provide search topic via Chat window').item.json.chatInput }}\",\n \"search_depth\": \"basic\",\n \"include_answer\": false,\n \"include_images\": true,\n \"include_image_descriptions\": true,\n \"include_raw_content\": false,\n \"max_results\": 5,\n \"include_domains\": [],\n \"exclude_domains\": []\n}",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "raw",
"rawContentType": "application/json"
},
"typeVersion": 4.2
},
{
"id": "1bc5a21f-0f96-4951-9c88-0bec00b9c586",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-240,
300
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.1
},
{
"id": "994bb3ee-598b-4d3f-bcfc-16c9cca36657",
"name": "Summarize Web Page Content",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
-260,
140
],
"parameters": {
"text": "=Summarize this web content and provide in Markdown format: {{ $json.results[0].raw_content }}",
"promptType": "define"
},
"typeVersion": 1.5
},
{
"id": "d5520da7-f6bc-470e-ab96-e04097041f08",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1680,
40
],
"parameters": {
"color": 5,
"width": 1800,
"height": 400,
"content": "## Tavily Search and Extract with AI Summarization Example"
},
"typeVersion": 1
},
{
"id": "9bd6c18e-aabf-4719-b9c4-ac91b36891a1",
"name": "Tavily API Key",
"type": "n8n-nodes-base.set",
"position": [
-1360,
140
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "035660a9-bb58-4ecb-bad3-7f4d017fa69f",
"name": "api_key",
"type": "string",
"value": "tvly-YOUR_API_KEY"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "41f36ad7-7a2b-4732-89ec-fe6500768631",
"name": "Provide search topic via Chat window",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
-1580,
140
],
"parameters": {
"options": {}
},
"typeVersion": 1.1
},
{
"id": "0213756a-35c4-46a8-9b79-2e8a81852177",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1420,
320
],
"parameters": {
"color": 7,
"height": 80,
"content": "### Tavily API Key\nhttps://app.tavily.com/home"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "e1f22fbb-9663-405c-b7b1-7e8b2d54ad0f",
"connections": {
"Filter > 90%": {
"main": [
[
{
"node": "Get Top Result",
"type": "main",
"index": 0
}
]
]
},
"Get Top Result": {
"main": [
[
{
"node": "Tavily Extract Top Search",
"type": "main",
"index": 0
}
]
]
},
"Tavily API Key": {
"main": [
[
{
"node": "Tavily Search Topic",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Summarize Web Page Content",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Tavily Search Topic": {
"main": [
[
{
"node": "Filter > 90%",
"type": "main",
"index": 0
}
]
]
},
"Tavily Extract Top Search": {
"main": [
[
{
"node": "Summarize Web Page Content",
"type": "main",
"index": 0
}
]
]
},
"Provide search topic via Chat window": {
"main": [
[
{
"node": "Tavily API Key",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
openAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
This workflow enables you to quickly search the web for information and extract key details from the top results, saving hours of manual browsing and summarisation. It's ideal for researchers, content creators, or anyone needing reliable, up-to-date insights without sifting through irrelevant pages. The core step involves querying Tavily's search API via HTTP Request, followed by extraction using another HTTP Request to pull structured data, all refined through OpenAI's lmChatOpenAi for precise responses in a chat interface.
Use this when you require automated, AI-enhanced web searches for specific queries, such as fact-checking or gathering sources for reports, especially in dynamic fields like news or tech. Avoid it for highly specialised or paywalled content where Tavily's access might be limited, or if you need real-time processing beyond chat triggers. Common variations include swapping OpenAI for another LLM provider or adding filters in the chainLlm node to focus on particular result types like images or videos.
About this workflow
🔍🛠️ Tavily Search & Extract - Template. Uses stickyNote, httpRequest, lmChatOpenAi, chainLlm. Chat trigger; 17 nodes.
Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Testing Mulitple Local LLM with LM Studio. Uses stickyNote, httpRequest, chatTrigger, dateTime. Chat trigger; 21 nodes.
Testing Mulitple Local LLM with LM Studio. Uses stickyNote, httpRequest, chatTrigger, dateTime. Chat trigger; 21 nodes.
Blog Automation TEMPLATE. Uses scheduleTrigger, manualTrigger, googleSheets, lmChatOpenAi. Scheduled trigger; 35 nodes.
Blog Automation TEMPLATE. Uses scheduleTrigger, manualTrigger, googleSheets, lmChatOpenAi. Scheduled trigger; 35 nodes.
YouTube Video Analyzer with AI. Uses manualTrigger, lmChatOpenAi, lmChatOpenRouter, lmChatDeepSeek. Event-driven trigger; 21 nodes.