AutomationFlowsWeb Scraping › Trendanalyzer — Master Workflow

Trendanalyzer — Master Workflow

TrendAnalyzer — Master Workflow. Uses httpRequest. Scheduled trigger; 14 nodes.

Cron / scheduled trigger★★★★☆ complexity14 nodesHTTP Request
Web Scraping Trigger: Cron / scheduled Nodes: 14 Complexity: ★★★★☆ Added:

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 →

Download .json
{
  "name": "TrendAnalyzer \u2014 Master Workflow",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes",
              "minutesInterval": 30
            }
          ]
        }
      },
      "id": "schedule",
      "name": "Every 30 Minutes",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.1,
      "position": [
        200,
        400
      ]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "https://www.reddit.com/r/CryptoMoonShots/top.json?limit=25&t=day",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "User-Agent",
              "value": "trend-analyzer/1.0"
            }
          ]
        },
        "options": {
          "timeout": 15000
        }
      },
      "id": "reddit-crypto",
      "name": "Fetch r/CryptoMoonShots",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.1,
      "position": [
        440,
        200
      ]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "https://www.reddit.com/r/wallstreetbets/top.json?limit=25&t=day",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "User-Agent",
              "value": "trend-analyzer/1.0"
            }
          ]
        },
        "options": {
          "timeout": 15000
        }
      },
      "id": "reddit-wsb",
      "name": "Fetch r/wallstreetbets",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.1,
      "position": [
        440,
        320
      ]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "https://www.reddit.com/r/Bitcoin/top.json?limit=25&t=day",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "User-Agent",
              "value": "trend-analyzer/1.0"
            }
          ]
        },
        "options": {
          "timeout": 15000
        }
      },
      "id": "reddit-btc",
      "name": "Fetch r/Bitcoin",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.1,
      "position": [
        440,
        440
      ]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "https://www.reddit.com/r/CryptoCurrency/top.json?limit=25&t=day",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "User-Agent",
              "value": "trend-analyzer/1.0"
            }
          ]
        },
        "options": {
          "timeout": 15000
        }
      },
      "id": "reddit-cc",
      "name": "Fetch r/CryptoCurrency",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.1,
      "position": [
        440,
        560
      ]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "https://api.coingecko.com/api/v3/coins/markets",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "vs_currency",
              "value": "usd"
            },
            {
              "name": "category",
              "value": "meme-token"
            },
            {
              "name": "order",
              "value": "market_cap_desc"
            },
            {
              "name": "per_page",
              "value": "30"
            },
            {
              "name": "page",
              "value": "1"
            },
            {
              "name": "price_change_percentage",
              "value": "24h,7d"
            }
          ]
        },
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "User-Agent",
              "value": "trend-analyzer/1.0"
            }
          ]
        },
        "options": {
          "timeout": 15000
        }
      },
      "id": "coingecko-meme",
      "name": "Fetch Memecoins",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.1,
      "position": [
        440,
        700
      ]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "https://api.coingecko.com/api/v3/coins/markets",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "vs_currency",
              "value": "usd"
            },
            {
              "name": "ids",
              "value": "bitcoin,ethereum,solana,dogecoin,shiba-inu,pepe,floki,bonk,algorand"
            },
            {
              "name": "order",
              "value": "market_cap_desc"
            },
            {
              "name": "per_page",
              "value": "20"
            },
            {
              "name": "price_change_percentage",
              "value": "24h,7d"
            }
          ]
        },
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "User-Agent",
              "value": "trend-analyzer/1.0"
            }
          ]
        },
        "options": {
          "timeout": 15000
        }
      },
      "id": "coingecko-major",
      "name": "Fetch Major Coins",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.1,
      "position": [
        440,
        840
      ]
    },
    {
      "parameters": {
        "jsCode": "const allPosts = [];\nconst seen = new Set();\nfor (const item of $input.all()) {\n  const data = item.json;\n  if (!data || !data.data || !data.data.children) continue;\n  for (const child of data.data.children) {\n    const d = child.data;\n    if (!d || d.stickied) continue;\n    if (seen.has(d.name)) continue;\n    seen.add(d.name);\n    const created = new Date(d.created_utc * 1000).toISOString().replace('T',' ').slice(0,19);\n    allPosts.push({\n      id: d.name, subreddit: d.subreddit, title: d.title,\n      content: (d.selftext || '').slice(0,1000),\n      score: parseInt(d.score) || 0,\n      num_comments: parseInt(d.num_comments) || 0,\n      url: d.url || '', author: d.author || '', created_at: created\n    });\n  }\n}\nconsole.log('[Reddit] ' + allPosts.length + ' posts');\nreturn [{ json: { type: 'posts', data: allPosts, count: allPosts.length } }];"
      },
      "id": "transform-posts",
      "name": "Transform Posts",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        680,
        380
      ]
    },
    {
      "parameters": {
        "jsCode": "const allCoins = [];\nconst seen = new Set();\nfor (const item of $input.all()) {\n  const coins = Array.isArray(item.json) ? item.json : [];\n  for (const coin of coins) {\n    if (!coin.id || seen.has(coin.id) || (parseFloat(coin.current_price)||0) <= 0) continue;\n    seen.add(coin.id);\n    allCoins.push({\n      coin_id: coin.id, coin_name: coin.name,\n      coin_symbol: (coin.symbol||'').toUpperCase(),\n      price_usd: parseFloat(coin.current_price)||0,\n      price_change_24h: parseFloat(coin.price_change_percentage_24h)||0,\n      price_change_7d: parseFloat(coin.price_change_percentage_7d_in_currency)||0,\n      volume_24h: parseFloat(coin.total_volume)||0,\n      market_cap: parseFloat(coin.market_cap)||0\n    });\n  }\n}\nconsole.log('[CoinGecko] ' + allCoins.length + ' coins');\nreturn [{ json: { type: 'prices', data: allCoins, count: allCoins.length } }];"
      },
      "id": "transform-prices",
      "name": "Transform Prices",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        680,
        770
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "http://localhost:3001/webhook/n8n",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify($json) }}",
        "options": {
          "timeout": 30000
        }
      },
      "id": "send-posts",
      "name": "Send Posts to Backend",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.1,
      "position": [
        900,
        380
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "http://localhost:3001/webhook/n8n",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify($json) }}",
        "options": {
          "timeout": 30000
        }
      },
      "id": "send-prices",
      "name": "Send Prices to Backend",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.1,
      "position": [
        900,
        770
      ]
    },
    {
      "parameters": {
        "jsCode": "// Wait for both posts and prices to be sent, then trigger full pipeline\nconsole.log('[Master] Data ingestion complete. Triggering pipeline...');\nreturn [{ json: { status: 'ready' } }];"
      },
      "id": "wait-node",
      "name": "Data Ready",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1100,
        580
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "http://localhost:3001/api/trigger",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "{}",
        "options": {
          "timeout": 180000
        }
      },
      "id": "run-pipeline",
      "name": "Run AI Pipeline",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.1,
      "position": [
        1300,
        580
      ]
    },
    {
      "parameters": {
        "jsCode": "console.log('[Master] Full cycle complete. Dashboard updated.');\nreturn $input.all();"
      },
      "id": "done",
      "name": "Done",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1500,
        580
      ]
    }
  ],
  "connections": {
    "Every 30 Minutes": {
      "main": [
        [
          {
            "node": "Fetch r/CryptoMoonShots",
            "type": "main",
            "index": 0
          },
          {
            "node": "Fetch r/wallstreetbets",
            "type": "main",
            "index": 0
          },
          {
            "node": "Fetch r/Bitcoin",
            "type": "main",
            "index": 0
          },
          {
            "node": "Fetch r/CryptoCurrency",
            "type": "main",
            "index": 0
          },
          {
            "node": "Fetch Memecoins",
            "type": "main",
            "index": 0
          },
          {
            "node": "Fetch Major Coins",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch r/CryptoMoonShots": {
      "main": [
        [
          {
            "node": "Transform Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch r/wallstreetbets": {
      "main": [
        [
          {
            "node": "Transform Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch r/Bitcoin": {
      "main": [
        [
          {
            "node": "Transform Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch r/CryptoCurrency": {
      "main": [
        [
          {
            "node": "Transform Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Memecoins": {
      "main": [
        [
          {
            "node": "Transform Prices",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Major Coins": {
      "main": [
        [
          {
            "node": "Transform Prices",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transform Posts": {
      "main": [
        [
          {
            "node": "Send Posts to Backend",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transform Prices": {
      "main": [
        [
          {
            "node": "Send Prices to Backend",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Posts to Backend": {
      "main": [
        [
          {
            "node": "Data Ready",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Prices to Backend": {
      "main": [
        [
          {
            "node": "Data Ready",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Data Ready": {
      "main": [
        [
          {
            "node": "Run AI Pipeline",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Run AI Pipeline": {
      "main": [
        [
          {
            "node": "Done",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1",
    "saveManualExecutions": true
  },
  "tags": [
    "trend-analyzer"
  ]
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

TrendAnalyzer — Master Workflow. Uses httpRequest. Scheduled trigger; 14 nodes.

Source: https://github.com/kabbersokhi-boop/crypto-trend-hunter/blob/c48ae2127eb4950ee6b13c514bc89317d98e37dc/n8n/master_workflow.json — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

Birthday Automation - Production (Fixed). Uses stopAndError, httpRequest, emailSend, bannerbear. Scheduled trigger; 86 nodes.

Stop And Error, HTTP Request, Email Send +1
Web Scraping

This template runs two scheduled workflows to govern Microsoft Entra ID (Azure AD) guest accounts by detecting stale users via Microsoft Graph, staging deletions in SharePoint with a 72-hour window, n

Microsoft SharePoint, Microsoft Teams, Microsoft Entra +1
Web Scraping

Jira-Allure-Auto-Qa. Uses httpRequest, jira. Scheduled trigger; 68 nodes.

HTTP Request, Jira
Web Scraping

Spotify-Sync-Surrealdb-V1. Uses httpRequest, n8n-nodes-surrealdb, spotify. Scheduled trigger; 62 nodes.

HTTP Request, N8N Nodes Surrealdb, Spotify
Web Scraping

As n8n instances scale, teams often lose track of sub-workflows—who uses them, where they are referenced, and whether they can be safely updated. This leads to inefficiencies like unnecessary copies o

HTTP Request, n8n, N8N Trigger +1