This workflow corresponds to n8n.io template #4254 — we link there as the canonical source.
This workflow follows the Execute Workflow Trigger → Form Trigger 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 →
{
"id": "JuW1Q92YSk4ErvvC",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Get Company LinkedIn Page",
"tags": [],
"nodes": [
{
"id": "293786b0-e37d-4c79-83fc-2c3bbae1752b",
"name": "On form submission",
"type": "n8n-nodes-base.formTrigger",
"position": [
-40,
-120
],
"parameters": {
"options": {},
"formTitle": "Company LinkedIn",
"formFields": {
"values": [
{
"fieldLabel": "Company domain",
"placeholder": "company.com",
"requiredField": true
},
{
"fieldLabel": "Airtop Profile (connected to Linkedin)",
"requiredField": true
}
]
},
"formDescription": "=<p>This automation searches for a company's LinkedIn page.</p>\n\n<p>The automation requires an Airtop Profile name that is authenticated on Linkedin. Don't have one? Create a free Profile and log-in to X at - <a href=\"https://portal.airtop.ai/browser-profiles\">https://portal.airtop.ai/browser-profiles</a></p>"
},
"typeVersion": 2.2
},
{
"id": "311095ba-b1b7-4080-ab0e-814b3c216003",
"name": "Unify parameters",
"type": "n8n-nodes-base.set",
"position": [
180,
-20
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "ca4288c1-9336-4c1e-8eee-4e96c2f240cc",
"name": "Company domain",
"type": "string",
"value": "={{ $json[\"Company domain\"] }}"
},
{
"id": "efcc1d50-ff92-4420-af90-63ff7863cc1a",
"name": "Airtop Profile",
"type": "string",
"value": "={{ $json[\"Airtop Profile (connected to Linkedin)\"] }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "1f3f3545-6960-42dc-823e-10be62dfb3c7",
"name": "Company LinkedIn exists?",
"type": "n8n-nodes-base.filter",
"position": [
1520,
-40
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "955d2f74-f1ae-46a6-ba1f-894e39c552bd",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $json.data.modelResponse }}",
"rightValue": "linkedin.com/company"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "d939dbee-98ec-49aa-94d9-8c36912fd8d7",
"name": "Map data",
"type": "n8n-nodes-base.set",
"position": [
1980,
-140
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "02614eff-4a1e-479f-9b50-c2d5f7fead35",
"name": "company_linkedin",
"type": "string",
"value": "={{ $json.company_linkedin }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "31c29d58-730e-4610-b41f-814ba9775159",
"name": "When Executed by Another Workflow",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
-40,
80
],
"parameters": {
"workflowInputs": {
"values": [
{
"name": "Company domain"
},
{
"name": "Airtop Profile (connected to Linkedin)"
}
]
}
},
"typeVersion": 1.1
},
{
"id": "c2952fbe-0622-4c0e-8d93-f34ccde536a7",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
-220
],
"parameters": {
"width": 400,
"height": 460,
"content": "## Input Parameters\nRun this workflow using a form or from another workflow"
},
"typeVersion": 1
},
{
"id": "c020ca75-1cae-43aa-bd84-97be6da53a05",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
340,
-220
],
"parameters": {
"color": 4,
"width": 260,
"height": 460,
"content": "## Query webpage\nSearch the provided company webpage for a LinkedIn profile link.\n"
},
"typeVersion": 1
},
{
"id": "61060ba2-5b44-4e9e-a9d6-b99769ed2426",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
780,
-60
],
"parameters": {
"color": 5,
"width": 920,
"height": 280,
"content": "## Search LinkedIn\nIf the webpage can't be found or doesn't contain a LinkedIn link, \na search is performed on LinkedIn (and then on Google)"
},
"typeVersion": 1
},
{
"id": "1c21c09e-22ca-4c1d-8a92-92fd23a3bcc0",
"name": "Webpage search",
"type": "n8n-nodes-base.airtop",
"onError": "continueRegularOutput",
"position": [
400,
-20
],
"parameters": {
"url": "={{ $json[\"Company domain\"] }}",
"prompt": "This is the webpage for a company. Search for the linkedin of the company, it is highly probable that it is in the footer. Return only the link",
"resource": "extraction",
"operation": "query",
"profileName": "={{ $('Unify parameters').item.json[\"Airtop Profile\"] }}",
"sessionMode": "new",
"additionalFields": {}
},
"credentials": {
"airtopApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "d306ed90-f949-4f23-904a-375e0fd65a59",
"name": "Linkedin search",
"type": "n8n-nodes-base.airtop",
"maxTries": 2,
"position": [
840,
60
],
"parameters": {
"url": "=https://www.linkedin.com/search/results/companies/?keywords={{ encodeURIComponent(['org','com','co','fr','us','uk','de','es','it','nl','ca','au','in','jp'].includes($('Unify parameters').item.json[\"Company domain\"].split('.').at(-1)) ? $('Unify parameters').item.json[\"Company domain\"].split('.')[0] : $('Unify parameters').item.json[\"Company domain\"].split('.').join(\" \")\n) }}",
"prompt": "=This is Linked Search results. One of the first results should be the Linkedin Page of {{ $('Unify parameters').item.json[\"Company domain\"] }}\nReturn the Linkedin URL of the most likely page and nothing else.",
"resource": "extraction",
"operation": "query",
"profileName": "={{ $('Unify parameters').item.json[\"Airtop Profile\"] }}",
"sessionMode": "new",
"additionalFields": {}
},
"credentials": {
"airtopApi": {
"name": "<your credential>"
}
},
"retryOnFail": true,
"typeVersion": 1
},
{
"id": "e01562fd-0222-42fe-8d5b-80dd2d20e136",
"name": "LinkedIn link found?",
"type": "n8n-nodes-base.if",
"position": [
620,
-120
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "bc93d626-bed0-4f63-8145-f2514b0ba38d",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $json.data.modelResponse }}",
"rightValue": "linkedin.com/company"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "44767679-1c79-4257-9f6e-ef0cae6fdd6c",
"name": "LinkedIn link found?1",
"type": "n8n-nodes-base.if",
"position": [
1080,
40
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "bc93d626-bed0-4f63-8145-f2514b0ba38d",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $json.data.modelResponse }}",
"rightValue": "linkedin.com/company"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "0570831d-5172-4621-9fab-ad8d022f3065",
"name": "Google search",
"type": "n8n-nodes-base.airtop",
"maxTries": 2,
"position": [
1360,
60
],
"parameters": {
"url": "=https://www.google.com/search?q={{ encodeURIComponent(`${$('Unify parameters').item.json[\"Company domain\"]} LinkedIn`) }}",
"prompt": "=This is Google Search results. One of the first results should be the Linkedin Page of {{ $('Unify parameters').item.json[\"Company domain\"] }}\nReturn the Linkedin URL of the most likely page and nothing else.\nIf can't find the URL return 'NA'\nA valid Linkedin profile URL starts with \"https://www.linkedin.com/company/\"",
"resource": "extraction",
"operation": "query",
"profileName": "=",
"sessionMode": "new",
"additionalFields": {}
},
"credentials": {
"airtopApi": {
"name": "<your credential>"
}
},
"retryOnFail": true,
"typeVersion": 1
},
{
"id": "c928ff04-0a60-4be4-972b-c60cdfe9e246",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1720,
-220
],
"parameters": {
"color": 6,
"width": 400,
"height": 440,
"content": "## Verify LinkedIn URL"
},
"typeVersion": 1
},
{
"id": "be500c1a-af4a-4a4d-83c0-c4557aed7a38",
"name": "Verify LinkedIn link",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
1760,
-140
],
"parameters": {
"options": {},
"workflowId": {
"__rl": true,
"mode": "list",
"value": "5oytfka3VbKglzBE",
"cachedResultName": "AIRTOP \u2014 Verify Company LinkedIn by Domain"
},
"workflowInputs": {
"value": {
"Company Domain": "={{ $('Unify parameters').item.json[\"Company domain\"] }}",
"Company LinkedIn": "={{ $json.data.modelResponse }}",
"Airtop Profile (connected to Linkedin)": "={{ $('Unify parameters').item.json[\"Airtop Profile\"] }}"
},
"schema": [
{
"id": "Company LinkedIn",
"type": "string",
"display": true,
"required": false,
"displayName": "Company LinkedIn",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Domain",
"type": "string",
"display": true,
"required": false,
"displayName": "Company Domain",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Airtop Profile (connected to Linkedin)",
"type": "string",
"display": true,
"required": false,
"displayName": "Airtop Profile (connected to Linkedin)",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": true
}
},
"typeVersion": 1.2
},
{
"id": "c2b5aff0-cea1-4564-a512-273e62c95495",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-840,
-480
],
"parameters": {
"width": 700,
"height": 1040,
"content": "README\n\n# Automating LinkedIn Company Page Discovery\n\n## Use Case\n\nFinding the official LinkedIn page of a company is crucial for tasks like outreach, research, or enrichment. This automation streamlines the process by intelligently searching the company\u2019s website and LinkedIn to locate the correct profile.\n\n## What This Automation Does\n\nThis automation identifies a company's LinkedIn page using the following input parameters:\n\n- **Company domain**: The official website domain of the company (e.g., `company.com`).\n- **Airtop Profile (connected to LinkedIn)**: The name of your [Airtop Profile](https://portal.airtop.ai/browser-profiles) authenticated on LinkedIn.\n\n## How It Works\n\n1. Launches an Airtop session using the provided authenticated profile.\n2. Attempts to extract a LinkedIn link directly from the company's website.\n3. If not found, performs a LinkedIn search for the company.\n4. If still unsuccessful, falls back to a Google search.\n5. Validates the most likely result to confirm it\u2019s a LinkedIn company page.\n6. Outputs the verified LinkedIn URL.\n\n## Setup Requirements\n\n1. [Airtop API Key](https://portal.airtop.ai/api-keys) \u2014 free to generate.\n2. An [Airtop Profile](https://portal.airtop.ai/browser-profiles) logged in to LinkedIn (requires one-time login).\n\n## Next Steps\n\n- **Combine with People Enrichment**: Use this with LinkedIn profile discovery for full contact + company data workflows.\n- **CRM Integration**: Automatically enrich company records with LinkedIn links.\n- **Build Custom Outreach Workflows**: Connect company pages to SDR tooling for deeper research and engagement."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "a26d6a2d-0cc4-4c5f-b126-c1c118955814",
"connections": {
"Google search": {
"main": [
[
{
"node": "Company LinkedIn exists?",
"type": "main",
"index": 0
}
]
]
},
"Webpage search": {
"main": [
[
{
"node": "LinkedIn link found?",
"type": "main",
"index": 0
}
]
]
},
"Linkedin search": {
"main": [
[
{
"node": "LinkedIn link found?1",
"type": "main",
"index": 0
}
]
]
},
"Unify parameters": {
"main": [
[
{
"node": "Webpage search",
"type": "main",
"index": 0
}
]
]
},
"On form submission": {
"main": [
[
{
"node": "Unify parameters",
"type": "main",
"index": 0
}
]
]
},
"LinkedIn link found?": {
"main": [
[
{
"node": "Verify LinkedIn link",
"type": "main",
"index": 0
}
],
[
{
"node": "Linkedin search",
"type": "main",
"index": 0
}
]
]
},
"Verify LinkedIn link": {
"main": [
[
{
"node": "Map data",
"type": "main",
"index": 0
}
]
]
},
"LinkedIn link found?1": {
"main": [
[
{
"node": "Company LinkedIn exists?",
"type": "main",
"index": 0
}
],
[
{
"node": "Google search",
"type": "main",
"index": 0
}
]
]
},
"Company LinkedIn exists?": {
"main": [
[
{
"node": "Verify LinkedIn link",
"type": "main",
"index": 0
}
]
]
},
"When Executed by Another Workflow": {
"main": [
[
{
"node": "Unify parameters",
"type": "main",
"index": 0
}
]
]
}
}
}
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.
airtopApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Finding the official LinkedIn page of a company is crucial for tasks like outreach, research, or enrichment. This automation streamlines the process by intelligently searching the company’s website and LinkedIn to locate the correct profile.
Source: https://n8n.io/workflows/4254/ — 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.
Automatically sending LinkedIn connection requests to prospects can significantly streamline your outreach process. This automation ensures you only send requests to users you're not already connected
Accurately identifying and verifying a person’s LinkedIn profile is essential for prospecting, recruiting, or contact enrichment. This automation ensures high accuracy by combining search logic with o
This automation verifies that a given LinkedIn URL actually belongs to a company by comparing the website listed on their LinkedIn page against the expected company domain. It is essential for ensurin
This automation is designed to extract key engagement metrics and audience data from a LinkedIn post. It's useful for analyzing the impact of content and identifying engaged users for lead generation,
This automation extracts detailed company insights from a LinkedIn company page, including identity, scale, classification, and funding data. Ideal for investors, sales teams, and market researchers.