Quick Overview
This workflow runs a SEEK.com.au job search via Apify on a daily schedule or on-demand form submission, deduplicates new listings, and routes results to Google Sheets, Airtable, a webhook endpoint, and digest notifications to Slack, Telegram, Discord, and Gmail.
How it works
- Runs daily at 7 AM or starts when you submit the built-in n8n form with your SEEK search parameters.
- Sends the search criteria to the Apify “unfenced-group/seek-com-au-scraper” actor and retrieves the job results.
- Normalises each job into consistent fields (including an annualised salary estimate) and removes duplicates within the run and across previous executions.
- Aggregates all newly found jobs and formats a single digest message for Slack, Telegram, Discord, and email.
- Sends the digest to the enabled channels (Slack, Telegram, Discord webhook, and/or Gmail) based on the destination values you provided.
- Splits the new jobs back into individual items and, if enabled, appends/updates rows in Google Sheets, creates records in Airtable, and/or POSTs each job to your webhook URL.
- If the scraper returns no data and a notify URL is set, POSTs a “seek_no_results” alert to that endpoint.
Setup
- Add an Apify credential with an API token and ensure the workflow can run the “unfenced-group/seek-com-au-scraper” actor.
- For scheduled runs, edit the “Scheduled Defaults” values (search query, location, days back, max results) and set any destination fields you want to use (leave as YOUR_XXX or blank to skip).
- If using Google Sheets, add a Google Sheets OAuth2 credential, set your spreadsheet ID and tab name, and ensure there is a URL column for matching updates.
- If using Airtable, add an Airtable personal access token, set the base/table IDs, and create fields that match the mapped column names (Title, Company, Location, URL, Salary Annual, etc.).
- If using Slack, Gmail, or Telegram, add the respective OAuth/bot credentials and set the Slack channel name, recipient email address, and Telegram chat ID.
- If using webhooks (generic webhook, Discord, or failure notifications), paste the target webhook URLs into webhookUrl, discordWebhookUrl, and/or notifyUrl.