Track Company Career-Page Jobs in Google Sheets with Apify and n8n
Build a repeatable job log from selected public career pages. Validate each source response before writing rows, then use stable job IDs to keep repeat runs tidy.
Hiring teams often watch several company career pages at once. Listings can live on different applicant-tracking systems, and checking every board by hand makes changes easy to miss. This Apify and n8n workflow collects a bounded snapshot of public listings and stores a consistent job log in Google Sheets.
What the workflow does
The starter reads an existing Jobs tab, starts one run of the Career Page Jobs Scraper on Apify, and waits for that run to finish. Before it writes anything, n8n checks the run status, the HEALTH and COMPANIES reports, and the dataset count. If a response is incomplete or inconsistent, the workflow stops before updating Google Sheets.
Accepted results are upserted using a stable key built from the input scope and job ID. Repeat observations update the matching row instead of creating a duplicate. The first snapshot establishes a baseline; later unseen IDs are logged with a first-seen timestamp.
Workday and other ATS boards
The Actor supports 10 public ATS platforms in one normalized schema, including Workday, Greenhouse, Lever, and Ashby. Start with a company name or enter an exact career-board URL. For Workday, use the complete myworkdayjobs.com board URL; a company name alone may not identify the right board.
Begin with one company, a small row limit, and optional filters turned off. Add companies or filters one at a time after checking the output. Missing salary or posting-date fields can exclude results under strict filters, and row limits can defer older listings to later runs.
Connect credentials safely
Import the inactive workflow, add your own Apify Header Auth credential, and connect Google Sheets with your own OAuth account. The public workflow includes no credentials or private spreadsheet ID. Create a Jobs tab with the included headers, run manually, and inspect the reports and saved rows before activating the daily schedule.
- Paste the supplied header row into a new
Jobstab. - Import the inactive n8n starter and add your own Apify and Google credentials.
- Run one small snapshot and inspect
HEALTH,COMPANIES, and the Sheet. - Run again to check that stable IDs update without duplicate rows.
- Enable the daily schedule only after your manual checks pass.
What the test showed—and what it did not
In the verified Stripe demonstration, the Actor detected Greenhouse and returned a 10-job sample. Three runs each observed 10 jobs; the final Sheet contained 10 unique keys and no duplicates. The source reported 728 open jobs, so the demonstration was deliberately bounded and does not claim to list all 728. Repeat runs produced no newly observed IDs in that test window.
First-seen time is not publication time. A job missing from a later bounded snapshot is not proof that it closed. The starter retains prior rows and does not detect closed positions. Verify important openings on the employer's source page.
Try the workflow
Connect your own accounts, begin with one career board, and verify the first run before enabling a schedule.