{
  "id": "CKmCHe6ST5Fn0bDm",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Glassdoor Job Finder: Bright Data Scraping + Keyword-Based Automation",
  "tags": [],
  "nodes": [
    {
      "id": "ce3a7e97-41b6-49fc-ae23-cbf65044a974",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -800,
        0
      ],
      "parameters": {
        "options": {},
        "formTitle": "Search Job Listings Using Keywords",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Location"
            },
            {
              "fieldLabel": "Search Job type"
            },
            {
              "fieldLabel": "country"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "10cbb574-3967-490a-9c57-c1140a04af00",
      "name": "Check Delivery Status of Snap ID",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -280,
        0
      ],
      "parameters": {
        "url": "=https://api.brightdata.com/datasets/v3/progress/{{ $json.snapshot_id }}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer YOUR_TOKEN_HERE"
            }
          ]
        }
      },
      "typeVersion": 4.2,
      "alwaysOutputData": true
    },
    {
      "id": "c1090f01-84ab-4586-8c0e-4a2f3a5fc389",
      "name": "Check Final Status",
      "type": "n8n-nodes-base.if",
      "position": [
        220,
        0
      ],
      "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": "1cc8376f-393f-48cc-8bb3-93cfafa28d58",
      "name": "Wait 1 minute",
      "type": "n8n-nodes-base.wait",
      "position": [
        -20,
        0
      ],
      "parameters": {
        "unit": "minutes",
        "amount": 1
      },
      "typeVersion": 1.1
    },
    {
      "id": "c9157c5c-bcab-462c-9ace-6f5e456e186c",
      "name": "Scrap data",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -580,
        0
      ],
      "parameters": {
        "url": "https://api.brightdata.com/datasets/v3/trigger",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"input\": [\n    {\n      \"keyword\": \"{{ $json['Search Job type'] }}\",\n      \"location\": \"{{ $json['Location'] }}\",\n      \"country\": \"{{ $json['country'] }}\"\n    }\n  ],\n  \"custom_output_fields\": [\n    \"url\",\n    \"company_name\",\n    \"company_rating\",\n    \"job_title\",\n    \"job_location\",\n    \"company_website\"\n  ]\n}",
        "sendBody": true,
        "sendQuery": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "queryParameters": {
          "parameters": [
            {
              "name": "dataset_id",
              "value": "gd_lpfbbndm1xnopbrcr0"
            },
            {
              "name": "include_errors",
              "value": "true"
            },
            {
              "name": "type",
              "value": "discover_new"
            },
            {
              "name": "discover_by",
              "value": "keyword"
            },
            {
              "name": "limit_per_input",
              "value": "5"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer YOUR_TOKEN_HERE"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "f1a0e9ed-ced0-4eb6-8eeb-6c7537c7822f",
      "name": "Getting Job Lists",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        480,
        -20
      ],
      "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": "558543dc-af03-4033-990a-d850614150fe",
      "name": "Update List",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        820,
        -20
      ],
      "parameters": {
        "columns": {
          "value": {
            "Rating": "={{ $json.company_rating }}",
            "Job Link": "={{ $json.company_website }}",
            "Location": "={{ $json.job_location }}",
            "Job Title": "={{ $json.job_title }}",
            "Company Name": "={{ $json.company_name }}"
          },
          "schema": [
            {
              "id": "Job Title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Job Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Company Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Company Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Location",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Rating",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Rating",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Salary Estimate",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Salary Estimate",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Posted Date",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Job Posted Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Link",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Job Link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Job Link"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 193286695,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit#gid=193286695",
          "cachedResultName": "Glassdoor Scraper by keyword"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_GOOGLE_SHEET_ID",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit?usp=drivesdk",
          "cachedResultName": "Data Scraper Yelp, Glassdoor,Tictok"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "2ad5e448-ae48-4ae8-a8e7-243101810613",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -880,
        -100
      ],
      "parameters": {
        "height": 260,
        "content": "Triggers the workflow when the user submits the job type, location, and country via form."
      },
      "typeVersion": 1
    },
    {
      "id": "02a1a60f-b11f-4981-81c3-c4e86f2e95d2",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -620,
        -100
      ],
      "parameters": {
        "color": 2,
        "width": 260,
        "height": 260,
        "content": "Calls Bright Data API to initiate scraping Glassdoor job listings based on the form input (keyword, location, country)."
      },
      "typeVersion": 1
    },
    {
      "id": "32d05b44-e78e-4f09-9626-c25bbc1b8c6b",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -60,
        -100
      ],
      "parameters": {
        "color": 3,
        "width": 220,
        "height": 260,
        "content": "Pauses the workflow for 1 minute before rechecking status (to allow data generation)."
      },
      "typeVersion": 1
    },
    {
      "id": "b7085f2b-c2ae-4f68-926d-ca6658ea9215",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -340,
        -100
      ],
      "parameters": {
        "color": 5,
        "width": 260,
        "height": 260,
        "content": "Checks the scraping task's status using Bright Data snapshot ID to monitor progress."
      },
      "typeVersion": 1
    },
    {
      "id": "eee21db7-8bad-4c59-9dcd-ab95eb5501c9",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        420,
        -100
      ],
      "parameters": {
        "color": 7,
        "width": 280,
        "height": 280,
        "content": "Conditional node that checks if Bright Data has marked the scraping job as \"ready\". Loops back to check if not ready."
      },
      "typeVersion": 1
    },
    {
      "id": "9b59c3c5-8e07-4082-a8b9-6657055d4e5f",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        720,
        -120
      ],
      "parameters": {
        "color": 4,
        "width": 280,
        "height": 340,
        "content": "Appends or updates job data (title, company, rating, location, link) in Google Sheets under the \"Glassdoor Scraper by keyword\" tab."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "24dfda04-3ea1-45c2-bbf3-ef335974f595",
  "connections": {
    "Scrap data": {
      "main": [
        [
          {
            "node": "Check Delivery Status of Snap ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 1 minute": {
      "main": [
        [
          {
            "node": "Check Final Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Getting Job Lists": {
      "main": [
        [
          {
            "node": "Update List",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Final Status": {
      "main": [
        [
          {
            "node": "Getting Job Lists",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Check Delivery Status of Snap ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "Scrap data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Delivery Status of Snap ID": {
      "main": [
        [
          {
            "node": "Wait 1 minute",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}