Data Processing & Analysisintermediate
November 6, 2025
5 min read
35 minutes
Automated Upwork Job Listings Scraper with Daily Email Alerts: Step-by-Step Guide
Automate Upwork job searches with an n8n workflow that scrapes listings, removes duplicates, and delivers a daily AI-generated email report of relevant gigs.
By Nayma Sultana

If you're a freelancer hunting for gigs on Upwork, you know the drill. You refresh the job board every few hours, scan through dozens of irrelevant postings, and hope you didn't miss that perfect project. It's exhausting, inefficient, and honestly, a terrible use of your time.
What if you could automate the entire process? What if every morning, you woke up to a clean, organized email listing every relevant job posted in the last 24 hours, filtered by your exact keywords, with duplicates removed and everything ready for you to review over coffee?
That's exactly what this n8n workflow does. It scrapes Upwork jobs based on your custom keywords, stores them in Google Sheets, removes duplicates, and sends you a daily AI-generated summary email. No manual checking. No missed opportunities. Just smart automation working on your behalf.
What You'll Need to Get Started
Before diving into the workflow, make sure you have access to these tools and services:
Prerequisites
- n8n account: The automation platform where you'll build this workflow
- Google Sheets: For storing your keywords and job data
- Apify API: To scrape Upwork job listings (you'll need an API token)
- Gmail account: For sending your daily report emails
- OpenAI API: To generate natural language summaries with GPT
Key Components in n8n
This workflow uses several n8n nodes working together:
- Manual Trigger: Starts the workflow on demand
- Google Sheets nodes: Read keywords and store job data
- HTTP Request node: Calls the Apify scraper API
- Code nodes: Process, filter, and deduplicate job listings
- Split in Batches node: Loops through each keyword
- AI Agent with OpenAI: Generates email content
- Gmail node: Sends your daily report
Building Your Upwork Job Scraper: Step by Step
Let's break down how this automation works, from trigger to email delivery.
Step 1: Set Up Your Keyword Library
Start by creating a Google Sheet with all the job keywords you want to track. This could be anything from "AI automation" to "content writing" to "web scraping." The workflow reads this sheet and processes each keyword one by one.
The beauty here is flexibility. Add or remove keywords anytime without touching the workflow itself. Your automation adapts to your changing interests and expertise.
Step 2: Scrape Upwork Jobs Through Apify
Here's where the magic happens. For each keyword, the workflow sends a request to the Apify Upwork scraper API. The scraper searches Upwork with specific parameters:
- Jobs posted within the last 23 hours
- All experience levels (entry, intermediate, expert)
- All client types (no hires, 1 to 9 hires, 10+ hires)
- Up to 100 results per keyword
- Sorted by newest first
img_1.png
The API returns detailed job information including title, description, budget, client rating, location, payment verification status, and more. Everything you need to evaluate an opportunity at a glance.
Step 3: Filter, Store, and Track Performance
Raw data is messy. The workflow runs each batch of jobs through a JavaScript filter that double-checks the timestamp, ensuring you only get jobs truly posted in the last 23 hours. No stale listings sneaking through.
Every job that passes the filter gets saved to your Google Sheet, complete with all the metadata. The workflow also updates a job count column next to each keyword, so you can see at a glance which search terms are producing the most results.
img_2.png
This creates a historical record. Over time, you'll understand which keywords are hot and which are duds, letting you optimize your search strategy.
Step 4: Remove Duplicates Like a Pro
Here's a problem most scrapers ignore: the same job often appears under multiple keywords. If you're tracking both "automation expert" and "n8n specialist," a single job posting might match both searches.
This workflow handles that beautifully. After scraping all keywords, it loads the entire day's data and runs a deduplication algorithm based on job title and description. Only unique opportunities make it to your final report.
img_3.png
The clean data gets saved back to the sheet, overwriting the raw dump. You end up with a pristine list of genuine opportunities, no repeats.
Step 5: Generate and Deliver an AI-Powered Email Summary
Now comes the polish. A JavaScript node formats all your keyword results into a simple summary. Something like: "5 jobs found for AI automation; 3 jobs found for content writing; No jobs found for blockchain development."
That summary gets fed into an AI Agent powered by OpenAI's GPT-4.1 mini model. The AI transforms the raw data into a friendly, readable email with a professional subject line and a well-formatted body.
img_4.png
The result feels human. Not like a robot dumped data into your inbox, but like a helpful assistant curated your morning briefing. The AI respects the data, never invents jobs, and presents everything clearly.
Why This Workflow Changes the Game
This automation solves multiple problems at once. First, it saves hours of manual work every week. Instead of checking Upwork multiple times daily, you review one consolidated report.
Second, it eliminates the fear of missing out. Jobs on Upwork can fill within hours of posting. By scraping every 24 hours and sending immediate reports, you're always in the loop when fresh opportunities appear.
Third, the historical data becomes valuable over time. You'll spot trends, understand seasonal patterns, and refine your keyword strategy based on real performance metrics.
Beyond individual freelancers, agencies can use this workflow to track opportunities for entire teams. Adjust the keywords to match different skill sets, and suddenly everyone gets personalized job alerts without anyone lifting a finger.
The workflow is also highly customizable. Want to adjust the time window from 23 hours to 12? Change one parameter. Need to filter by budget range or client rating? Add a filter node. Want Slack notifications instead of email? Swap the Gmail node for Slack.
Your New Morning Routine Starts Here
Building this workflow takes maybe an hour if you're new to n8n, and far less if you're familiar with the platform. But once it's running, it keeps working day after day, feeding you opportunities while you focus on actually doing the work.
The real power isn't just in the automation. It's in the consistency. Every single day, without fail, you get your report. No forgotten checks. No weekend gaps. Your job pipeline stays full because your workflow never sleeps.
So stop refreshing Upwork like it's a social media feed. Build this workflow, let it do the heavy lifting, and start your mornings with a cup of coffee and a curated list of opportunities waiting for your attention.
That's automation done right.
Share this article
Help others discover this content
Tap and hold the link button above to access your device's native sharing options
More in Data Processing & Analysis
Continue exploring workflows in this category

Data Processing & Analysisintermediate
1 min read
# Build an AI-Powered Conversational Survey Bot with n8n: Turn Static Forms into Dynamic Interviews
Nayma Sultana
Nov 15
Est: 40 minutes

Data Processing & Analysisintermediate
1 min read
Build an AI-Powered YouTube Parser with n8n
Mahedi Hasan Nadvee
Nov 13
Est: 45 minutes

Data Processing & Analysisadvanced
1 min read
Build a Smart AI Chatbot That Actually Knows Your Documents (Using n8n RAG Workflow)
Nayma Sultana
Nov 13
Est: 1 hour