This workflow corresponds to n8n.io template #4509 — we link there as the canonical source.
This workflow follows the Gmail → 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": "Firecrawl Extract - Quiver Q",
"tags": [],
"nodes": [
{
"id": "8e802c42-d8eb-4d3b-8a08-955d9bd98183",
"name": "Extract",
"type": "n8n-nodes-base.httpRequest",
"position": [
920,
180
],
"parameters": {
"url": "https://api.firecrawl.dev/v1/extract",
"method": "POST",
"options": {},
"jsonBody": "={\n \"urls\": [\n \"https://www.quiverquant.com/congresstrading/*\"\n ],\n \"prompt\": \"Extract all notable congress member trades over $50,000 USD in the past 1 month. Include the Congress Member's name, party, the Stock/Asset purchased or sold, the Amount of the transaction, and the date of the transaction.\",\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"notable_trades\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"congress_member_name\": {\n \"type\": \"string\"\n },\n \"party\": {\n \"type\": \"string\"\n },\n \"stock_or_asset\": {\n \"type\": \"string\"\n },\n \"amount\": {\n \"type\": \"number\"\n },\n \"transaction_date\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"congress_member_name\",\n \"stock_or_asset\",\n \"amount\",\n \"transaction_date\"\n ]\n }\n }\n },\n \"required\": [\n \"notable_trades\"\n ]\n }\n}\n",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth"
},
"typeVersion": 4.2
},
{
"id": "b884be94-630a-4166-a54a-439e581a648d",
"name": "Get Results",
"type": "n8n-nodes-base.httpRequest",
"position": [
1360,
180
],
"parameters": {
"url": "=https://api.firecrawl.dev/v1/extract/{{ $('Extract').item.json.id }}",
"options": {},
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth"
},
"typeVersion": 4.2
},
{
"id": "d7aba1ee-8717-4e0f-ba54-1f26ade821e1",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"position": [
2140,
200
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "4188c94f-170b-4f42-8197-675f171bc1a5",
"name": "data",
"type": "string",
"value": "={{ $json.trades }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "c5217853-831b-4ab5-90d7-a751ebf98753",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
680,
180
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 18
}
]
}
},
"typeVersion": 1.2
},
{
"id": "9e450a55-74cf-477d-b8ef-942daea48001",
"name": "Gmail",
"type": "n8n-nodes-base.gmail",
"position": [
2620,
200
],
"parameters": {
"sendTo": "user@example.com",
"message": "={{ $json.message.content }}",
"options": {},
"subject": "Congress Trade Updates - QQ",
"emailType": "text"
},
"typeVersion": 2.1
},
{
"id": "6295f6ed-b3e3-46d6-a9c4-ce31b8eea48f",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
1880,
180
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "6d815b2e-1717-4d52-a30d-74e17a84f0f3",
"operator": {
"type": "array",
"operation": "empty",
"singleValue": true
},
"leftValue": "={{ $json.trades }}",
"rightValue": "[empty array]"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "cf5c2e53-6b56-4c32-be67-fda8be7d87de",
"name": "Wait 15 secs",
"type": "n8n-nodes-base.wait",
"position": [
2000,
440
],
"parameters": {
"amount": 15
},
"typeVersion": 1.1
},
{
"id": "437f84fd-0af8-44ab-b6d0-d2b0b87511e6",
"name": "Code",
"type": "n8n-nodes-base.code",
"position": [
1600,
180
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "let trades = $json.data;\nif (!Array.isArray(trades)) {\n trades = trades ? [trades] : [];\n}\nreturn { trades };"
},
"typeVersion": 2
},
{
"id": "785fbb44-4d0f-4d3b-9263-b8411e04c71d",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
1540,
100
],
"parameters": {
"color": 6,
"height": 280,
"content": "Converting to Array"
},
"typeVersion": 1
},
{
"id": "3f977a3a-b622-4147-8101-cff0c7882baa",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1280,
100
],
"parameters": {
"height": 280,
"content": "Get Request to Firecrawl"
},
"typeVersion": 1
},
{
"id": "0a0a69cd-5729-4335-b831-c91a91d69930",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
840,
100
],
"parameters": {
"color": 2,
"height": 280,
"content": "Post Request to Firecrawl"
},
"typeVersion": 1
},
{
"id": "76bb6c47-ead1-47a8-a1c2-67dc208dbe0e",
"name": "Wait 30 Secs",
"type": "n8n-nodes-base.wait",
"position": [
1140,
180
],
"parameters": {
"amount": 30
},
"typeVersion": 1.1
},
{
"id": "552499e5-43bc-4751-b866-0c02ba3c6254",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
620,
100
],
"parameters": {
"color": 6,
"width": 200,
"height": 280,
"content": "Scheduled Trigger"
},
"typeVersion": 1
},
{
"id": "d20f4369-b200-4a56-b8b5-f74fcc42c8b8",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1800,
100
],
"parameters": {
"color": 3,
"height": 280,
"content": "Conditional check if crawl has completed"
},
"typeVersion": 1
},
{
"id": "0d924e04-cd64-41ef-b7a8-983c51763f16",
"name": "OpenAI",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
2300,
200
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "chatgpt-4o-latest",
"cachedResultName": "CHATGPT-4O-LATEST"
},
"options": {},
"messages": {
"values": [
{
"content": "={{ $json.data }}"
},
{
"role": "system",
"content": "You are a helpful text editing assistant. You will receive a blob of text as data (they are congressional trading/transaction data). Your job is to format them into an easily readable format where it shows the category of Transaction Date, the Stock/Asset Purchase Amount, The Name of the Stock, the Name of the Purchaser and his/her party."
}
]
}
},
"typeVersion": 1.8
},
{
"id": "e648e538-d0ff-4071-a83a-412e7c9df544",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
2060,
100
],
"parameters": {
"color": 4,
"width": 700,
"height": 280,
"content": "Formatting + Email Send"
},
"typeVersion": 1
},
{
"id": "c2923e32-af61-49c3-a6b3-c0c2129e722d",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1280,
400
],
"parameters": {
"color": 4,
"width": 940,
"height": 280,
"content": "Result not ready - loop to wait for result"
},
"typeVersion": 1
},
{
"id": "8dc535a1-4622-45c0-8324-bb135fd025f9",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1100,
100
],
"parameters": {
"width": 160,
"height": 280,
"content": "Wait for result"
},
"typeVersion": 1
},
{
"id": "a986bbeb-8a8c-4236-8085-2021b0d80813",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
-80
],
"parameters": {
"width": 600,
"height": 1300,
"content": "\ud83d\udd27 How It Works\n\ud83d\udd52 Schedule Trigger\nFires daily at a set hour (e.g., 6 PM) to begin the data pipeline.\n\n\ud83d\udd25 Firecrawl Extract API (POST)\nTargets the Quiver Quantitative \u201cCongress Trading\u201d page and sends a structured prompt asking for all trades over $50K in the past month.\n\n\u23f3 Wait Node\nAllows time for Firecrawl to finish processing before retrieving results.\n\n\ud83d\udce5 Firecrawl Get Result API (GET)\nRetrieves the extracted and structured data.\n\n\ud83e\udde0 OpenAI Chat Model (GPT-4o)\nFormats the raw trading data into a readable summary that includes:\n\nDate of Transaction\n\nStock/Asset traded\n\nAmount\n\nCongress member\u2019s name and political party\n\n\ud83d\udce7 Gmail Node\nSends the summary to your inbox with the subject \u201cCongress Trade Updates - QQ\u201d.\n\nWatch Full Set Up Tutorial here: https://www.youtube.com/@Automatewithmarc\n\n\ud83e\udde0 Why This is Useful\nCongressional trading activity often reveals valuable signals \u2014 especially when high-value trades are made.\nThis workflow:\n\nSaves time manually tracking Quiver Quant updates\n\nConverts complex tables into a daily, readable email\n\nKeeps investors, researchers, and newsrooms in the loop \u2014 hands-free\n\n\ud83d\udee0 Requirements\nFirecrawl API Key (with extract access)\n\nOpenAI API Key\n\nGmail OAuth2 credentials\n\nn8n (self-hosted or cloud)\n\n\ud83d\udcac Sample Output:\nCongress Trade Summary \u2013 May 21\n\nNancy Pelosi (D) sold TSLA for $85,000 on April 28\n\nJohn Raynor (R) purchased AAPL worth $120,000 on May 2\n... and more\n\n\ud83e\ude9c Setup Steps\nAdd your Firecrawl, OpenAI, and Gmail credentials in n8n.\n\nAdjust the schedule node to your desired time.\n\nCustomize the OpenAI system prompt if you want a different summary style.\n\nDeploy the workflow \u2014 and enjoy your daily edge.\n\n"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"connections": {
"If": {
"main": [
[
{
"node": "Wait 15 secs",
"type": "main",
"index": 0
}
],
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Code": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"OpenAI": {
"main": [
[
{
"node": "Gmail",
"type": "main",
"index": 0
}
]
]
},
"Extract": {
"main": [
[
{
"node": "Wait 30 Secs",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "OpenAI",
"type": "main",
"index": 0
}
]
]
},
"Get Results": {
"main": [
[
{
"node": "Code",
"type": "main",
"index": 0
}
]
]
},
"Wait 15 secs": {
"main": [
[
{
"node": "Get Results",
"type": "main",
"index": 0
}
]
]
},
"Wait 30 Secs": {
"main": [
[
{
"node": "Get Results",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Extract",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
📬 What This Workflow Does This workflow automatically scrapes recent high-value congressional stock trades from Quiver Quantitative, summarizes the key transactions, and delivers a neatly formatted report to your inbox — every single day.
Source: https://n8n.io/workflows/4509/ — 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.
Manually checking websites for updates or competitor changes can be tedious. This workflow automates the process by scraping target pages, capturing screenshots, and analyzing content changes using Fi
🔥 Daily Web Scraper & AI Summary with Firecrawl + Email Automation Need to extract and summarize web content from a site that doesn’t have an API? This workflow runs daily to scrape a web page using F
Schedule Trigger runs every 6 hours (customizable) Apify Scraper fetches Upwork jobs matching your criteria Deduplication filters out jobs you've already seen AI Scoring (GPT-4) evaluates fit, client
This n8n workflow automates the process of collecting job and decision-maker data, crafting AI-generated referral messages, and drafting them in Gmail—all using a combination of Apify, Google Sheets,
This workflow creates an end-to-end Instagram content pipeline that automatically discovers trending content from competitor channels, extracts valuable insights, and generates new high-quality script