Skip to main content

Job scraping using LinkedIn, Indeed, Bright Data, Google Sheets

Workflow preview

Workflow preview
100%
Job scraping using LinkedIn, Indeed, Bright Data, Google Sheets preview
Open on n8n.io

Important notice

This workflow is provided as-is. Please review and test before using in production.

1. Workflow Overview

LinkedIn & Indeed Job Scraper with Bright Data & Google Sheets Export Overview This n8n workflow automates the process of scraping job listings from both LinkedIn and Indeed platforms simultaneousl...

Best for

  • HR automation workflows
  • advanced n8n builders looking for reusable templates

Tools used

n8n-nodes-base.formtrigger, n8n-nodes-base.stickynote, n8n-nodes-base.code, n8n-nodes-base.httprequest, n8n-nodes-base.if, n8n-nodes-base.wait, n8n-nodes-base.merge, n8n-nodes-base.googlesheets

Source and attribution

This workflow is cataloged by N8N Workflows and links back to its original n8n.io source page by Incrementors.

Original n8n.io source

1.1 Workflow description

Title
Job scraping using LinkedIn, Indeed, Bright Data, Google Sheets
Workflow name
Job scraping using LinkedIn, Indeed, Bright Data, Google Sheets

LinkedIn & Indeed Job Scraper with Bright Data & Google Sheets Export

Overview

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, Google Sheets for data storage, and provides intelligent status monitoring with retry mechanisms.

Workflow Components

1. πŸ“ Trigger Input Form

  • Type: Form Trigger
  • Purpose: Initiates the workflow with user-defined job search criteria
  • Input Fields:
    • City (required)
    • Job Title (required)
    • Country (required)
    • Job Type (optional dropdown: Full-Time, Part-Time, Remote, WFH, Contract, Internship, Freelance)
  • Function: Captures user requirements to start the dual-platform job scraping process

2. 🧠 Format Input for APIs

  • Type: Code Node (JavaScript)
  • Purpose: Prepares and formats user input for both LinkedIn and Indeed APIs
  • Processing:
    • Standardizes location and job title formats
    • Creates API-specific input structures
    • Generates custom output field configurations
  • Function: Ensures compatibility with both Bright Data datasets

3. πŸš€ Start Indeed Scraping

  • Type: HTTP Request (POST)
  • Purpose: Initiates Indeed job scraping via Bright Data
  • Endpoint: https://api.brightdata.com/datasets/v3/trigger
  • Parameters:
    • Dataset ID: gd_lpfll7v5hcqtkxl6l
    • Include errors: true
    • Type: discover_new
    • Discover by: keyword
    • Limit per input: 2
  • Custom Output Fields:
    • jobid, company_name, job_title, description_text
    • location, salary_formatted, company_rating
    • apply_link, url, date_posted, benefits

4. πŸš€ Start LinkedIn Scraping

  • Type: HTTP Request (POST)
  • Purpose: Initiates LinkedIn job scraping via Bright Data (parallel execution)
  • Endpoint: https://api.brightdata.com/datasets/v3/trigger
  • Parameters:
    • Dataset ID: gd_l4dx9j9sscpvs7no2
    • Include errors: true
    • Type: discover_new
    • Discover by: keyword
    • Limit per input: 2
  • Custom Output Fields:
    • job_posting_id, job_title, company_name, job_location
    • job_summary, job_employment_type, job_base_pay_range
    • apply_link, url, job_posted_date, company_logo

5. πŸ”„ Check Indeed Status

  • Type: HTTP Request (GET)
  • Purpose: Monitors Indeed scraping job progress
  • Endpoint: https://api.brightdata.com/datasets/v3/progress/{snapshot_id}
  • Function: Checks if Indeed dataset scraping is complete

6. πŸ”„ Check LinkedIn Status

  • Type: HTTP Request (GET)
  • Purpose: Monitors LinkedIn scraping job progress
  • Endpoint: https://api.brightdata.com/datasets/v3/progress/{snapshot_id}
  • Function: Checks if LinkedIn dataset scraping is complete

7. ⏱️ Wait Nodes (60 seconds each)

  • Type: Wait Node
  • Purpose: Implements intelligent polling mechanism
  • Duration: 1 minute
  • Function: Pauses workflow before rechecking scraping status to prevent API overload

8. βœ… Verify Indeed Completion

  • Type: IF Condition
  • Purpose: Evaluates Indeed scraping completion status
  • Condition: status === "ready"
  • Logic:
    • True: Proceeds to data validation
    • False: Loops back to status check with wait

9. βœ… Verify LinkedIn Completion

  • Type: IF Condition
  • Purpose: Evaluates LinkedIn scraping completion status
  • Condition: status === "ready"
  • Logic:
    • True: Proceeds to data validation
    • False: Loops back to status check with wait

10. πŸ“Š Validate Indeed Data

  • Type: IF Condition
  • Purpose: Ensures Indeed returned job records
  • Condition: records !== 0
  • Logic:
    • True: Proceeds to fetch Indeed data
    • False: Skips Indeed data retrieval

11. πŸ“Š Validate LinkedIn Data

  • Type: IF Condition
  • Purpose: Ensures LinkedIn returned job records
  • Condition: records !== 0
  • Logic:
    • True: Proceeds to fetch LinkedIn data
    • False: Skips LinkedIn data retrieval

12. πŸ“₯ Fetch Indeed Data

  • Type: HTTP Request (GET)
  • Purpose: Retrieves final Indeed job listings
  • Endpoint: https://api.brightdata.com/datasets/v3/snapshot/{snapshot_id}
  • Format: JSON
  • Function: Downloads completed Indeed job data

13. πŸ“₯ Fetch LinkedIn Data

  • Type: HTTP Request (GET)
  • Purpose: Retrieves final LinkedIn job listings
  • Endpoint: https://api.brightdata.com/datasets/v3/snapshot/{snapshot_id}
  • Format: JSON
  • Function: Downloads completed LinkedIn job data

14. πŸ”— Merge Results

  • Type: Merge Node
  • Purpose: Combines Indeed and LinkedIn job results
  • Mode: Merge all inputs
  • Function: Creates unified dataset from both platforms

15. πŸ“Š Save to Google Sheet

  • Type: Google Sheets Node
  • Purpose: Exports combined job data for analysis
  • Operation: Append rows
  • Target: "Compare" sheet in specified Google Sheet document
  • Data Mapping:
    • Job Title, Company Name, Location
    • Job Detail (description), Apply Link
    • Salary, Job Type, Discovery Input

Workflow Flow

Input Form β†’ Format APIs β†’ [Indeed Trigger] + [LinkedIn Trigger]
                              ↓                    ↓
                        Check Status         Check Status
                              ↓                    ↓
                         Wait 60s            Wait 60s
                              ↓                    ↓
                        Verify Ready        Verify Ready
                              ↓                    ↓
                       Validate Data       Validate Data
                              ↓                    ↓
                        Fetch Indeed       Fetch LinkedIn
                              ↓                    ↓
                              └─── Merge Results β”€β”€β”€β”˜
                                       ↓
                               Save to Google Sheet

Configuration Requirements

API Keys & Credentials

  • Bright Data API Key: Required for both LinkedIn and Indeed scraping
  • Google Sheets OAuth2: For data storage and export access
  • n8n Form Webhook: For user input collection

Setup Parameters

  • Google Sheet ID: Target spreadsheet identifier
  • Sheet Name: "Compare" tab for job data export
  • Form Webhook ID: User input form identifier
  • Dataset IDs:
    • Indeed: gd_lpfll7v5hcqtkxl6l
    • LinkedIn: gd_l4dx9j9sscpvs7no2

Key Features

Dual Platform Scraping

  • Simultaneous LinkedIn and Indeed job searches
  • Parallel processing for faster results
  • Comprehensive job market coverage
  • Platform-specific field extraction

Intelligent Status Monitoring

  • Real-time scraping progress tracking
  • Automatic retry mechanisms with 60-second intervals
  • Data validation before processing
  • Error handling and timeout management

Smart Data Processing

  • Unified data format from both platforms
  • Intelligent field mapping and standardization
  • Duplicate detection and removal
  • Rich metadata extraction

Google Sheets Integration

  • Automatic data export and storage
  • Organized comparison format
  • Historical job search tracking
  • Easy sharing and collaboration

Form-Based Interface

  • User-friendly job search form
  • Flexible job type filtering
  • Multi-country support
  • Real-time workflow triggering

Use Cases

Personal Job Search

  • Comprehensive multi-platform job hunting
  • Automated daily job searches
  • Organized opportunity comparison
  • Application tracking and management

Recruitment Services

  • Client job search automation
  • Market availability assessment
  • Competitive salary analysis
  • Bulk candidate sourcing

Market Research

  • Job market trend analysis
  • Salary benchmarking studies
  • Skills demand assessment
  • Geographic opportunity mapping

HR Analytics

  • Competitor hiring intelligence
  • Role requirement analysis
  • Compensation benchmarking
  • Talent market insights

Technical Notes

  • Polling Interval: 60-second status checks for both platforms
  • Result Limiting: Maximum 2 jobs per input per platform
  • Data Format: JSON with structured field mapping
  • Error Handling: Comprehensive error tracking in all API requests
  • Retry Logic: Automatic status rechecking until completion
  • Country Support: Adaptable domain selection (indeed.com, fr.indeed.com)
  • Form Validation: Required fields with optional job type filtering
  • Merge Strategy: Combines all results from both platforms
  • Export Format: Standardized Google Sheets columns for easy analysis

Sample Data Output

Field Description Example
Job Title Position title "Senior Software Engineer"
Company Name Hiring organization "Tech Solutions Inc."
Location Job location "San Francisco, CA"
Job Detail Full description "We are seeking a senior developer..."
Apply Link Direct application URL "https://company.com/careers/123"
Salary Compensation info "$120,000 - $150,000"
Job Type Employment details "Full-time, Remote"

Setup Instructions

  1. Import Workflow: Copy JSON configuration into n8n
  2. Configure Bright Data: Add API credentials for both datasets
  3. Setup Google Sheets: Create target spreadsheet and configure OAuth
  4. Update References: Replace placeholder IDs with your actual values
  5. Test Workflow: Submit test form and verify data export
  6. Activate: Enable workflow and share form URL with users



For any questions or support, please contact:
[email protected]
or fill out this form: https://www.incrementors.com/contact-us/

1.2 Logical Blocks

This catalog entry is organized from the workflow JSON. The node-level section below shows the executable blocks available for review before importing the template.

2. Block-by-Block Analysis

Block 1 - Triggers workflow from job search form

Type / Role
n8n-nodes-base.formTrigger - formTrigger
Config choices
Version 2.2

Block 2 - Sticky Note

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 3 - Sticky Note1

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 4 - Sticky Note2

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 5 - Formats form input for Bright Data Indeed API1

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 6 - Sticky Note3

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 7 - Triggers job scraping on Indeed via Bright Data

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 8 - Sticky Note4

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 9 - Checks if Bright Data has completed Indeed scraping

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 10 - Sticky Note5

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 11 - IF node: Is Indeed data ready?

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

Block 12 - Sticky Note6

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 13 - Pauses for 1 minute if data is not yet ready

Type / Role
n8n-nodes-base.wait - wait
Config choices
Version 1.1

Block 14 - Sticky Note7

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 15 - Checks if any Indeed job records exist

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

Block 16 - Sticky Note8

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 17 - Fetches scraped Indeed data using snapshot ID

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 18 - Triggers job scraping on LinkedIn via Bright Data

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 19 - Sticky Note9

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 20 - Sticky Note10

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 21 - Checks if LinkedIn scraping is completed

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 22 - Sticky Note11

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 23 - IF node: Is LinkedIn data ready?

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

Block 24 - Sticky Note12

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Showing the first 24 of 33 workflow blocks. Download the JSON for the full node graph.

3. Summary Table

Workflow Job scraping using LinkedIn, Indeed, Bright Data, Google Sheets
Complexity advanced
Nodes 33
Categories HR
Author Incrementors
Published 24 Jul 2025

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/6371/6371.json as the source template for this automation.

  2. 2. Import the template into n8n

    Open n8n, import the downloaded JSON, and review each node before activating the workflow.

  3. 3. Configure credentials and variables

    Replace placeholder credentials, API keys, webhook URLs, account IDs, and environment-specific values with your own settings.

  4. 4. Test with sample data

    Run the workflow manually or in a staging workspace, inspect node output, and confirm downstream systems receive the expected data.

  5. 5. Activate and monitor

    Enable the workflow only after testing, then monitor executions, errors, and rate limits during the first production runs.

5. General Notes & Resources

Review imported nodes carefully before activation. This catalog entry is intended to help you inspect the workflow structure, understand required services, and find related templates faster.

Node names, credentials, schedules, webhook paths, and external service limits may need adjustment for your workspace.

Frequently asked questions

What does Job scraping using LinkedIn, Indeed, Bright Data, Google Sheets do?

LinkedIn & Indeed Job Scraper with Bright Data & Google Sheets Export Overview This n8n workflow automates the process of scraping job listings from both LinkedIn and Indeed platforms simultaneousl...

What do I need before importing this workflow?

Review the workflow JSON, configure any required credentials in n8n, and test the automation in a safe workspace before using it in production.

Can I customize this workflow?

Yes. Use the block-by-block analysis and the downloadable JSON to inspect each node, then adjust credentials, prompts, schedules, filters, or destinations for your HR use case.