Indeed jobs to Google Sheets with n8n
Turn a role and location into a spreadsheet of job listings. This downloadable workflow checks existing URLs before writing new rows.
Download workflow JSONWhat you get
Manual run → search settings → read existing sheet → collect up to 20 jobs → validate and deduplicate → save rows. Indeed is the default. Collection runs in your Apify account using our independently maintained Multi Job Board Scraper, not an official Indeed API.
1. Prepare your accounts and sheet
You need n8n, an Apify account and a Google account with access to Google Sheets. Create a spreadsheet tab named Jobs. Paste these exact column headers into its first row:
jobUrl title company location jobBoard collectedAtKeep this sheet dedicated to the workflow. Missing salaries and descriptions are not invented; this starter exports only the six fields above.
2. Import and connect credentials
Import the downloaded JSON into n8n. In Search settings, replace the spreadsheet ID and edit the role and US location. Connect your Google Sheets credential to both spreadsheet nodes. In Fetch up to 20 jobs, create a Header Auth credential: header name Authorization, value Bearer followed by a space and your Apify token. Store the token only in the credential, never in the workflow JSON or a public screenshot.
3. Test before scheduling
Execute manually, inspect the Apify run and compare the returned titles, locations and URLs with your sheet. Run it again to check URL deduplication. A valid empty result means no rows are written. Invalid response shapes or unsafe URLs stop the workflow before the write step. Source coverage is not exhaustive and a 20-result cap does not guarantee 20 jobs.
The embedded transformation and workflow configuration have automated checks. This starter has not yet been executed end to end with connected n8n and Google Sheets accounts; credential selection or field mapping may need adjustment for your n8n version. It is not a verified n8n marketplace template.
Costs and failure handling
Each collection request has a $0.10 maximum Actor charge and a 120-second Actor timeout. Check current Apify pricing before running; your n8n subscription and other service charges are separate. The workflow is inactive and has no schedule. Automatic request retries are off: after a timeout, check Apify Runs before starting another paid request.
Deduplication uses job URLs already saved in Sheets, not Actor-side onlyNewJobs state. This allows you to recover from a failed sheet write without deliberately consuming unseen-job history. URL changes can still create duplicates. Run only one execution at a time; read-then-write is not a transaction. Sheets is suited to a small monitor, not a large job database.
Make it a daily monitor
After your manual tests succeed, replace the manual trigger with an n8n Schedule Trigger, choose a daily time and timezone, and configure execution error notifications. Set a monthly spending limit in your accounts. Review source outcomes in Apify when output unexpectedly drops. Add Slack or email only after the sheet is saving reliably.
Documentation and next steps
We maintain the paid Actor linked here. This workflow is free to download. See n8n HTTP Request documentation and the Apify synchronous dataset API. Neither platform endorses this starter.
Job monitoring guide