{
  "name": "Monitor Glassdoor reviews in Google Sheets with Apify",
  "nodes": [
    {
      "id": "8b2e1a4c-0001-4b01-b001-000000000001",
      "name": "Every Monday morning",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        0,
        460
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "weeks",
              "triggerAtDay": [
                1
              ],
              "triggerAtHour": 8
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "8b2e1a4c-0005-4b05-b005-000000000005",
      "name": "Set your companies",
      "type": "n8n-nodes-base.set",
      "position": [
        260,
        460
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "8b2e1a4c-0002-4b02-b+1234567890",
              "name": "companyUrls",
              "type": "array",
              "value": "[\"https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm\", \"https://www.glassdoor.com/Reviews/Microsoft-Reviews-E1651.htm\", \"https://www.glassdoor.com/Reviews/Amazon-Reviews-E6036.htm\"]"
            },
            {
              "id": "8b2e1a4c-0003-4b03-b+1234567890",
              "name": "maxReviewsPerCompany",
              "type": "number",
              "value": 25
            },
            {
              "id": "8b2e1a4c-0004-4b04-b+1234567890",
              "name": "days",
              "type": "number",
              "value": 7
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "8b2e1a4c-0006-4b06-b006-000000000006",
      "name": "Scrape Glassdoor reviews",
      "type": "@apify/n8n-nodes-apify.apify",
      "position": [
        520,
        460
      ],
      "parameters": {
        "memory": 128,
        "actorId": "johnvc~glassdoor-reviews-api",
        "resource": "Actors",
        "operation": "Run actor and get dataset",
        "customBody": "={{ JSON.stringify({ companyUrls: $json.companyUrls, maxReviewsPerCompany: $json.maxReviewsPerCompany, days: $json.days }) }}"
      },
      "typeVersion": 1
    },
    {
      "id": "8b2e1a4c-0008-4b08-b008-000000000008",
      "name": "Keep only reviews",
      "type": "n8n-nodes-base.filter",
      "position": [
        780,
        460
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "8b2e1a4c-0007-4b07-b+1234567890",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.result_type }}",
              "rightValue": "review"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "8b2e1a4c-0015-4b15-b015-000000000015",
      "name": "Pick fields for the sheet",
      "type": "n8n-nodes-base.set",
      "position": [
        1040,
        460
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "8b2e1a4c-0009-4b09-b+1234567890",
              "name": "Company",
              "type": "string",
              "value": "={{ $json.companyName }}"
            },
            {
              "id": "8b2e1a4c-000a-4b0a-b00a-+1234567890a",
              "name": "Date",
              "type": "string",
              "value": "={{ ($json.datePublished || '').slice(0, 10) }}"
            },
            {
              "id": "8b2e1a4c-000b-4b0b-b00b-+1234567890b",
              "name": "Rating",
              "type": "string",
              "value": "={{ $json.overallRating }}"
            },
            {
              "id": "8b2e1a4c-000c-4b0c-b00c-+1234567890c",
              "name": "Review title",
              "type": "string",
              "value": "={{ $json.reviewSummary }}"
            },
            {
              "id": "8b2e1a4c-000d-4b0d-b00d-+1234567890d",
              "name": "Pros",
              "type": "string",
              "value": "={{ $json.pros }}"
            },
            {
              "id": "8b2e1a4c-000e-4b0e-b00e-+1234567890e",
              "name": "Cons",
              "type": "string",
              "value": "={{ $json.cons }}"
            },
            {
              "id": "8b2e1a4c-000f-4b0f-b00f-+1234567890f",
              "name": "Reviewer",
              "type": "string",
              "value": "={{ $json.employmentType }}"
            },
            {
              "id": "8b2e1a4c-0010-4b10-b010-+1234567890",
              "name": "Culture and values",
              "type": "string",
              "value": "={{ $json.ratingCultureValues }}"
            },
            {
              "id": "8b2e1a4c-0011-4b11-b011-+1234567890",
              "name": "Work-life balance",
              "type": "string",
              "value": "={{ $json.ratingWorkLife }}"
            },
            {
              "id": "8b2e1a4c-0012-4b12-b012-+1234567890",
              "name": "Compensation",
              "type": "string",
              "value": "={{ $json.ratingCompensationBenefits }}"
            },
            {
              "id": "8b2e1a4c-0013-4b13-b013-+1234567890",
              "name": "Senior leadership",
              "type": "string",
              "value": "={{ $json.ratingSeniorLeadership }}"
            },
            {
              "id": "8b2e1a4c-0014-4b14-b014-+1234567890",
              "name": "Review URL",
              "type": "string",
              "value": "={{ $json.reviewUrl }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "8b2e1a4c-0016-4b16-b016-000000000016",
      "name": "Append reviews to sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1300,
        460
      ],
      "parameters": {
        "columns": {
          "value": {},
          "mappingMode": "autoMapInputData",
          "matchingColumns": []
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "8b2e1a4c-0017-4b17-b017-000000000017",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -600,
        40
      ],
      "parameters": {
        "width": 520,
        "height": 1060,
        "content": "## Monitor Glassdoor reviews in Google Sheets with Apify\n\nNo Glassdoor API key and no scraping account required. Track what employees say about the companies you watch on Glassdoor: every week this workflow collects their newest reviews and appends one row per review to your sheet, with the star rating, pros, cons, and the per-category ratings breakdown (culture, compensation, work-life balance, leadership).\n\n**Who's it for**\nHR and employer-branding teams tracking their own reputation, recruiters and analysts watching competitors, and founders keeping an eye on employee sentiment.\n\n**How it works**\n1. A schedule trigger fires once a week\n2. The Apify node runs the Glassdoor Reviews API actor for your companies and returns the reviews from the last 7 days\n3. A filter drops any row that is not a real review\n4. The fields you care about are appended to your Google Sheet\n\n**Setup**\n1. Create a free Apify account and add your API token to the Apify credential\n2. Connect your Google account in the Sheets node and pick a spreadsheet\n3. Replace the example companies with the Glassdoor review page URLs you want to watch, then run once to test\n\n**Good to know**\nCollection costs about $0.004 per review. A weekly check of 3 companies usually stays under $0.30.\nActor: https://apify.com/johnvc/glassdoor-reviews-api?fpr=9n7kx3&fp_sid=n8n"
      },
      "typeVersion": 1
    },
    {
      "id": "8b2e1a4c-0018-4b18-b018-000000000018",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -40,
        60
      ],
      "parameters": {
        "color": 7,
        "width": 240,
        "height": 240,
        "content": "### 1. Schedule\nRuns every Monday morning. Change the cadence or swap in a manual trigger."
      },
      "typeVersion": 1
    },
    {
      "id": "8b2e1a4c-0019-4b19-b019-000000000019",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        220,
        60
      ],
      "parameters": {
        "color": 7,
        "width": 240,
        "height": 240,
        "content": "### 2. Your input\nAdd the Glassdoor review page URLs to watch. This is the only node you edit."
      },
      "typeVersion": 1
    },
    {
      "id": "8b2e1a4c-001a-4b1a-b01a-00000000001a",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        500,
        60
      ],
      "parameters": {
        "color": 7,
        "width": 240,
        "height": 240,
        "content": "### 3. Scrape\nRuns the Glassdoor Reviews API actor. Add your Apify credential here."
      },
      "typeVersion": 1
    },
    {
      "id": "8b2e1a4c-001b-4b1b-b01b-00000000001b",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        760,
        60
      ],
      "parameters": {
        "color": 7,
        "width": 240,
        "height": 240,
        "content": "### 4. Clean\nKeeps only real review rows. Anything else is skipped."
      },
      "typeVersion": 1
    },
    {
      "id": "8b2e1a4c-001c-4b1c-b01c-00000000001c",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1020,
        60
      ],
      "parameters": {
        "color": 7,
        "width": 240,
        "height": 240,
        "content": "### 5. Shape\nChoose which review fields become your sheet columns."
      },
      "typeVersion": 1
    },
    {
      "id": "8b2e1a4c-001d-4b1d-b01d-00000000001d",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1280,
        60
      ],
      "parameters": {
        "color": 7,
        "width": 240,
        "height": 240,
        "content": "### 6. Deliver\nPick your spreadsheet and tab. Columns map automatically."
      },
      "typeVersion": 1
    },
    {
      "id": "8b2e1a4c-001e-4b1e-b01e-00000000001e",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        220,
        740
      ],
      "parameters": {
        "color": 7,
        "width": 360,
        "height": 200,
        "content": "### Self-hosting n8n?\nThere is also a dedicated community node for this actor: `n8n-nodes-glassdoor-reviews-api` on npm."
      },
      "typeVersion": 1
    }
  ],
  "settings": {
    "executionOrder": "v1"
  },
  "connections": {
    "Keep only reviews": {
      "main": [
        [
          {
            "node": "Pick fields for the sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set your companies": {
      "main": [
        [
          {
            "node": "Scrape Glassdoor reviews",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Every Monday morning": {
      "main": [
        [
          {
            "node": "Set your companies",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Glassdoor reviews": {
      "main": [
        [
          {
            "node": "Keep only reviews",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Pick fields for the sheet": {
      "main": [
        [
          {
            "node": "Append reviews to sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}