🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 21, 2026

JSearch to Google Sheets, plus Telegram job summaries

Lisa Granqvist Partner Workflow Automation Expert

You find a “perfect” job… then realize you already saved it yesterday. Or you miss a new posting because you didn’t check at the right time. That messy middle is exactly what job tracking automation fixes.

Recruiters feel it when duplicates clutter outreach lists. A job seeker feels it when tabs pile up and nothing is organized. And consultants who source roles for clients? Same headache, just louder.

This workflow pulls fresh JSearch listings into Google Sheets, removes duplicates, and sends you a Telegram summary so you know what changed without babysitting the process.

How This Automation Works

See how this solves the problem:

n8n Workflow Template: JSearch to Google Sheets, plus Telegram job summaries

The Challenge: Keeping a Clean Job Pipeline Without Daily Busywork

Job listings move fast, but your time doesn’t. Checking the same search every day sounds simple until you’re juggling multiple keywords, locations, and “must-have” filters, plus trying to remember what you already saved. Then the duplicates show up: the same role reposted, the same company syndicating across boards, or the same listing found under a slightly different title. Your tracking sheet gets noisy, your confidence drops, and you start second-guessing whether anything in your pipeline is actually new.

The friction compounds. Here’s where it breaks down in real life.

  • You end up spending about 20 minutes a day re-running searches and scanning for “new” posts.
  • Duplicates creep into your sheet, so outreach and follow-ups get confusing.
  • Manual copy-paste leads to missing fields, broken links, and inconsistent formatting.
  • You don’t get a simple daily snapshot, which means you either over-check or forget to check.

The Fix: Daily JSearch → Sheets Logging + Telegram Summary

This workflow runs on a nightly schedule and does the “boring but critical” parts for you. It starts by building a custom job search query (based on keywords, location, and other inputs you control), then fetches matching listings from the JSearch API through RapidAPI. Next, it loads the job IDs you already have stored in Google Sheets, compares them against today’s API results, and removes anything you’ve already captured. Only the truly new roles get appended to your sheet, with a short wait between writes to stay rate-limit-safe. Finally, you receive a Telegram message summarizing how many new jobs were added, so you can decide if it’s worth digging in right now.

The workflow starts with a scheduled trigger, then runs a query against JSearch. After that, it de-dupes by matching against existing Google Sheets job IDs. New listings get written, and Telegram tells you the daily count.

What Changes: Before vs. After

Real-World Impact

Say you track 3 job searches (for different titles or locations) and you log anything promising into a sheet. Manually, that’s maybe 10 minutes per search to run it, open listings, and avoid duplicates, so about 30 minutes a day. With this workflow, you spend a minute updating keywords when needed, then you just wait for the Telegram summary and review the sheet when it says new roles came in. That’s roughly 2 hours back each week, without losing coverage.

Requirements

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets for storing job listings and IDs
  • RapidAPI (JSearch) to fetch daily job postings
  • Telegram Bot token (get it from BotFather in Telegram)

Skill level: Beginner. You’ll connect accounts, paste an API key, and choose what columns your sheet should store.

Need help implementing this? Talk to an automation expert (free 15-minute consultation).

The Workflow Flow

A nightly schedule kicks it off. n8n runs the workflow once per day, so your pipeline updates even if you’re offline (or busy doing actual work).

Your search inputs get turned into a query. The workflow takes your keywords and filters, composes a JSearch request, and uses an HTTP call to pull listings from the API.

Duplicates are removed before anything is saved. It reads existing job IDs from Google Sheets, merges that “already stored” set with the API results, and filters out anything you’ve captured previously. This is the part that keeps your sheet trustworthy.

New jobs get appended safely, then summarized. The workflow iterates through new roles in batches, pauses briefly to avoid hammering Google Sheets, writes rows, and finally sends a Telegram message with the count of newly added jobs.

You can easily modify the search keywords to target different job titles, locations, or seniority based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Schedule Trigger

Set the nightly schedule that starts the workflow and splits into two parallel branches.

  1. Add and open Nightly Schedule Trigger.
  2. Set the schedule rule to run at 22 (hour) using the existing interval configuration.
  3. Confirm the execution split: Nightly Schedule Trigger outputs to both Retrieve Stored Job IDs and Define Search Inputs in parallel.

If you change the run time, adjust the hour in Nightly Schedule Trigger to match your local timezone.

Step 2: Connect Google Sheets

Configure the Google Sheets nodes that read stored IDs and append new jobs.

  1. Open Retrieve Stored Job IDs and set Document and Sheet to [YOUR_GOOGLE_SHEET_HERE].
  2. Credential Required: Connect your googleSheetsOAuth2Api credentials in Retrieve Stored Job IDs.
  3. Open Append Job to Sheet and set Operation to append.
  4. Set Document and Sheet to [YOUR_GOOGLE_SHEET_HERE] in Append Job to Sheet.
  5. Credential Required: Connect your googleSheetsOAuth2Api credentials in Append Job to Sheet.
  6. Verify the column mappings in Append Job to Sheet, including expressions like {{ $('Iterate New Listings').item.json.data.job_id }} and the hyperlink formulas for Apply Link and Google Link.

⚠️ Common Pitfall: The Google Sheet must include columns that match the defined schema (for example, ID, Job Title, Apply Link). Missing columns will cause append failures.

Step 3: Set Up Search Inputs and API Query

Define the job search term, encode it, and call the JSearch API.

  1. Open Define Search Inputs and set the JSON to { "search_query": "[YOUR_JOB_NAME_HERE]" }.
  2. In Compose Search Query, keep the JavaScript that encodes the query string using encodeURIComponent.
  3. Open JSearch API Request and confirm the URL is =https://jsearch.p.rapidapi.com/search?query={{ $json.query }}&page=1&num_pages=10&date_posted=week.
  4. Credential Required: Connect your httpHeaderAuth credentials in JSearch API Request.
  5. Verify Expand API Items uses Field To Split Out set to data and Include set to allOtherFields.

To change the lookback window, edit the date_posted=week parameter in JSearch API Request.

Step 4: Configure Deduplication and Batching

Merge API results with stored IDs, remove duplicates, then branch into counting and batching.

  1. In Merge API with Stored IDs, keep Mode set to chooseBranch and Use Data Of Input set to 2.
  2. In Remove Duplicate Listings, keep the JavaScript that reads IDs from Retrieve Stored Job IDs and returns null to skip duplicates.
  3. Confirm parallel execution after deduplication: Remove Duplicate Listings outputs to both Tally New Listings and Iterate New Listings in parallel.
  4. In Iterate New Listings, keep the batch configuration as-is to process each new listing one at a time.

⚠️ Common Pitfall: If the sheet column for job IDs isn’t named ID, the deduplication script in Remove Duplicate Listings will not filter correctly.

Step 5: Configure Sheet Writes and Telegram Summary

Write new jobs to the sheet with a short pause and send a summary message.

  1. Set Pause Before Sheet Write to wait 2 seconds to reduce API contention.
  2. Ensure Append Job to Sheet is connected after Pause Before Sheet Write and loops back to Iterate New Listings.
  3. In Tally New Listings, keep the JavaScript that counts incoming items and outputs { count }.
  4. In Merge Count with Flow, keep Mode set to chooseBranch and Use Data Of Input set to 2.
  5. Open Telegram Summary Notice and set Chat ID to [YOUR_CHAT_ID_HERE].
  6. Keep the message text as ={{ $json.count }} jobs fetched. | <a href="https://docs.google.com/spreadsheets/d/[YOUR_ID]/edit?gid=0#gid=0">View</a> #Jobs_Wags.
  7. Credential Required: Connect your telegramApi credentials in Telegram Summary Notice.

The summary uses HTML parse mode. Keep the link formatting intact to avoid Telegram message errors.

Step 6: Test and Activate Your Workflow

Run a manual test to validate the API, deduplication, sheet writes, and Telegram summary.

  1. Click Execute Workflow to run Nightly Schedule Trigger manually.
  2. Confirm that new jobs are appended in Append Job to Sheet and that duplicates are skipped in Remove Duplicate Listings.
  3. Verify the summary message from Telegram Summary Notice shows the expected {{ $json.count }}.
  4. Once testing succeeds, toggle the workflow to Active for nightly runs.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Watch Out For

  • RapidAPI (JSearch) credentials can expire or need specific permissions. If things break, check your RapidAPI dashboard and subscription status first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Common Questions

How quickly can I implement this job tracking automation?

About 30 minutes if your accounts are ready.

Can non-technical teams implement this job tracking automation?

Yes. No coding is required, but you will paste an API key and map a few Google Sheets columns.

Is n8n free to use for this job tracking automation workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in RapidAPI (JSearch) usage costs based on your plan.

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

How do I adapt this job tracking automation solution to my specific challenges?

Change the search terms in Define Search Inputs, then adjust how the request is built in Compose Search Query. If your sheet uses different columns, update the field mapping in Append Job to Sheet. Common tweaks include adding locations, filtering out specific companies, and storing extra fields like salary or remote status.

Why is my Google Sheets connection failing in this workflow?

Usually it’s an expired Google authorization in n8n, so reconnect the Google Sheets credential and try again. Also confirm the target spreadsheet is still shared with the connected Google account. If it fails only on writes, you may be hitting quota limits, so increase the wait time and keep the “append” batching in place.

What’s the capacity of this job tracking automation solution?

On n8n Cloud Starter, you can handle a typical daily pull comfortably, and higher plans support more volume. If you self-host, there’s no execution cap, but your server resources and API limits still apply. In practice, most teams run this once per day and write dozens of rows without issues. If you expect hundreds of new items daily, keep the batching and wait step so Google Sheets doesn’t throttle you.

Is this job tracking automation better than using Zapier or Make?

Often, yes, because this workflow relies on de-duplication logic and batching that’s easier to control in n8n. Zapier and Make can do it, but the logic tends to sprawl, and high-volume runs get expensive fast. With n8n you can also self-host for unlimited executions, which matters if you run multiple searches per day. That said, if you only want a simple “new item to sheet” connection with no filtering, Zapier or Make is usually quicker. Talk to an automation expert if you want help picking the simplest option.

A clean job pipeline changes everything, honestly. Let the workflow handle the daily grind so you can focus on applying, messaging, and closing the loop.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal