Automatisation du scraping de prospects Apollo et de l'enrichissement par e-mail vers Airtable CRM avec Apify
Ceci est unContent Creation, Multimodal AIworkflow d'automatisation du domainecontenant 18 nœuds.Utilise principalement des nœuds comme If, Set, Filter, Airtable, HttpRequest. Utiliser Apify pour automatiser l'extraction de prospects Apollo et l'enrichissement e-mail vers le CRM Airtable
- •Clé API Airtable
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
Nœuds utilisés (18)
Catégorie
{
"meta": {
"instanceId": "3d7eb9567ae690bf8c9bba1cb43396e6e40c18e15eb5889cf9673ed1713da6db",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "04b2ce2b-b253-4b8d-a525-7db0fab14c14",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
2192,
368
],
"parameters": {
"color": 4,
"width": 800,
"height": 1152,
"content": "# Apollo Lead Scraper to Airtable CRM\n\n## 📋 What This Template Does\nThis workflow scrapes leads from Apollo.io search URLs via Apify, enriches with emails and LinkedIn data, removes duplicates, and syncs to Airtable—separating contacts with/without emails for streamlined CRM outreach.\n\n## 🔧 Prerequisites\n- n8n instance (cloud or self-hosted)\n- Apollo.io account with search URLs\n- Airtable base with \"URLs\" table (for input) and two contact tables (\"with Email\" and \"without Email\")\n\n## 🔑 Required Credentials\n\n### Airtable OAuth2 API Setup\n1. Go to Airtable Builder Hub > OAuth integrations\n2. Register new integration, paste n8n redirect URL\n3. Copy Client ID/Secret to n8n credential\n4. Select scopes: data.records:read, data.records:write, schema.bases:read\n5. Connect account and grant base access\n\n### Apify API Setup\n1. Log in to Apify Console > Settings > Integrations\n2. Copy API token\n3. Add to n8n as Apify API credential\n\n## ⚙️ Configuration Steps\n1. Import workflow JSON into n8n\n2. Assign credentials to nodes\n3. Set Airtable base/tables in \"Get URL\" and create nodes\n4. Add Apollo search URL to \"URLs\" table\n5. Activate workflow\n\n## 🎯 Use Cases\n- Enrich sales pipelines with B2B leads for targeted emails\n- Automate agency prospecting from Apollo filters\n- Source tech job candidates via title/location searches\n- Build educational datasets for marketing analysis\n\n## ⚠️ Troubleshooting\n- No leads: Validate Apollo URL (must be people search); check Apify logs\n- Airtable errors: Re-grant scopes; test node output solo\n- Duplicates: Adjust \"Remove Duplicates\" keys (e.g., email+name)\n- Timeout: Reduce totalRecords to 500; monitor Apify memory"
},
"typeVersion": 1
},
{
"id": "2c866dd8-9c17-4205-9b00-cfb2bdcc78cb",
"name": "Supprimer les doublons",
"type": "n8n-nodes-base.removeDuplicates",
"position": [
3856,
880
],
"parameters": {
"options": {}
},
"typeVersion": 2
},
{
"id": "9881dcf9-3eea-4cad-a028-3a5e65b79973",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"position": [
3648,
880
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "cec86722-ebb6-4e66-8076-3078d19314c5",
"name": "first_name",
"type": "string",
"value": "={{ $json.first_name }}"
},
{
"id": "289d1412-0129-4e14-ac2a-caf3e20807fc",
"name": "last_name",
"type": "string",
"value": "={{ $json.last_name }}"
},
{
"id": "7bb8e1ba-7bf7-4ecc-858a-6f0048bc3fd5",
"name": "name",
"type": "string",
"value": "={{ $json.name }}"
},
{
"id": "d1bf4ca9-d621-475b-8511-484b48c0a219",
"name": "linkedin_url",
"type": "string",
"value": "={{ $json.linkedin_url }}"
},
{
"id": "f21e166a-f5b9-497d-b065-3f8152ca470e",
"name": "Job Title",
"type": "string",
"value": "={{ $json.title }}"
},
{
"id": "d0527179-f2e4-4469-99fc-cbff7c311719",
"name": "Company Name",
"type": "string",
"value": "={{ $json.organization.name }}"
},
{
"id": "38ad7852-ce76-4bbd-ad24-dfba76c36c96",
"name": "Website",
"type": "string",
"value": "={{ $json.organization.website_url }}"
},
{
"id": "37e79050-b899-440a-81c4-71329cab03a9",
"name": "Company Linkedin",
"type": "string",
"value": "={{ $json.organization.linkedin_url }}"
},
{
"id": "9118f706-5968-4254-b622-ab05e284a496",
"name": "personal_email",
"type": "string",
"value": "={{ $json.personal_email }}"
},
{
"id": "92ca2d2e-3472-4bc7-a100-960f8d231672",
"name": "Twitter_url",
"type": "string",
"value": "={{ $json.organization.twitter_url }}"
},
{
"id": "da5997af-51ab-42d2-b099-d7bb6c96e042",
"name": "email_status",
"type": "string",
"value": "={{ $json.email_status }}"
},
{
"id": "d34208f3-376e-430b-aed2-0b3a148fc99a",
"name": "email",
"type": "string",
"value": "={{ $json.email }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "3d1aec0f-43b2-4a73-8b2b-81a7e7b6b434",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
4208,
880
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "256f5a57-5888-46cf-bdbc-349f1530a12a",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.email }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "6318a6c1-6722-43f2-9be9-e68669d46c6b",
"name": "Filtrer",
"type": "n8n-nodes-base.filter",
"position": [
4032,
880
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "80ac38d7-efb8-493e-8bb1-c29fc0e4230f",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.Website }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "688fa91c-7dad-4e8c-b255-ba70c34bb7a4",
"name": "E-mail Absent",
"type": "n8n-nodes-base.airtable",
"position": [
4752,
1056
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appPoArs9A5xoSu8J",
"cachedResultUrl": "https://airtable.com/appPoArs9A5xoSu8J",
"cachedResultName": " Real Estate CTO and IT Managers"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblZQtU89lJh1pEgJ",
"cachedResultUrl": "https://airtable.com/appYA3nSxuyo96kUQ/tblZQtU89lJh1pEgJ",
"cachedResultName": "Contacts without emails"
},
"columns": {
"value": {
"Email": "={{ $json.personal_email }}",
"Company": "={{ $json['Company Name'] }}",
"Website": "={{ $json.Website }}",
"Full Name": "={{ $json.name }}",
"Job Title": "={{ $json['Job Title'] }}",
"Last Name": "={{ $json.last_name }}",
"First Name": "={{ $json.first_name }}",
"Email Status": "={{ $json.email_status }}",
"Business LinkedIn URL": "={{ $json['Company Linkedin'] }}",
"Personal LinkedIn URL": "={{ $json.linkedin_url }}"
},
"schema": [
{
"id": "Job Title",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Job Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Company",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Website",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Website",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "First Name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "First Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Last Name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Last Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Full Name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Full Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Personal LinkedIn URL",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Personal LinkedIn URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Business LinkedIn URL",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Business LinkedIn URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Description",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Company Description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email Status",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Email Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Icebreaker",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Icebreaker",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Full Name 2",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "Full Name 2",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email Domain",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "Email Domain",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "LinkedIn Profile Completeness",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "LinkedIn Profile Completeness",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email Verification Status",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "Email Verification Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Icebreaker Summary",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Icebreaker Summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Research",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Company Research",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create",
"authentication": "airtableOAuth2Api"
},
"credentials": {
"airtableOAuth2Api": {
"id": "GuBb4Si6MfwxQ3Lw",
"name": "Airtable account"
}
},
"typeVersion": 2.1
},
{
"id": "32e9cdea-1ba4-44a3-89f8-b8ac41b6084f",
"name": "E-mail Present",
"type": "n8n-nodes-base.airtable",
"position": [
4480,
736
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appPoArs9A5xoSu8J",
"cachedResultUrl": "https://airtable.com/appPoArs9A5xoSu8J",
"cachedResultName": " Real Estate CTO and IT Managers"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblvsXssh4qaMJFHE",
"cachedResultUrl": "https://airtable.com/appqJ7MvqoejsJ6m3/tblvsXssh4qaMJFHE",
"cachedResultName": "Contacts with email"
},
"columns": {
"value": {
"Email": "={{ $ifEmpty($json.personal_email, $json.email) }}",
"Company": "={{ $json['Company Name'] }}",
"Website": "={{ $json.Website }}",
"Full Name": "={{ $json.name }}",
"Job Title": "={{ $json['Job Title'] }}",
"Last Name": "={{ $json.last_name }}",
"First Name": "={{ $json.first_name }}",
"Email Status": "={{ $json.email_status }}",
"Business LinkedIn URL": "={{ $json['Company Linkedin'] }}",
"Personal LinkedIn URL": "={{ $json.linkedin_url }}"
},
"schema": [
{
"id": "Job Title",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Job Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Company",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Website",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Website",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "First Name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "First Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Last Name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Last Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Full Name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Full Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Personal LinkedIn URL",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Personal LinkedIn URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Business LinkedIn URL",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Business LinkedIn URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email Domain",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "Email Domain",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email Status",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Email Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Icebreaker",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Icebreaker",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Research",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Company Research",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contacted",
"type": "boolean",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Contacted",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Loom Outreach Written",
"type": "boolean",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Loom Outreach Written",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create",
"authentication": "airtableOAuth2Api"
},
"credentials": {
"airtableOAuth2Api": {
"id": "GuBb4Si6MfwxQ3Lw",
"name": "Airtable account"
}
},
"typeVersion": 2.1
},
{
"id": "3ee8c096-d969-47e1-b0aa-530cf9a14e0a",
"name": "Si",
"type": "n8n-nodes-base.if",
"position": [
4480,
976
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "73fba714-66db-47df-9ef4-0d39c8463562",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.personal_email }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "8a4ad51c-0369-409e-b48d-5ce46fbfb26a",
"name": "Personal email present",
"type": "n8n-nodes-base.airtable",
"position": [
4752,
864
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appPoArs9A5xoSu8J",
"cachedResultUrl": "https://airtable.com/appPoArs9A5xoSu8J",
"cachedResultName": " Real Estate CTO and IT Managers"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblvsXssh4qaMJFHE",
"cachedResultUrl": "https://airtable.com/appPoArs9A5xoSu8J/tblvsXssh4qaMJFHE",
"cachedResultName": "Contacts with email"
},
"columns": {
"value": {
"Email": "={{ $ifEmpty($json.personal_email, $json.email) }}",
"Company": "={{ $json['Company Name'] }}",
"Website": "={{ $json.Website }}",
"Full Name": "={{ $json.name }}",
"Job Title": "={{ $json['Job Title'] }}",
"Last Name": "={{ $json.last_name }}",
"First Name": "={{ $json.first_name }}",
"Email Status": "={{ $json.email_status }}",
"Business LinkedIn URL": "={{ $json['Company Linkedin'] }}",
"Personal LinkedIn URL": "={{ $json.linkedin_url }}"
},
"schema": [
{
"id": "Job Title",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Job Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Company",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Website",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Website",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "First Name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "First Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Last Name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Last Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Full Name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Full Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Personal LinkedIn URL",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Personal LinkedIn URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Business LinkedIn URL",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Business LinkedIn URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email Domain",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "Email Domain",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email Status",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Email Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Icebreaker",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Icebreaker",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Research",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Company Research",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contacted",
"type": "boolean",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Contacted",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Loom Outreach Written",
"type": "boolean",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Loom Outreach Written",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create",
"authentication": "airtableOAuth2Api"
},
"credentials": {
"airtableOAuth2Api": {
"id": "GuBb4Si6MfwxQ3Lw",
"name": "Airtable account"
}
},
"typeVersion": 2.1
},
{
"id": "120f0da5-adff-48db-948c-92315ec724fe",
"name": "Get URL",
"type": "n8n-nodes-base.airtable",
"position": [
3280,
880
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appPoArs9A5xoSu8J",
"cachedResultUrl": "https://airtable.com/appPoArs9A5xoSu8J",
"cachedResultName": " Real Estate CTO and IT Managers"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tbllvioJG4oLzRvxJ",
"cachedResultUrl": "https://airtable.com/appPoArs9A5xoSu8J/tbllvioJG4oLzRvxJ",
"cachedResultName": "Apollo URL"
},
"options": {},
"operation": "search",
"authentication": "airtableOAuth2Api"
},
"credentials": {
"airtableOAuth2Api": {
"id": "GuBb4Si6MfwxQ3Lw",
"name": "Airtable account"
}
},
"typeVersion": 2.1
},
{
"id": "babc3cbd-6d4e-42e8-94e4-c5ada67c1983",
"name": "Début",
"type": "n8n-nodes-base.manualTrigger",
"position": [
3088,
880
],
"parameters": {},
"typeVersion": 1
},
{
"id": "85227b65-b0af-4661-887e-d55cc3bc2bfc",
"name": "Note : Get URL",
"type": "n8n-nodes-base.stickyNote",
"position": [
3088,
576
],
"parameters": {
"color": 2,
"width": 392,
"height": 288,
"content": "## 📥 Get URL\n\n**Purpose:** Fetches Apollo search URL from Airtable.\n\n**Key Settings:**\n- Base: Your Airtable base ID.\n- Table: \"Apollo URL\" or equivalent.\n- Operation: Search (list all records).\n\n**Note:** Ensure table has a \"URL\" field with valid Apollo people search links."
},
"typeVersion": 1
},
{
"id": "933ce7fc-90d1-453a-902b-49c16ac80047",
"name": "Note : Scrape Leads",
"type": "n8n-nodes-base.stickyNote",
"position": [
3344,
1056
],
"parameters": {
"color": 3,
"width": 376,
"height": 288,
"content": "## 🔍 Scrape Leads\n\n**Purpose:** Runs Apify actor to scrape leads from Apollo URL.\n\n**Key Settings:**\n- Actor: Apollo Scraper.\n- Custom Body: Enable personal/work emails, set totalRecords (e.g., 1200).\n- Memory: 4096 MB for larger scrapes.\n\n**Note:** Validate URL is a people search; monitor Apify usage limits."
},
"typeVersion": 1
},
{
"id": "3c3dfb52-0094-4701-bd73-6c3aa16a3ab0",
"name": "Note : Edit Fields",
"type": "n8n-nodes-base.stickyNote",
"position": [
3760,
576
],
"parameters": {
"color": 5,
"width": 408,
"height": 256,
"content": "## ✏️ Node: Edit Fields\n\n**Purpose:** Maps and renames scraped data fields for Airtable.\n\n**Key Settings:**\n- Assignments: Map fields like name, email, company details.\n\n**Note:** Handles nested organization data; adjust if Apollo output changes."
},
"typeVersion": 1
},
{
"id": "27e73c0b-a557-4fa7-aec8-aaeae38d369c",
"name": "Note : Dedupe & Filtrer",
"type": "n8n-nodes-base.stickyNote",
"position": [
3904,
1072
],
"parameters": {
"color": 6,
"width": 376,
"height": 280,
"content": "## Remove Duplicates & Filter\n\n**Purpose:** Deduplicates leads and filters those with websites.\n\n**Key Settings:**\n- Remove Duplicates: Default options (compares all fields).\n- Filter: Website exists.\n\n**Note:** Customize duplicate keys (e.g., email + name) in troubleshooting."
},
"typeVersion": 1
},
{
"id": "5f43c706-b189-4331-b882-076221118801",
"name": "Note : Conditions",
"type": "n8n-nodes-base.stickyNote",
"position": [
4432,
1168
],
"parameters": {
"color": 7,
"width": 376,
"height": 280,
"content": "## 🔀 Nodes: If & IF\n\n**Purpose:** Branches based on email presence (work/personal).\n\n**Key Settings:**\n- Conditions: Check if email or personal_email exists.\n\n**Note:** Routes to appropriate Airtable tables; ensures no null emails in \"with Email\" table."
},
"typeVersion": 1
},
{
"id": "86d2131e-5cf7-4c2d-b58d-5e5367bd4d49",
"name": "Note : Airtable Creates",
"type": "n8n-nodes-base.stickyNote",
"position": [
4688,
560
],
"parameters": {
"color": 8,
"width": 456,
"height": 272,
"content": "## 📤 Email Present, Personal email present, Email Absent\n\n**Purpose:** Creates records in Airtable tables based on email availability.\n\n**Key Settings:**\n- Operation: Create.\n- Columns: Mapped fields; use $ifEmpty for email fallback.\n\n**Note:** Update base/table IDs; re-auth if permission errors."
},
"typeVersion": 1
},
{
"id": "fb8abd64-afd7-4273-a024-9ce48b60dea0",
"name": "Apollo Scraper",
"type": "n8n-nodes-base.httpRequest",
"position": [
3456,
880
],
"parameters": {
"url": "=https://api.apify.com/v2/acts/jljBwyyQakqrL1wae/run-sync-get-dataset-items",
"method": "POST",
"options": {
"timeout": 1000000,
"redirect": {
"redirect": {}
}
},
"jsonBody": "={\n \"getPersonalEmails\": true,\n \"getWorkEmails\": true,\n \"totalRecords\": 1100,\n \"url\": \"{{ $json.URL }}\"\n}",
"sendBody": true,
"sendQuery": true,
"sendHeaders": true,
"specifyBody": "json",
"queryParameters": {
"parameters": [
{
"name": "timeout",
"value": "600000"
},
{
"name": "memory",
"value": "32768"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Accept",
"value": "application/json"
},
{
"name": "Authorization",
"value": "=Bearer <ApiKey>"
}
]
}
},
"typeVersion": 4.2
}
],
"pinData": {},
"connections": {
"IF": {
"main": [
[
{
"node": "8a4ad51c-0369-409e-b48d-5ce46fbfb26a",
"type": "main",
"index": 0
}
],
[
{
"node": "Email Absent",
"type": "main",
"index": 0
}
]
]
},
"3d1aec0f-43b2-4a73-8b2b-81a7e7b6b434": {
"main": [
[
{
"node": "Email Present",
"type": "main",
"index": 0
}
],
[
{
"node": "IF",
"type": "main",
"index": 0
}
]
]
},
"Start": {
"main": [
[
{
"node": "120f0da5-adff-48db-948c-92315ec724fe",
"type": "main",
"index": 0
}
]
]
},
"Filter": {
"main": [
[
{
"node": "3d1aec0f-43b2-4a73-8b2b-81a7e7b6b434",
"type": "main",
"index": 0
}
]
]
},
"120f0da5-adff-48db-948c-92315ec724fe": {
"main": [
[
{
"node": "fb8abd64-afd7-4273-a024-9ce48b60dea0",
"type": "main",
"index": 0
}
]
]
},
"9881dcf9-3eea-4cad-a028-3a5e65b79973": {
"main": [
[
{
"node": "Remove Duplicates",
"type": "main",
"index": 0
}
]
]
},
"fb8abd64-afd7-4273-a024-9ce48b60dea0": {
"main": [
[
{
"node": "9881dcf9-3eea-4cad-a028-3a5e65b79973",
"type": "main",
"index": 0
}
]
]
},
"Remove Duplicates": {
"main": [
[
{
"node": "Filter",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Création de contenu, IA Multimodale
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Daniel
@daniel-automatesAI Automation Consultant | Helping Business Owners Implement AI Systems for growth and lead gen
Partager ce workflow