AutomationFlowsSocial Media › Scrape Jobs from Indeed, LinkedIn & More to Google Sheets

Scrape Jobs from Indeed, LinkedIn & More to Google Sheets

Original n8n title: Scrape Jobs From Indeed, Linkedin & More with Rapidapi to Google Sheets

BySk developer @skdeveloper on n8n.io

This powerful Active Job Scraper workflow uses the RapidAPI Jobs Search Realtime Data API to fetch real-time job listings from leading job boards like Indeed, LinkedIn, ZipRecruiter, and Glassdoor.

Event trigger★★★★☆ complexity9 nodesGoogle SheetsForm TriggerHTTP Request
Social Media Trigger: Event Nodes: 9 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #8250 — 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 →

Download .json
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "6f007549-c9e9-445a-ac4b-bc86ae037257",
      "name": "Re Format",
      "type": "n8n-nodes-base.code",
      "position": [
        500,
        0
      ],
      "parameters": {
        "jsCode": "return $input.first().json.jobs;"
      },
      "typeVersion": 2
    },
    {
      "id": "fcf6b6ef-d3db-4142-9479-eb74c8f35ac2",
      "name": "Append In Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        760,
        0
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "success",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "success",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "courses",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "courses",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "totalItems",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "totalItems",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "currentPage",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "currentPage",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "totalPages",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "totalPages",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "",
          "cachedResultUrl": "",
          "cachedResultName": "Course "
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "2b02f1cf-7936-45f1-902d-2b3cc8329b1f",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        0,
        0
      ],
      "parameters": {
        "options": {},
        "formTitle": "Active Job Scraper ",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Location",
              "requiredField": true
            },
            {
              "fieldLabel": "search term",
              "requiredField": true
            },
            {
              "fieldLabel": "job type",
              "requiredField": true
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "is remote",
              "fieldOptions": {
                "values": [
                  {
                    "option": "true"
                  },
                  {
                    "option": "false"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldType": "number",
              "fieldLabel": "Result",
              "placeholder": "10",
              "requiredField": true
            }
          ]
        },
        "formDescription": "Active Job Scraper "
      },
      "typeVersion": 2.2
    },
    {
      "id": "16f5e9f9-46ba-48e4-a5e1-31199ee86e9f",
      "name": "Scarp Active Jobs",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        260,
        0
      ],
      "parameters": {
        "url": "https://jobs-search-realtime-data.p.rapidapi.com/getjobs",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"location\": \"{{ $json['Location'] }}\",\n  \"search_term\": \"{{ $json['search term'] }}\",\n  \"results_wanted\": {{ $json.Result }},\n  \"site_name\": [\n    \"indeed\",\n    \"linkedin\",\n    \"zip_recruiter\",\n    \"glassdoor\"\n  ],\n  \"distance\": 50,\n  \"job_type\": \"{{ $json['job type'] }}\",\n  \"is_remote\": {{ $json['is remote'] }},\n  \"linkedin_fetch_description\": true,\n  \"hours_old\": 24\n}\n",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "x-rapidapi-host",
              "value": "jobs-search-realtime-data.p.rapidapi.com"
            },
            {
              "name": "x-rapidapi-key",
              "value": "your key"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "3b3b7619-760c-458d-8bc1-a8ed7656b154",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1040,
        -360
      ],
      "parameters": {
        "width": 880,
        "height": 760,
        "content": "# Active Job Scraper Workflow\n\nAutomate your job search data collection with this powerful **Active Job Scraper** workflow built in **n8n**. This workflow leverages the [Jobs Search Realtime Data API](https://rapidapi.com/skdeveloper/api/jobs-search-realtime-data) from **RapidAPI** to scrape job listings from top platforms including **Indeed**, **LinkedIn**, **ZipRecruiter**, and **Glassdoor**.\n\n---\n\n## Key Features\n\n- Submit job search parameters such as location, search term, job type, remote option, and number of results through an easy-to-use form.  \n- Fetch fresh, real-time job listings from **Indeed**, **LinkedIn**, **ZipRecruiter**, and **Glassdoor** using the RapidAPI **Jobs Search Realtime Data API**.  \n- Get detailed job descriptions and metadata from these major job sites.  \n- Automatically format and append the scraped job data into Google Sheets for easy analysis.\n\n---\n\n## Why Use This Workflow?\n\n- Seamlessly scrape jobs across the leading job boards: **Indeed**, **LinkedIn**, **ZipRecruiter**, and **Glassdoor**.  \n- Leverage the power of the RapidAPI **Jobs Search Realtime Data API** to collect comprehensive and up-to-date listings.  \n- Customize the search to include remote options, job types, and distance filters across these four job sites.  \n- Organize and track your results effortlessly in Google Sheets.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "6c7a849a-d8c6-4308-94a0-61a6a8fca4df",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -60,
        -120
      ],
      "parameters": {
        "height": 280,
        "content": "Gather user inputs including location, job type, remote status, etc."
      },
      "typeVersion": 1
    },
    {
      "id": "0b446c9e-0637-47c3-a325-1dc1b0bbb57e",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        200,
        -120
      ],
      "parameters": {
        "height": 280,
        "content": "Query RapidAPI\u2019s **Jobs Search Realtime Data API** for jobs on **Indeed**, **LinkedIn**, **ZipRecruiter**, and **Glassdoor**."
      },
      "typeVersion": 1
    },
    {
      "id": "31401bd3-c135-488f-9b33-adfabf152f66",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        460,
        -120
      ],
      "parameters": {
        "height": 280,
        "content": "Extract and reshape the jobs array from the API response. "
      },
      "typeVersion": 1
    },
    {
      "id": "c76951a2-a734-41c5-8c2b-035ff2876d85",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        720,
        -120
      ],
      "parameters": {
        "height": 280,
        "content": "Append the scraped job listings to your Google Sheets document."
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Re Format": {
      "main": [
        [
          {
            "node": "Append In Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scarp Active Jobs": {
      "main": [
        [
          {
            "node": "Re Format",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "Scarp Active Jobs",
            "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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This powerful Active Job Scraper workflow uses the RapidAPI Jobs Search Realtime Data API to fetch real-time job listings from leading job boards like Indeed, LinkedIn, ZipRecruiter, and Glassdoor.

Source: https://n8n.io/workflows/8250/ — original creator credit. Request a take-down →

More Social Media workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Social Media

Disclaimer: this workflow only works on self-hosted instances due to the file system usage.

Execute Workflow Trigger, HTTP Request, Form Trigger +3
Social Media

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

Form Trigger, HTTP Request, Google Sheets
Social Media

💼 LinkedIn Job Finder Automation using Bright Data API & Google Sheets

Form Trigger, HTTP Request, Google Sheets
Social Media

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

Form Trigger, HTTP Request, Google Drive +1
Social Media

LinkedIn Hiring Signal Scraper — Jobs & Prospecting Using Bright Data

HTTP Request, Form Trigger, Google Sheets