This workflow follows the Execute Workflow Trigger → HTTP Request 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 →
{
"name": "WF-11 discovery_tavily",
"nodes": [
{
"parameters": {
"workflowInputs": {
"values": [
{
"name": "query",
"type": "string"
},
{
"name": "trigger",
"type": "string"
}
]
}
},
"id": "trigger",
"name": "WF Input",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"typeVersion": 1.1,
"position": [
0,
0
]
},
{
"parameters": {
"method": "POST",
"url": "https://api.tavily.com/search",
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({ query: $json.query, search_depth: 'basic', max_results: 10 }) }}",
"options": {
"timeout": 10000
}
},
"id": "tavily",
"name": "Tavily search",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
200,
0
],
"credentials": {
"httpBearerAuth": {
"name": "<your credential>"
}
},
"retryOnFail": true,
"maxTries": 2,
"waitBetweenTries": 1000
},
{
"parameters": {
"mode": "runOnceForAllItems",
"jsCode": "const j = $input.first().json;\nif (j.error) throw new Error('Tavily search failed: ' + (typeof j.error === 'object' ? JSON.stringify(j.error) : j.error));\nconst results = j.results || [];\nconst urls = results.filter(r => r && r.url).map(r => ({ url: r.url, title: r.title || null, source: 'tavily', published_at: r.published_date || null }));\nreturn [{ json: { urls, trigger: $('WF Input').first().json.trigger || 'agent', query: $('WF Input').first().json.query || '', scope: 'tavily' } }];"
},
"id": "normalize",
"name": "Normalize",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
400,
0
]
},
{
"parameters": {
"workflowId": {
"__rl": true,
"value": "NXWu2wqU6ifrFIpd",
"mode": "id"
},
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {
"urls": "={{ $json.urls }}",
"trigger": "={{ $json.trigger }}",
"scope": "={{ $json.scope }}",
"query": "={{ $json.query }}"
},
"matchingColumns": [],
"schema": [
{
"id": "urls",
"displayName": "urls",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "array"
},
{
"id": "trigger",
"displayName": "trigger",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string"
},
{
"id": "scope",
"displayName": "scope",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string"
},
{
"id": "query",
"displayName": "query",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string"
}
]
},
"options": {
"waitForSubWorkflow": true
}
},
"id": "runwf20",
"name": "Run WF-20",
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.2,
"position": [
600,
0
]
}
],
"connections": {
"WF Input": {
"main": [
[
{
"node": "Tavily search",
"type": "main",
"index": 0
}
]
]
},
"Tavily search": {
"main": [
[
{
"node": "Normalize",
"type": "main",
"index": 0
}
]
]
},
"Normalize": {
"main": [
[
{
"node": "Run WF-20",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1",
"errorWorkflow": "PNJMA4NbQGmp1xKv"
}
}
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.
httpBearerAuth
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
WF-11 discovery_tavily. Uses executeWorkflowTrigger, httpRequest. Event-driven trigger; 4 nodes.
Source: https://github.com/killerwaz/research-overseer/blob/master/workflows/wf11-tavily.json — 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.
02_LLM_Pipeline v1.0. Uses executeWorkflowTrigger, httpRequest, seaTable. Event-driven trigger; 65 nodes.
This template is a powerful, reusable utility for managing stateful, long-running processes. It allows a main workflow to be paused indefinitely at "checkpoints" and then be resumed by external, async
Upload files from any source to your account Kommo or AmoCRM with a simple and reusable workflow. It can split a large file into small ones and upload chunks. Works for Kommo and amoCRM There are 3 re
Remixed Backup your workflows to GitHub from Solomon's work. Check out his templates.
Remixed Backup your workflows to GitHub from Solomon's work. Check out his templates.