Extracción de correos electrónicos de dominios con la API de Apollo

Intermedio

Este es unSalesflujo de automatización del dominio deautomatización que contiene 9 nodos.Utiliza principalmente nodos como Code, HttpRequest, GoogleSheets, ManualTrigger, SplitInBatches. Extraer correos electrónicos de dominios usando la API de Apollo

Requisitos previos
  • Pueden requerirse credenciales de autenticación para la API de destino
  • Credenciales de API de Google Sheets

Categoría

Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "id": "E4K85OV19sy8Jrly",
  "meta": {
    "instanceId": "f46651348590f9c7e3e7fe91218ed49590c553ab737d5cc247951397ff85fa93",
    "templateCredsSetupCompleted": true
  },
  "name": "Domain -> Email Extraction using Apollo API copy",
  "tags": [],
  "nodes": [
    {
      "id": "02646c75-dad3-4b21-8203-e86732374a2c",
      "name": "Al hacer clic en 'Probar flujo de trabajo'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -400,
        -60
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "69175622-b2fb-4a56-83bf-a55290f1c725",
      "name": "Bucle de objetivos",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        40,
        -60
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "5e6af8ff-2bc1-44b4-9523-3e55a785ee4d",
      "name": "Extraer dominios objetivo",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -180,
        -60
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupColumn": "Status"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1qSlCPA-FqrQZUS7DIqYaZbhdhxZDxIM3xYrswJKEZ-o/edit#gid=0",
          "cachedResultName": "Target Domains"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1qSlCPA-FqrQZUS7DIqYaZbhdhxZDxIM3xYrswJKEZ-o",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1qSlCPA-FqrQZUS7DIqYaZbhdhxZDxIM3xYrswJKEZ-o/edit?usp=drivesdk",
          "cachedResultName": "Apollo Data"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "eJnhBFCXl43MdWvb",
          "name": "JKM Sheets"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "884b3766-8d4b-43a3-8a14-e3eee1a3d678",
      "name": "Obtener personas por dominio",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        300,
        -60
      ],
      "parameters": {
        "url": "https://api.apollo.io/v1/mixed_people/search",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"q_organization_domains_list\": [\"{{ $json['Domain To Enrich'] }}\"],\n  \"per_page\": 10,\n  \"page\": 1\n}\n",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "x-api-key",
              "value": "Your  API KEY "
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "df77689b-ccd3-4638-a981-4cf13fbf8a70",
      "name": "Limpiar resultados",
      "type": "n8n-nodes-base.code",
      "position": [
        480,
        -60
      ],
      "parameters": {
        "jsCode": "// Function node code\nconsole.log('Initial data:', JSON.stringify(items, null, 2));\n\n// Get the first item since n8n usually wraps data in an array\nconst data = items[0].json;\nconsole.log('Data structure:', JSON.stringify(data, null, 2));\n\n// Now process the people data\nconst people = data.people || [];\n\ntry {\n  return people.map(person => {\n    console.log('Processing person:', JSON.stringify(person, null, 2));\n    return {\n      json: {\n        firstName: person.first_name || '',\n        lastName: person.last_name || '',\n        email: person.email || '',\n        websiteUrl: person.website_url || '',\n        linkedinUrl: person.linkedin_url || '',\n        twitterUrl: person.twitter_url || '',\n        facebookUrl: person.facebook_url || '',\n        phone: person.primary_phone?.number || '',\n        company: {\n          name: person.company_name || '',\n          domain: person.primary_domain || '',\n          foundedYear: person.founded_year || '',\n          logo: person.logo_url || ''\n        },\n        professional: {\n          departments: person.departments || [],\n          seniority: person.seniority || '',\n          functions: person.functions || []\n        }\n      }\n    };\n  });\n} catch (error) {\n  console.log('Error occurred. Full items:', JSON.stringify(items, null, 2));\n  throw new Error(`Error processing data: ${error.message}`);\n}"
      },
      "typeVersion": 2
    },
    {
      "id": "bc0f01b0-3225-4023-9e21-0bcebab00808",
      "name": "Bucle sobre resultados",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        680,
        -60
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "65533eb2-a738-4cf3-9cbc-480a911e4fb2",
      "name": "Obtener información de persona",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        920,
        -60
      ],
      "parameters": {
        "url": "=https://api.apollo.io/api/v1/people/match?first_name={{ $json.firstName }}&last_name={{ $json.lastName }}&domain={{ $('Get People By Domain').item.json.breadcrumbs[0].value[0] }}&reveal_personal_emails=false&reveal_phone_number=false ",
        "method": "POST",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "x-api-key",
              "value": "Your API Key"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "4c369c7e-e79b-4bf1-97d4-25abac4256db",
      "name": "Limpiar",
      "type": "n8n-nodes-base.code",
      "position": [
        1140,
        -60
      ],
      "parameters": {
        "jsCode": "// Function node to extract specific fields from Apollo response\ntry {\n    const results = items.map(item => {\n        const person = item.json.person; // Access the person object directly\n        \n        return {\n            json: {\n                firstName: person.first_name || '',\n                lastName: person.last_name || '',\n                email: person.email || '',\n                linkedinUrl: person.linkedin_url || '',\n                title: person.title || '',\n                twitter: person.twitter_url || '',\n                facebook: person.facebook_url || '',\n                organizationName: person.employment_history?.[0]?.organization_name || '', // Get current organization from employment history\n                headline: person.headline || '',\n                photoUrl: person.photo_url || ''\n            }\n        };\n    });\n\n    console.log(`Successfully processed ${results.length} records`);\n    return results;\n\n} catch (error) {\n    console.error('Error processing data:', error);\n    throw new Error(`Failed to process data: ${error.message}`);\n}"
      },
      "typeVersion": 2
    },
    {
      "id": "f0eaa1e7-299f-4ec8-ae26-90bbe1483a1e",
      "name": "Resultados a hoja de resultados",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1340,
        -60
      ],
      "parameters": {
        "columns": {
          "value": {
            "Email": "={{ $json.email }}",
            "Title": "={{ $json.title }}",
            "Company": "={{ $('Loop Targets').item.json['Domain To Enrich'] }}",
            "Last Name": "={{ $json.lastName }}",
            "Linkedin ": "={{ $json.linkedinUrl }}",
            "First Name": "={{ $json.firstName }}"
          },
          "schema": [
            {
              "id": "Company",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Company",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "First Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "First Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Last Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Last Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Linkedin ",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Linkedin ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 308352805,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1qSlCPA-FqrQZUS7DIqYaZbhdhxZDxIM3xYrswJKEZ-o/edit#gid=308352805",
          "cachedResultName": "Results"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1qSlCPA-FqrQZUS7DIqYaZbhdhxZDxIM3xYrswJKEZ-o",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1qSlCPA-FqrQZUS7DIqYaZbhdhxZDxIM3xYrswJKEZ-o/edit?usp=drivesdk",
          "cachedResultName": "Apollo Data"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "eJnhBFCXl43MdWvb",
          "name": "JKM Sheets"
        }
      },
      "typeVersion": 4.5
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "3fe93ef2-9ba0-474e-9b44-dbb9f9fa4fd8",
  "connections": {
    "4c369c7e-e79b-4bf1-97d4-25abac4256db": {
      "main": [
        [
          {
            "node": "f0eaa1e7-299f-4ec8-ae26-90bbe1483a1e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "69175622-b2fb-4a56-83bf-a55290f1c725": {
      "main": [
        [],
        [
          {
            "node": "884b3766-8d4b-43a3-8a14-e3eee1a3d678",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "65533eb2-a738-4cf3-9cbc-480a911e4fb2": {
      "main": [
        [
          {
            "node": "4c369c7e-e79b-4bf1-97d4-25abac4256db",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "df77689b-ccd3-4638-a981-4cf13fbf8a70": {
      "main": [
        [
          {
            "node": "bc0f01b0-3225-4023-9e21-0bcebab00808",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bc0f01b0-3225-4023-9e21-0bcebab00808": {
      "main": [
        [
          {
            "node": "69175622-b2fb-4a56-83bf-a55290f1c725",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "65533eb2-a738-4cf3-9cbc-480a911e4fb2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5e6af8ff-2bc1-44b4-9523-3e55a785ee4d": {
      "main": [
        [
          {
            "node": "69175622-b2fb-4a56-83bf-a55290f1c725",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "884b3766-8d4b-43a3-8a14-e3eee1a3d678": {
      "main": [
        [
          {
            "node": "df77689b-ccd3-4638-a981-4cf13fbf8a70",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f0eaa1e7-299f-4ec8-ae26-90bbe1483a1e": {
      "main": [
        [
          {
            "node": "bc0f01b0-3225-4023-9e21-0bcebab00808",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "02646c75-dad3-4b21-8203-e86732374a2c": {
      "main": [
        [
          {
            "node": "5e6af8ff-2bc1-44b4-9523-3e55a785ee4d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Intermedio - Ventas

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Información del flujo de trabajo
Nivel de dificultad
Intermedio
Número de nodos9
Categoría1
Tipos de nodos5
Descripción de la dificultad

Adecuado para usuarios con experiencia intermedia, flujos de trabajo de complejidad media con 6-15 nodos

Autor
Hueston

Hueston

@hueston

Hueston is a website design and marketing agency passionate about automation. We craft engaging digital experiences while implementing smart marketing strategies that deliver results. Our team specializes in leveraging automation tools to streamline workflows and boost efficiency for our clients. Let us help your business grow through technology-driven solutions.

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34