This workflow corresponds to n8n.io template #6371 — we link there as the canonical source.
This workflow follows the Form Trigger → Google Sheets 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": "GyAcQ4pRlDXovjmK",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "LinkedIn & Indeed Job Scraper via Bright Data with Google Sheets Export",
"tags": [],
"nodes": [
{
"id": "ccb16093-bf80-460b-ba5c-479062b2e965",
"name": "Triggers workflow from job search form",
"type": "n8n-nodes-base.formTrigger",
"position": [
-496,
-384
],
"parameters": {
"options": {},
"formTitle": " Job Finder",
"formFields": {
"values": [
{
"fieldLabel": "City",
"requiredField": true
},
{
"fieldLabel": "Job Title",
"requiredField": true
},
{
"fieldLabel": "Country",
"requiredField": true
},
{
"fieldType": "dropdown",
"fieldLabel": "Job_type (Optional)",
"fieldOptions": {
"values": [
{
"option": "Full-Time"
},
{
"option": "Part-Time"
},
{
"option": "Remote"
},
{
"option": "WFH"
},
{
"option": "Contract"
},
{
"option": "Internship"
},
{
"option": "Freelance"
}
]
}
}
]
}
},
"typeVersion": 2.2
},
{
"id": "e058f622-138b-4a44-8be6-a212621a1059",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-560,
-976
],
"parameters": {
"color": 7,
"width": 520,
"height": 140,
"content": "Make A Copy Of This Sheet\n(https://docs.google.com/spreadsheets/d/1FmjpyNjus0tdN9hU9e-EsFcKl-W4EdWq1PYfIvGu8Ws/edit?gid=0#gid=0)"
},
"typeVersion": 1
},
{
"id": "e1151c95-cdd2-4e28-be8d-4631364a71fc",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-560,
-496
],
"parameters": {
"width": 260,
"height": 260,
"content": "\ud83d\udcdd Trigger \u2013 User fills job title, city, country, job type"
},
"typeVersion": 1
},
{
"id": "cf473a7d-be91-4b1d-8111-3fb7183f2436",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-96,
-224
],
"parameters": {
"color": 3,
"height": 300,
"content": "\ud83e\udde0 Format Input \u2013 Prepares input for Indeed scraping\n"
},
"typeVersion": 1
},
{
"id": "5b05e06f-df14-470a-8808-e4efa608f01d",
"name": "Formats form input for Bright Data Indeed API1",
"type": "n8n-nodes-base.code",
"position": [
-48,
-128
],
"parameters": {
"jsCode": "const city = $json[\"City\"] || \"\";\nconst jobTitle = $json[\"Job Title\"] || \"\";\nconst country = $json[\"Country\"] || \"\";\nconst jobType = $json[\"Job_type (Optional)\"] || \"\";\n\nreturn [\n {\n json: {\n input: [\n {\n country: country,\n domain: country === \"FR\" ? \"fr.indeed.com\" : \"indeed.com\",\n keyword_search: jobTitle,\n location: city,\n date_posted: \"Last 7 days\"\n }\n ],\n custom_output_fields: [\n \"jobid\",\n \"company_name\",\n \"date_posted_parsed\",\n \"job_title\",\n \"description_text\",\n \"benefits\",\n \"qualifications\",\n \"location\",\n \"salary_formatted\",\n \"company_rating\",\n \"company_reviews_count\",\n \"country\",\n \"date_posted\",\n \"description\",\n \"region\",\n \"company_link\",\n \"company_website\",\n \"domain\",\n \"apply_link\",\n \"srcname\",\n \"url\",\n \"is_expired\",\n \"discovery_input\",\n \"job_location\",\n \"job_description_formatted\",\n \"logo_url\",\n \"timestamp\",\n \"warning\",\n \"error\",\n \"error_code\",\n \"warning_code\"\n ]\n }\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "e361d724-e78c-448e-9421-50d3524f885b",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
-800
],
"parameters": {
"color": 2,
"width": 260,
"height": 280,
"content": "\ud83d\udce4 Indeed API Call \u2013 Start job search on Indeed\n"
},
"typeVersion": 1
},
{
"id": "cb22ebf9-28a8-499a-9297-5838b7af3065",
"name": "Triggers job scraping on Indeed via Bright Data",
"type": "n8n-nodes-base.httpRequest",
"position": [
0,
-720
],
"parameters": {
"url": "https://api.brightdata.com/datasets/v3/trigger",
"method": "POST",
"options": {},
"jsonBody": "={\n \"input\": [\n {\n \"location\": \"{{$node[\"Triggers workflow from job search form\"].json[\"City\"] ? $node[\"Triggers workflow from job search form\"].json[\"City\"].trim() : \"\"}}\",\n \"keyword\": \"{{$node[\"Triggers workflow from job search form\"].json[\"Job Title\"] ? $node[\"Triggers workflow from job search form\"].json[\"Job Title\"].trim() : \"\"}}\",\n \"country\": \"{{$node[\"Triggers workflow from job search form\"].json[\"Country\"] ? $node[\"Triggers workflow from job search form\"].json[\"Country\"].slice(0, 2).toUpperCase() : \"\"}}\",\n \"time_range\": \"Past week\",\n \"job_type\": \"{{ [\"full-time\", \"part-time\", \"internship\", \"contract\", \"temporary\"].includes($node[\"Triggers workflow from job search form\"].json[\"Job_type\"]?.toLowerCase()) ? $node[\"Triggers workflow from job search form\"].json[\"Job_type\"] : \"\" }}\"\n }\n ],\n \"custom_output_fields\": [\n \"url\",\n \"job_posting_id\",\n \"job_title\",\n \"company_name\",\n \"company_id\",\n \"job_location\",\n \"job_summary\",\n \"job_seniority_level\",\n \"job_function\",\n \"job_employment_type\",\n \"job_industries\",\n \"job_base_pay_range\",\n \"company_url\",\n \"job_posted_time\",\n \"job_num_applicants\",\n \"discovery_input\",\n \"apply_link\",\n \"country_code\",\n \"title_id\",\n \"company_logo\",\n \"job_posted_date\",\n \"job_poster\",\n \"application_availability\",\n \"job_description_formatted\",\n \"base_salary\",\n \"timestamp\",\n \"error\",\n \"error_code\",\n \"warning\",\n \"warning_code\"\n ]\n}\n",
"sendBody": true,
"sendQuery": true,
"sendHeaders": true,
"specifyBody": "json",
"queryParameters": {
"parameters": [
{
"name": "dataset_id",
"value": "gd_lpfll7v5hcqtkxl6l"
},
{
"name": "include_errors",
"value": "true"
},
{
"name": "type",
"value": "discover_new"
},
{
"name": "discover_by",
"value": "keyword"
},
{
"name": "limit_per_input",
"value": "2"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_TOKEN_HERE"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "3af3ac0d-aaed-4644-85cc-7589a9144e8c",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
240,
-784
],
"parameters": {
"color": 4,
"height": 260,
"content": "\u23f3 Check Indeed Status \u2013 Is Indeed data ready?\n"
},
"typeVersion": 1
},
{
"id": "dcf3882a-82e9-44e7-904b-167dd610bce3",
"name": "Checks if Bright Data has completed Indeed scraping",
"type": "n8n-nodes-base.httpRequest",
"position": [
304,
-720
],
"parameters": {
"url": "=https://api.brightdata.com/datasets/v3/progress/{{ $json.snapshot_id }}",
"options": {},
"sendQuery": true,
"sendHeaders": true,
"queryParameters": {
"parameters": [
{
"name": "format",
"value": "json"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_TOKEN_HERE"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "5da46121-ef66-4346-aa4a-20b4d4e6eb18",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
544,
-800
],
"parameters": {
"color": 6,
"height": 280,
"content": "\u2705 Is Indeed Ready? \u2013 Proceed or wait\n"
},
"typeVersion": 1
},
{
"id": "001734bd-e0b4-4b98-bfd3-d260b7cf2c76",
"name": "IF node: Is Indeed data ready?",
"type": "n8n-nodes-base.if",
"position": [
624,
-720
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "35ed620d-b5d5-4e97-bcc5-52b283d85616",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "ready"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "f232138a-f3d4-4aff-a670-6028571aa396",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
832,
-560
],
"parameters": {
"color": 7,
"width": 260,
"height": 240,
"content": "\u23f1\ufe0f Wait \u2013 Retry check after 1 minute\n"
},
"typeVersion": 1
},
{
"id": "31ae32e5-e3a5-49b1-831f-062c967b9230",
"name": "Pauses for 1 minute if data is not yet ready",
"type": "n8n-nodes-base.wait",
"position": [
864,
-512
],
"parameters": {
"unit": "minutes",
"amount": 1
},
"typeVersion": 1.1
},
{
"id": "1ffbbd02-5ad4-4543-bfa0-7366aff7f5b5",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
832,
-864
],
"parameters": {
"color": 4,
"width": 260,
"height": 280,
"content": "\ud83d\udcca Data Found? \u2013 Continue only if jobs found on Indeed\n"
},
"typeVersion": 1
},
{
"id": "d5766191-a99c-412e-adc1-e948f2c8aefe",
"name": "Checks if any Indeed job records exist",
"type": "n8n-nodes-base.if",
"position": [
912,
-736
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "f01bd215-c406-493c-a6e4-2b8ec5686b44",
"operator": {
"type": "number",
"operation": "notEquals"
},
"leftValue": "={{ $json.records }}",
"rightValue": "={{ 0 }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "0969f9b6-2f0e-4fdc-b7d1-f10797b92531",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
1120,
-848
],
"parameters": {
"width": 260,
"height": 260,
"content": "\ud83d\udce5 Get Indeed Jobs \u2013 Fetch results from Bright Data\n\n"
},
"typeVersion": 1
},
{
"id": "0e6d740c-517e-4da8-a7b8-b43c3e34bae4",
"name": "Fetches scraped Indeed data using snapshot ID",
"type": "n8n-nodes-base.httpRequest",
"position": [
1200,
-752
],
"parameters": {
"url": "=https://api.brightdata.com/datasets/v3/snapshot/{{ $json.snapshot_id }}",
"options": {},
"sendQuery": true,
"sendHeaders": true,
"queryParameters": {
"parameters": [
{
"name": "format",
"value": "json"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_TOKEN_HERE"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "8da861b3-df7a-4c6c-bf39-c2b6c6f11029",
"name": "Triggers job scraping on LinkedIn via Bright Data",
"type": "n8n-nodes-base.httpRequest",
"position": [
224,
-128
],
"parameters": {
"url": "https://api.brightdata.com/datasets/v3/trigger",
"method": "POST",
"options": {},
"jsonBody": "={\n \"input\": {{ $json[\"input\"] ? JSON.stringify($json[\"input\"]) : \"[]\" }},\n \"custom_output_fields\": {{ $json[\"custom_output_fields\"] ? JSON.stringify($json[\"custom_output_fields\"]) : \"{}\" }}\n}\n",
"sendBody": true,
"sendQuery": true,
"sendHeaders": true,
"specifyBody": "json",
"queryParameters": {
"parameters": [
{
"name": "dataset_id",
"value": "gd_l4dx9j9sscpvs7no2"
},
{
"name": "include_errors",
"value": "true"
},
{
"name": "type",
"value": "discover_new"
},
{
"name": "discover_by",
"value": "keyword"
},
{
"name": "limit_per_input",
"value": "=2"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_TOKEN_HERE"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "4f1a540c-f076-42b9-a105-bcd9336eaf70",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
160,
-224
],
"parameters": {
"color": 5,
"height": 300,
"content": "\ud83d\udce4 LinkedIn API Call \u2013 Start job search on LinkedIn\n"
},
"typeVersion": 1
},
{
"id": "be52a15f-3950-456f-b026-f9132b0241c0",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
432,
-224
],
"parameters": {
"color": 3,
"width": 260,
"height": 280,
"content": "\u23f3 Check LinkedIn Status \u2013 Is LinkedIn data ready?\n"
},
"typeVersion": 1
},
{
"id": "79052900-596e-4880-946a-72aa636dfebd",
"name": "Checks if LinkedIn scraping is completed",
"type": "n8n-nodes-base.httpRequest",
"position": [
512,
-128
],
"parameters": {
"url": "=https://api.brightdata.com/datasets/v3/progress/{{ $json.snapshot_id }}",
"options": {},
"sendQuery": true,
"sendHeaders": true,
"queryParameters": {
"parameters": [
{
"name": "format",
"value": "json"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_TOKEN_HERE"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "2819bb3c-f0d3-4a99-85e6-2902baac3b7d",
"name": "Sticky Note11",
"type": "n8n-nodes-base.stickyNote",
"position": [
704,
-224
],
"parameters": {
"color": 6,
"width": 220,
"height": 280,
"content": "\u2705 Is LinkedIn Ready? \u2013 Proceed or wait\n"
},
"typeVersion": 1
},
{
"id": "1814afd6-f9b6-4448-ab41-20ce0552e380",
"name": "IF node: Is LinkedIn data ready?",
"type": "n8n-nodes-base.if",
"position": [
752,
-128
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "35ed620d-b5d5-4e97-bcc5-52b283d85616",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "ready"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "e4efd227-5070-4d08-ad2e-a769c27733e3",
"name": "Sticky Note12",
"type": "n8n-nodes-base.stickyNote",
"position": [
992,
144
],
"parameters": {
"color": 7,
"height": 240,
"content": "\u23f1\ufe0f Wait \u2013 Retry LinkedIn status after 1 min\n"
},
"typeVersion": 1
},
{
"id": "514b0926-fe1b-4989-a50e-f3210716b8d2",
"name": "Waits before rechecking LinkedIn scraping",
"type": "n8n-nodes-base.wait",
"position": [
1056,
128
],
"parameters": {
"unit": "minutes",
"amount": 1
},
"typeVersion": 1.1
},
{
"id": "d05d5230-2d8b-4736-aeee-c529b958da77",
"name": "Sticky Note13",
"type": "n8n-nodes-base.stickyNote",
"position": [
960,
-208
],
"parameters": {
"color": 2,
"width": 280,
"height": 260,
"content": "\ud83d\udcca LinkedIn Data Found? \u2013 If yes, continue\n"
},
"typeVersion": 1
},
{
"id": "341fc5a2-5e34-43fb-a84f-0f2451bcbe1c",
"name": "Checks if any LinkedIn job records exist",
"type": "n8n-nodes-base.if",
"position": [
1072,
-144
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "f01bd215-c406-493c-a6e4-2b8ec5686b44",
"operator": {
"type": "number",
"operation": "notEquals"
},
"leftValue": "={{ $json.records }}",
"rightValue": "={{ 0 }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "ebec13ab-6727-4ba5-b2d6-efc0c9982200",
"name": "Fetches scraped LinkedIn data using snapshot ID",
"type": "n8n-nodes-base.httpRequest",
"position": [
1360,
-160
],
"parameters": {
"url": "=https://api.brightdata.com/datasets/v3/snapshot/{{ $json.snapshot_id }}",
"options": {},
"sendQuery": true,
"sendHeaders": true,
"queryParameters": {
"parameters": [
{
"name": "format",
"value": "json"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_TOKEN_HERE"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "1263996f-9d36-41d9-b97b-5e05dadf304a",
"name": "Sticky Note14",
"type": "n8n-nodes-base.stickyNote",
"position": [
1280,
-224
],
"parameters": {
"color": 6,
"width": 260,
"height": 260,
"content": "\ud83d\udce5 Get LinkedIn Jobs \u2013 Fetch LinkedIn job listings\n\n"
},
"typeVersion": 1
},
{
"id": "8ed92618-ca54-444f-a0ce-732000e8fb56",
"name": "Sticky Note15",
"type": "n8n-nodes-base.stickyNote",
"position": [
1808,
-592
],
"parameters": {
"color": 3,
"width": 280,
"height": 260,
"content": "\ud83d\udd17 Merge \u2013 Combine both job sources\n"
},
"typeVersion": 1
},
{
"id": "6c63a361-3288-4a22-b17e-86cca223baf9",
"name": "Combines Indeed + LinkedIn job results",
"type": "n8n-nodes-base.merge",
"position": [
1888,
-528
],
"parameters": {},
"typeVersion": 3.2
},
{
"id": "8bfe2047-5af4-46cc-aa57-021ee6b995f5",
"name": "Sticky Note16",
"type": "n8n-nodes-base.stickyNote",
"position": [
2112,
-592
],
"parameters": {
"color": 4,
"height": 260,
"content": "\ud83d\udcc4 Save to Sheet \u2013 Add job data to \u201cCompare\u201d sheet\n\n"
},
"typeVersion": 1
},
{
"id": "7b5d7dec-9ee3-4e27-995b-5f17168b0d11",
"name": "Saves final job list to Google Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
2144,
-528
],
"parameters": {
"columns": {
"value": {
"Salary ": "={{ $json.salary_formatted }}",
"Location": "={{ $json.discovery_input.location }}",
"Job Title": "={{ $json.job_title }}",
"Job-Type ": "={{ $json.job_location }}",
"Apply Link": "={{ $json.url }}",
"Job Detail": "={{ $json.description_text }}",
"Company Name ": "={{ $json.company_name }}"
},
"schema": [
{
"id": "Company Name ",
"type": "string",
"display": true,
"required": false,
"displayName": "Company Name ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job Title",
"type": "string",
"display": true,
"required": false,
"displayName": "Job Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Location",
"type": "string",
"display": true,
"required": false,
"displayName": "Location",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job Detail",
"type": "string",
"display": true,
"required": false,
"displayName": "Job Detail",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Apply Link",
"type": "string",
"display": true,
"required": false,
"displayName": "Apply Link",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job No. Application",
"type": "string",
"display": true,
"required": false,
"displayName": "Job No. Application",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Salary ",
"type": "string",
"display": true,
"required": false,
"displayName": "Salary ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job-Type ",
"type": "string",
"display": true,
"required": false,
"displayName": "Job-Type ",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 74196869,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xkNBckPDGf4YR74bJQN07tAr3qlEoA-70pQc63nBqZ8/edit#gid=74196869",
"cachedResultName": "Compare"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1xkNBckPDGf4YR74bJQN07tAr3qlEoA-70pQc63nBqZ8",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xkNBckPDGf4YR74bJQN07tAr3qlEoA-70pQc63nBqZ8/edit?usp=drivesdk",
"cachedResultName": "Job Finder sheet"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "3c830d55-1680-435c-b537-bbb3b2587d0f",
"connections": {
"IF node: Is Indeed data ready?": {
"main": [
[
{
"node": "Checks if any Indeed job records exist",
"type": "main",
"index": 0
}
],
[
{
"node": "Pauses for 1 minute if data is not yet ready",
"type": "main",
"index": 0
}
]
]
},
"IF node: Is LinkedIn data ready?": {
"main": [
[
{
"node": "Checks if any LinkedIn job records exist",
"type": "main",
"index": 0
}
],
[
{
"node": "Waits before rechecking LinkedIn scraping",
"type": "main",
"index": 0
}
]
]
},
"Checks if any Indeed job records exist": {
"main": [
[
{
"node": "Fetches scraped Indeed data using snapshot ID",
"type": "main",
"index": 0
}
]
]
},
"Combines Indeed + LinkedIn job results": {
"main": [
[
{
"node": "Saves final job list to Google Sheet",
"type": "main",
"index": 0
}
]
]
},
"Triggers workflow from job search form": {
"main": [
[
{
"node": "Formats form input for Bright Data Indeed API1",
"type": "main",
"index": 0
},
{
"node": "Triggers job scraping on Indeed via Bright Data",
"type": "main",
"index": 0
}
]
]
},
"Checks if LinkedIn scraping is completed": {
"main": [
[
{
"node": "IF node: Is LinkedIn data ready?",
"type": "main",
"index": 0
}
]
]
},
"Checks if any LinkedIn job records exist": {
"main": [
[
{
"node": "Fetches scraped LinkedIn data using snapshot ID",
"type": "main",
"index": 0
}
]
]
},
"Waits before rechecking LinkedIn scraping": {
"main": [
[
{
"node": "Checks if LinkedIn scraping is completed",
"type": "main",
"index": 0
}
]
]
},
"Pauses for 1 minute if data is not yet ready": {
"main": [
[
{
"node": "Checks if Bright Data has completed Indeed scraping",
"type": "main",
"index": 0
}
]
]
},
"Fetches scraped Indeed data using snapshot ID": {
"main": [
[
{
"node": "Combines Indeed + LinkedIn job results",
"type": "main",
"index": 0
}
]
]
},
"Formats form input for Bright Data Indeed API1": {
"main": [
[
{
"node": "Triggers job scraping on LinkedIn via Bright Data",
"type": "main",
"index": 0
}
]
]
},
"Fetches scraped LinkedIn data using snapshot ID": {
"main": [
[
{
"node": "Combines Indeed + LinkedIn job results",
"type": "main",
"index": 1
}
]
]
},
"Triggers job scraping on Indeed via Bright Data": {
"main": [
[
{
"node": "Checks if Bright Data has completed Indeed scraping",
"type": "main",
"index": 0
}
]
]
},
"Triggers job scraping on LinkedIn via Bright Data": {
"main": [
[
{
"node": "Checks if LinkedIn scraping is completed",
"type": "main",
"index": 0
}
]
]
},
"Checks if Bright Data has completed Indeed scraping": {
"main": [
[
{
"node": "IF node: Is Indeed data ready?",
"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.
googleSheetsOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
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 market analysis. It integrates with Bright Data for professional web scraping,…
Source: https://n8n.io/workflows/6371/ — 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.
Disclaimer: this workflow only works on self-hosted instances due to the file system usage.
💼 LinkedIn Job Finder Automation using Bright Data API & Google Sheets
This n8n workflow automatically converts LinkedIn video URLs into downloadable MP4 files using the LinkedIn Video Downloader API, uploads them to Google Drive with public access, and logs both the ori
LinkedIn Hiring Signal Scraper — Jobs & Prospecting Using Bright Data
A comprehensive n8n automation that scrapes Twitter profile data using Bright Data's Twitter dataset and stores comprehensive tweet analytics, user metrics, and engagement data directly into Google Sh