AutomationFlowsWeb Scraping › Biotech M&a Intelligence Pipeline

Biotech M&a Intelligence Pipeline

Biotech M&A Intelligence Pipeline. Uses httpRequest. Scheduled trigger; 11 nodes.

Cron / scheduled trigger★★★★☆ complexity11 nodesHTTP Request
Web Scraping Trigger: Cron / scheduled Nodes: 11 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": "Biotech M&A Intelligence Pipeline",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 6
            }
          ]
        }
      },
      "id": "schedule-trigger",
      "name": "Every 6 Hours",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "url": "https://www.sec.gov/cgi-bin/browse-edgar?action=getcurrent&type=8-K&company=&dateb=&owner=include&count=40&output=atom",
        "options": {}
      },
      "id": "sec-8k-filings",
      "name": "SEC 8-K Filings",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        300,
        -200
      ]
    },
    {
      "parameters": {
        "url": "https://api.fda.gov/drug/drugsfda.json?search=submissions.submission_type:ORIG&limit=20&sort=submissions.submission_status_date:desc",
        "options": {}
      },
      "id": "fda-approvals",
      "name": "FDA Drug Approvals",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        300,
        0
      ]
    },
    {
      "parameters": {
        "url": "https://clinicaltrials.gov/api/v2/studies?filter.overallStatus=ACTIVE_NOT_RECRUITING&filter.phase=PHASE3&pageSize=50&sort=LastUpdatePostDate:desc",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        }
      },
      "id": "clinical-trials",
      "name": "Phase 3 Trials Near Completion",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        300,
        200
      ]
    },
    {
      "parameters": {
        "url": "https://newsapi.org/v2/everything?q=(biotech OR pharmaceutical) AND (acquisition OR merger OR M%26A OR buyout)&language=en&sortBy=publishedAt&pageSize=20",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "options": {}
      },
      "id": "biotech-news",
      "name": "Biotech M&A News",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        300,
        400
      ],
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "// Process and filter SEC filings for biotech/pharma M&A signals\nconst items = $input.all();\nconst biotechKeywords = ['acquisition', 'merger', 'agreement', 'tender offer', 'material definitive agreement', 'biotech', 'pharmaceutical', 'therapeutics'];\n\nconst filtered = [];\nfor (const item of items) {\n  const content = JSON.stringify(item.json).toLowerCase();\n  if (biotechKeywords.some(kw => content.includes(kw))) {\n    filtered.push(item);\n  }\n}\n\nreturn filtered.slice(0, 10);"
      },
      "id": "filter-sec",
      "name": "Filter SEC for M&A",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        550,
        -200
      ]
    },
    {
      "parameters": {
        "jsCode": "// Extract upcoming Phase 3 readouts\nconst items = $input.all();\nconst results = [];\n\nfor (const item of items) {\n  const studies = item.json.studies || [];\n  for (const study of studies) {\n    const protocol = study.protocolSection || {};\n    const id = protocol.identificationModule || {};\n    const status = protocol.statusModule || {};\n    const design = protocol.designModule || {};\n    const sponsor = protocol.sponsorCollaboratorsModule || {};\n    \n    results.push({\n      nctId: id.nctId,\n      title: id.briefTitle,\n      sponsor: sponsor.leadSponsor?.name,\n      phase: design.phases?.join(', '),\n      completionDate: status.primaryCompletionDateStruct?.date,\n      status: status.overallStatus,\n      conditions: protocol.conditionsModule?.conditions\n    });\n  }\n}\n\nreturn results.map(r => ({ json: r }));"
      },
      "id": "parse-trials",
      "name": "Parse Trial Data",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        550,
        200
      ]
    },
    {
      "parameters": {
        "mode": "combine",
        "mergeByFields": {
          "values": []
        },
        "options": {}
      },
      "id": "merge-all",
      "name": "Merge All Data",
      "type": "n8n-nodes-base.merge",
      "typeVersion": 3,
      "position": [
        800,
        100
      ]
    },
    {
      "parameters": {
        "jsCode": "// Build Discord embed message\nconst allData = $input.all();\n\nconst secFilings = allData.filter(i => i.json.source === 'sec').slice(0, 5);\nconst fdaNews = allData.filter(i => i.json.source === 'fda').slice(0, 5);\nconst trials = allData.filter(i => i.json.nctId).slice(0, 5);\nconst news = allData.filter(i => i.json.source === 'news').slice(0, 5);\n\nconst embed = {\n  embeds: [\n    {\n      title: '\ud83d\udcca Biotech Intelligence Update',\n      color: 3447003,\n      timestamp: new Date().toISOString(),\n      fields: []\n    }\n  ]\n};\n\nif (secFilings.length > 0) {\n  embed.embeds[0].fields.push({\n    name: '\ud83d\udcc4 SEC Filings (M&A Related)',\n    value: secFilings.map(f => `\u2022 ${f.json.title || 'Filing'}`).join('\\n').slice(0, 1024) || 'None',\n    inline: false\n  });\n}\n\nif (fdaNews.length > 0) {\n  embed.embeds[0].fields.push({\n    name: '\ud83d\udc8a FDA Updates',\n    value: fdaNews.map(f => `\u2022 ${f.json.openfda?.brand_name?.[0] || f.json.products?.[0]?.brand_name || 'Drug'}`).join('\\n').slice(0, 1024) || 'None',\n    inline: false\n  });\n}\n\nif (trials.length > 0) {\n  embed.embeds[0].fields.push({\n    name: '\ud83d\udd2c Upcoming Phase 3 Readouts',\n    value: trials.map(t => `\u2022 **${t.json.sponsor}**: ${t.json.title?.slice(0, 50)}... (${t.json.completionDate || 'TBD'})`).join('\\n').slice(0, 1024) || 'None',\n    inline: false\n  });\n}\n\nif (news.length > 0) {\n  embed.embeds[0].fields.push({\n    name: '\ud83d\udcf0 M&A News',\n    value: news.map(n => `\u2022 [${n.json.title?.slice(0, 60)}...](${n.json.url})`).join('\\n').slice(0, 1024) || 'None',\n    inline: false\n  });\n}\n\nreturn [{ json: embed }];"
      },
      "id": "build-discord-message",
      "name": "Build Discord Message",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1050,
        100
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "={{$env.DISCORD_WEBHOOK_URL}}",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ $json }}",
        "options": {}
      },
      "id": "discord-webhook",
      "name": "Send to Discord",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1300,
        100
      ]
    },
    {
      "parameters": {
        "url": "https://biopharmcatalyst.com/calendars/fda-calendar",
        "options": {}
      },
      "id": "fda-calendar",
      "name": "FDA Calendar (PDUFA Dates)",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        300,
        600
      ]
    }
  ],
  "connections": {
    "Every 6 Hours": {
      "main": [
        [
          {
            "node": "SEC 8-K Filings",
            "type": "main",
            "index": 0
          },
          {
            "node": "FDA Drug Approvals",
            "type": "main",
            "index": 0
          },
          {
            "node": "Phase 3 Trials Near Completion",
            "type": "main",
            "index": 0
          },
          {
            "node": "Biotech M&A News",
            "type": "main",
            "index": 0
          },
          {
            "node": "FDA Calendar (PDUFA Dates)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SEC 8-K Filings": {
      "main": [
        [
          {
            "node": "Filter SEC for M&A",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter SEC for M&A": {
      "main": [
        [
          {
            "node": "Merge All Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "FDA Drug Approvals": {
      "main": [
        [
          {
            "node": "Merge All Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Phase 3 Trials Near Completion": {
      "main": [
        [
          {
            "node": "Parse Trial Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Trial Data": {
      "main": [
        [
          {
            "node": "Merge All Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Biotech M&A News": {
      "main": [
        [
          {
            "node": "Merge All Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "FDA Calendar (PDUFA Dates)": {
      "main": [
        [
          {
            "node": "Merge All Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge All Data": {
      "main": [
        [
          {
            "node": "Build Discord Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Discord Message": {
      "main": [
        [
          {
            "node": "Send to Discord",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "staticData": null,
  "tags": [
    "biotech",
    "m&a",
    "discord"
  ],
  "triggerCount": 1
}

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.

Pro

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

About this workflow

Biotech M&A Intelligence Pipeline. Uses httpRequest. Scheduled trigger; 11 nodes.

Source: https://github.com/UMwai/biotech-ma-predictor/blob/b899614d0ed086ac36a6b47fb477f9405fe236cf/n8n/biotech_ma_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