Back to Catalog

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

IncrementorsIncrementors
4307 views
2/3/2026
Official Page

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:
info@incrementors.com
or fill out this form: https://www.incrementors.com/contact-us/

n8n Form Trigger to Google Sheets

This n8n workflow demonstrates a basic setup for capturing data submitted via an n8n form and storing it in a Google Sheet. It includes a placeholder for an HTTP request and conditional logic, making it a flexible starting point for various data collection and processing tasks.

What it does

This workflow automates the following steps:

  1. Listens for Form Submissions: It starts by waiting for data to be submitted through an n8n form.
  2. Includes Placeholder for HTTP Request: After receiving form data, there's a placeholder for an HTTP Request node, which could be used to send the data to another API or service.
  3. Conditional Logic: The workflow then incorporates an "If" node, allowing for conditional processing based on the submitted form data or the result of the HTTP request.
  4. Merges Data (Placeholder): A "Merge" node is included, suggesting that different branches of the conditional logic could eventually converge.
  5. Waits (Placeholder): A "Wait" node is present, which could be used to introduce a delay in processing.
  6. Executes Custom Code (Placeholder): A "Code" node is available for executing custom JavaScript logic.
  7. Writes to Google Sheets: Finally, the processed data is written to a Google Sheet.
  8. Sticky Notes: Several sticky notes are included for documentation and guidance within the workflow.

Prerequisites/Requirements

To use this workflow, you will need:

  • n8n Instance: A running n8n instance.
  • Google Sheets Account: A Google account with access to Google Sheets.
  • Google Sheets Credential in n8n: You will need to set up a Google Sheets credential in your n8n instance to allow the workflow to write data to your spreadsheets.

Setup/Usage

  1. Import the Workflow:

    • Download the provided JSON file.
    • In your n8n instance, click on "Workflows" in the left sidebar.
    • Click "New" and then "Import from JSON".
    • Paste the JSON content or upload the file.
  2. Configure Credentials:

    • Locate the "Google Sheets" node.
    • Click on the node and then select or create a new "Google Sheets API" credential. Follow the n8n documentation for setting up Google Sheets credentials if needed.
  3. Configure the "On form submission" Trigger:

    • Click on the "On form submission" node.
    • Define the form fields you expect to receive. This will create the structure for the data coming into your workflow.
  4. Customize Placeholders:

    • HTTP Request (Node 19): Configure this node if you need to send the form data to an external API.
    • If (Node 20): Set up your conditional logic based on the data you receive. For example, you might check if a certain field has a specific value.
    • Merge (Node 24): Configure this node if you have multiple branches from the "If" node that need to be combined.
    • Wait (Node 514): Adjust the wait time if you need to introduce a delay.
    • Code (Node 834): Add your custom JavaScript logic here to transform or process the data further.
  5. Configure Google Sheets Node:

    • Click on the "Google Sheets" node.
    • Select the "Operation" (e.g., "Append Row").
    • Specify the "Spreadsheet ID" and "Sheet Name" where you want to store the data.
    • Map the incoming data fields from the form (or previous nodes) to the columns in your Google Sheet.
  6. Activate the Workflow:

    • Once configured, click the "Activate" toggle in the top right corner of the n8n editor to enable the workflow.

Now, whenever the n8n form is submitted, the workflow will execute, process the data according to your configuration, and write it to the specified Google Sheet.

Related Templates

AI-powered code review with linting, red-marked corrections in Google Sheets & Slack

Advanced Code Review Automation (AI + Lint + Slack) Who’s it for For software engineers, QA teams, and tech leads who want to automate intelligent code reviews with both AI-driven suggestions and rule-based linting β€” all managed in Google Sheets with instant Slack summaries. How it works This workflow performs a two-layer review system: Lint Check: Runs a lightweight static analysis to find common issues (e.g., use of var, console.log, unbalanced braces). AI Review: Sends valid code to Gemini AI, which provides human-like review feedback with severity classification (Critical, Major, Minor) and visual highlights (red/orange tags). Formatter: Combines lint and AI results, calculating an overall score (0–10). Aggregator: Summarizes results for quick comparison. Google Sheets Writer: Appends results to your review log. Slack Notification: Posts a concise summary (e.g., number of issues and average score) to your team’s channel. How to set up Connect Google Sheets and Slack credentials in n8n. Replace placeholders (<YOURSPREADSHEETID>, <YOURSHEETGIDORNAME>, <YOURSLACKCHANNEL_ID>). Adjust the AI review prompt or lint rules as needed. Activate the workflow β€” reviews will start automatically whenever new code is added to the sheet. Requirements Google Sheets and Slack integrations enabled A configured AI node (Gemini, OpenAI, or compatible) Proper permissions to write to your target Google Sheet How to customize Add more linting rules (naming conventions, spacing, forbidden APIs) Extend the AI prompt for project-specific guidelines Customize the Slack message formatting Export analytics to a dashboard (e.g., Notion or Data Studio) Why it’s valuable This workflow brings realistic, team-oriented AI-assisted code review to n8n β€” combining the speed of automated linting with the nuance of human-style feedback. It saves time, improves code quality, and keeps your team’s review history transparent and centralized.

higashiyama By higashiyama
90

AI-powered candidate nurturing with scheduled WhatsApp & Gmail follow-ups

What This Workflow Does This workflow automates the candidate nurturing process, solving the common problem of candidates losing interest or "ghosting" after an application. It keeps them engaged and informed by sending a personalized, multi-channel (WhatsApp & Gmail) sequence of follow-up messages over their first week. The automation triggers when a new candidate is added to your ATS (e.g., via a Recrutei webhook). It then uses AI to generate a custom 3-part message (for Day 1, Day 3, and Day 7) tailored to the candidate's age and the specific job they applied for, ensuring a professional and empathetic experience that strengthens your employer brand. How it Works Trigger: A Webhook node captures the new candidate data from your Applicant Tracking System (ATS) or form. Data Preparation: Two Code nodes clean the incoming data. The first (Separating information) extracts key fields and formats the phone number. The second (Extract age) calculates the candidate's age from their birthday to be used by the AI. AI Content Generation: The workflow sends the candidate's details (name, age, job title) to an AI model (AI Recruitment Assistant). The AI has a detailed system prompt to generate three distinct messages for Day 1 (Thank You), Day 3 (Friendly Reminder), and Day 7 (Final Reinforcement), adapting its tone based on the candidate's age. Split Messages: A Code node (Separating messages per days) receives the single text block from the AI and splits it into three separate variables (day1, day3, day7). Day 1 Send: The workflow immediately sends the day1 message via both Gmail and WhatsApp (configured for Evolution API). Day 3 Send: A "Wait" node pauses the workflow for 2 days, after which it sends the day3 message. Day 7 Send: Another "Wait" node pauses for 4 more days, then sends the final day7 message, completing the 7-day nurturing sequence. Setup Instructions This workflow is plug-and-play once you configure the following 5 steps: Webhook Node: Copy the Test URL from the Webhook node and configure it in your ATS (e.g., Recrutei) or form builder to trigger whenever a new candidate is added. Run one test submission to make the data structure visible to n8n. AI Credentials: In the AI Recruitment Assistant node, select or create your OpenAI API credential. MCP Credential (Optional): If you use a Recrutei MCP, paste your endpoint URL into the MCP Recrutei node. Gmail Credentials: In all three Message Gmail nodes (Day 1, 3, 7), select or create your Gmail (OAuth2) credential. Optional:* In the same nodes, go to Options and change the Sender Name from your_company to your actual company name. WhatsApp (Evolution API): This template is pre-configured for the Evolution API. In all three Message WhatsApp nodes (Day 1, 3, 7), you must: URL: Replace {server-url} and {instance} with your Evolution API details. Headers: In the "Header Parameters" section, replace yourapikey with your actual Evolution API key.

Recrutei  AutomaΓ§Γ΅es By Recrutei AutomaΓ§Γ΅es
54

Daily cash flow reports with Google Sheets, Slack & Email for finance teams

Simplify financial oversight with this automated n8n workflow. Triggered daily, it fetches cash flow and expense data from a Google Sheet, analyzes inflows and outflows, validates records, and generates a comprehensive daily report. The workflow sends multi-channel notifications via email and Slack, ensuring finance professionals stay updated with real-time financial insights. πŸ’ΈπŸ“§ Key Features Daily automation keeps cash flow tracking current. Analyzes inflows and outflows for actionable insights. Multi-channel alerts enhance team visibility. Logs maintain a detailed record in Google Sheets. Workflow Process The Every Day node triggers a daily check at a set time. Get Cash Flow Data retrieves financial data from a Google Sheet. Analyze Inflows & Outflows processes the data to identify trends and totals. Validate Records ensures all entries are complete and accurate. If records are valid, it branches to: Sends Email Daily Report to finance team members. Send Slack Alert to notify the team instantly. Logs to Sheet appends the summary data to a Google Sheet for tracking. Setup Instructions Import the workflow into n8n and configure Google Sheets OAuth2 for data access. Set the daily trigger time (e.g., 9:00 AM IST) in the "Every Day" node. Test the workflow by adding sample cash flow data and verifying reports. Adjust analysis parameters as needed for specific financial metrics. Prerequisites Google Sheets OAuth2 credentials Gmail API Key for email reports Slack Bot Token (with chat:write permissions) Structured financial data in a Google Sheet Google Sheet Structure: Create a sheet with columns: Date Cash Inflow Cash Outflow Category Notes Updated At Modification Options Customize the "Analyze Inflows & Outflows" node to include custom financial ratios. Adjust the "Validate Records" filter to flag anomalies or missing data. Modify email and Slack templates with branded formatting. Integrate with accounting tools (e.g., Xero) for live data feeds. Set different trigger times to align with your financial review schedule. Discover more workflows – Get in touch with us

Oneclick AI SquadBy Oneclick AI Squad
619