This workflow corresponds to n8n.io template #5161 — we link there as the canonical source.
This workflow follows the Google Sheets → 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 →
{
"id": "aYhTrpk2bbP6PzC7",
"name": "My workflow 11",
"tags": [],
"nodes": [
{
"id": "8332ef6d-626b-4fa8-888c-e41284154d73",
"name": "Start",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-400,
440
],
"parameters": {},
"typeVersion": 1
},
{
"id": "e24a9fbf-2812-4386-bee9-857df3ba4924",
"name": "Get Profile Info",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueRegularOutput",
"position": [
40,
440
],
"parameters": {
"url": "https://api.ghostgenius.fr/v2/profile",
"options": {
"batching": {
"batch": {
"batchSize": 1,
"batchInterval": 2000
}
}
},
"sendQuery": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"queryParameters": {
"parameters": [
{
"name": "url",
"value": "={{ $json.url }}"
}
]
}
},
"retryOnFail": true,
"typeVersion": 4.2
},
{
"id": "c6c53ff4-5c54-48ac-940f-05faf4f335cc",
"name": "Recover Profiles",
"type": "n8n-nodes-base.googleSheets",
"position": [
-180,
440
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_L4a0XyjNLiOiyLH3Jl8PKI/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1D3aCtCOHUZd2B2KgPmi5_L4a0XyjNLiOiyLH3Jl8PKI",
"cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_L4a0XyjNLiOiyLH3Jl8PKI/edit?usp=drivesdk",
"cachedResultName": "Copy of List of profiles"
}
},
"typeVersion": 4.5
},
{
"id": "ebc0382a-3d69-43bc-a64d-409647649e49",
"name": "Update",
"type": "n8n-nodes-base.googleSheets",
"position": [
260,
440
],
"parameters": {
"columns": {
"value": {
"url": "={{ $('Recover Profiles').item.json.url }}",
"Skills": "={{ ($json.skills?.length > 0) ? $json.skills.join(', ') : '' }}",
"Hiring?": "={{ $json.is_hiring.toString() }}",
"Summary": "={{ $json.summary }}",
"Tagline": "={{ $json.headline }}",
"Lastname": "={{ $json.last_name }}",
"Location": "={{ [$json.geo?.location?.name, $json.geo?.country?.name].filter(Boolean).join(', ') }}",
"Firstname": "={{ $json.first_name }}",
"Followers": "={{ $json.followers }}",
"Languages": "={{ $json.languages?.map(lang => lang.name + ' (' + lang.level + ')').join(', ') ?? '' }}",
"Connections": "={{ $json.connections }}",
"Education 1": "={{ $json.educations?.[0]?.school?.full_name ?? '' }}\n{{ $json.educations?.[0]?.school?.url ?? '' }}\n{{ [$json.educations?.[0]?.start, $json.educations?.[0]?.end].filter(Boolean).join(' - ') }}\n{{ $json.educations?.[0]?.description ?? '' }}\n{{ [$json.educations?.[0]?.grade, $json.educations?.[0]?.major, $json.educations?.[0]?.degree].filter(Boolean).join(' - ') }}",
"Education 2": "={{ $json.educations?.[1]?.school?.full_name ?? '' }}\n{{ $json.educations?.[1]?.school?.url ?? '' }}\n{{ [$json.educations?.[1]?.start, $json.educations?.[1]?.end].filter(Boolean).join(' - ') }}\n{{ $json.educations?.[1]?.description ?? '' }}\n{{ [$json.educations?.[1]?.grade, $json.educations?.[1]?.major, $json.educations?.[1]?.degree].filter(Boolean).join(' - ') }}",
"Education 3": "={{ $json.educations?.[2]?.school?.full_name ?? '' }}\n{{ $json.educations?.[2]?.school?.url ?? '' }}\n{{ [$json.educations?.[2]?.start, $json.educations?.[2]?.end].filter(Boolean).join(' - ') }}\n{{ $json.educations?.[2]?.description ?? '' }}\n{{ [$json.educations?.[2]?.grade, $json.educations?.[2]?.major, $json.educations?.[2]?.degree].filter(Boolean).join(' - ') }}",
"Experience 1": "={{ $json.experiences?.[0]?.company?.name ?? '' }}\n{{ $json.experiences?.[0]?.company?.url ?? '' }}\n{{ ($json.experiences?.[0]?.start ?? '') + (($json.experiences?.[0]?.start && $json.experiences?.[0]?.end) ? ' - ' : '') + ($json.experiences?.[0]?.end ?? '') }}\n{{ $json.experiences?.[0]?.position ?? '' }}\n{{ $json.experiences?.[0]?.location ?? '' }}",
"Experience 2": "={{ $json.experiences?.[1]?.company?.name ?? '' }}\n{{ $json.experiences?.[1]?.company?.url ?? '' }}\n{{ ($json.experiences?.[1]?.start ?? '') + (($json.experiences?.[1]?.start && $json.experiences?.[1]?.end) ? ' - ' : '') + ($json.experiences?.[1]?.end ?? '') }}\n{{ $json.experiences?.[1]?.position ?? '' }}\n{{ $json.experiences?.[1]?.location ?? '' }}",
"Experience 3": "={{ $json.experiences?.[2]?.company?.name ?? '' }}\n{{ $json.experiences?.[2]?.company?.url ?? '' }}\n{{ ($json.experiences?.[2]?.start ?? '') + (($json.experiences?.[2]?.start && $json.experiences?.[2]?.end) ? ' - ' : '') + ($json.experiences?.[2]?.end ?? '') }}\n{{ $json.experiences?.[2]?.position ?? '' }}\n{{ $json.experiences?.[2]?.location ?? '' }}",
"Experience 4": "={{ $json.experiences?.[3]?.company?.name ?? '' }}\n{{ $json.experiences?.[3]?.company?.url ?? '' }}\n{{ ($json.experiences?.[3]?.start ?? '') + (($json.experiences?.[3]?.start && $json.experiences?.[3]?.end) ? ' - ' : '') + ($json.experiences?.[3]?.end ?? '') }}\n{{ $json.experiences?.[3]?.position ?? '' }}\n{{ $json.experiences?.[3]?.location ?? '' }}",
"Experience 5": "={{ $json.experiences?.[4]?.company?.name ?? '' }}\n{{ $json.experiences?.[4]?.company?.url ?? '' }}\n{{ ($json.experiences?.[4]?.start ?? '') + (($json.experiences?.[4]?.start && $json.experiences?.[4]?.end) ? ' - ' : '') + ($json.experiences?.[4]?.end ?? '') }}\n{{ $json.experiences?.[4]?.position ?? '' }}\n{{ $json.experiences?.[4]?.location ?? '' }}",
"Open to work?": "={{ $json.is_open_to_work.toString() }}"
},
"schema": [
{
"id": "url",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Firstname",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Firstname",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Lastname",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Lastname",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Tagline",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Tagline",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Location",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Location",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Connections",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Connections",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Followers",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Followers",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Hiring?",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Hiring?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Open to work?",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Open to work?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Summary",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Languages",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Languages",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Skills",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Skills",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Experience 1",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Experience 1",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Experience 2",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Experience 2",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Experience 3",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Experience 3",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Experience 4",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Experience 4",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Experience 5",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Experience 5",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Education 1",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Education 1",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Education 2",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Education 2",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Education 3",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Education 3",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Skills",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Skills",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"url"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/YOUR_AWS_SECRET_KEY_HERE-s6PhA/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1D3aCtCOHUZd2B2KgPmi5_L4a0XyjNLiOiyLH3Jl8PKI",
"cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_L4a0XyjNLiOiyLH3Jl8PKI/edit?usp=drivesdk",
"cachedResultName": "Copy of List of profiles"
}
},
"typeVersion": 4.5
},
{
"id": "91c969bc-dd32-45a3-a8e7-f69ce94fe365",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-520,
280
],
"parameters": {
"color": 5,
"width": 1040,
"height": 420,
"content": "## Enrich a LinkedIn profile list"
},
"typeVersion": 1
},
{
"id": "62815f2f-a917-4f39-987a-2e0ce9046134",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"parameters": {
"width": 420,
"height": 220,
"content": "## Resources\n[Video Setup](https://youtu.be/kIOJeMoCfp4)\n\nGoogle Sheet: [Make a copy here](https://docs.google.com/spreadsheets/d/1oiV25COrTMP20nMgNvbtMo2LHcm7ehkqOxbAB-s6PhA/edit?usp=sharing)\n\nAPI LinkedIn (cookieless): [Ghost Genius](https://ghostgenius.fr)\n\nGoogle Sheet Credential Setup: [Video Tutorial](https://www.youtube.com/watch?v=pWGXlZBGu4k)"
},
"typeVersion": 1
},
{
"id": "f477d4bc-9e67-4b93-a8aa-12bdf2807daa",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-380,
80
],
"parameters": {
"color": 7,
"height": 80,
"content": "# [Setup Video](https://youtu.be/kIOJeMoCfp4)"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "2474bd40-54d9-4582-a58d-2a085b82ab64",
"connections": {
"Start": {
"main": [
[
{
"node": "Recover Profiles",
"type": "main",
"index": 0
}
]
]
},
"Get Profile Info": {
"main": [
[
{
"node": "Update",
"type": "main",
"index": 0
}
]
]
},
"Recover Profiles": {
"main": [
[
{
"node": "Get Profile Info",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Who is this for? This template is perfect for sales teams, recruiters, marketing professionals, and business development specialists who need to gather comprehensive LinkedIn profile data at scale. Ideal for lead generation teams building prospect databases, recruiters sourcing…
Source: https://n8n.io/workflows/5161/ — 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.
The Recap AI - Twitter Scraping. Uses formTrigger, httpRequest, googleSheets. Event-driven trigger; 13 nodes.
Disclaimer: this workflow only works on self-hosted instances due to the file system usage.
More workflow: https://aitool.wiki/
> ⚠️ Disclaimer: This workflow uses Community Nodes and requires a self-hosted n8n instance.
This n8n workflow automates the process of scraping job listings from both LinkedIn and Indeed platforms simultaneously, combining results, and exporting data to Google Sheets for comprehensive job ma