Skip to main content

Scrape Upwork job listings & generate daily email reports with Apify & Google Sheets

Workflow preview

Workflow preview
100%
Scrape Upwork job listings & generate daily email reports with Apify & Google Sheets preview
Open on n8n.io

Important notice

This workflow is provided as-is. Please review and test before using in production.

1. Workflow Overview

This automated n8n workflow scrapes job listings from Upwork using Apify, processes and cleans the data, and generates daily email reports with job summaries. The system uses Google Sheets for data...

Best for

  • Market Research automation workflows
  • advanced n8n builders looking for reusable templates

Tools used

n8n-nodes-base.googlesheets, n8n-nodes-base.splitinbatches, n8n-nodes-base.manualtrigger, n8n-nodes-base.httprequest, n8n-nodes-base.wait, n8n-nodes-base.code, n8n-nodes-base.gmail, n8n-nodes-base.stickynote

Source and attribution

This workflow is cataloged by N8N Workflows and links back to its original n8n.io source page by Oneclick AI Squad.

Original n8n.io source

1.1 Workflow description

Title
Scrape Upwork job listings & generate daily email reports with Apify & Google Sheets
Workflow name
Scrape Upwork job listings & generate daily email reports with Apify & Google Sheets

This automated n8n workflow scrapes job listings from Upwork using Apify, processes and cleans the data, and generates daily email reports with job summaries. The system uses Google Sheets for data storage and keyword management, providing a comprehensive solution for tracking relevant job opportunities and market trends.

What is Apify?

Apify is a web scraping and automation platform that provides reliable APIs for extracting data from websites like Upwork. It handles the complexities of web scraping including rate limiting, proxy management, and data extraction while maintaining compliance with website terms of service.

Good to Know

  • Apify API calls may incur costs based on usage; check Apify pricing for details
  • Google Sheets access must be properly authorized to avoid data sync issues
  • The workflow includes data cleaning and deduplication to ensure high-quality results
  • Email reports provide structured summaries for easy review and decision-making
  • Keyword management through Google Sheets allows for flexible job targeting

How It Works

The workflow is organized into three main phases:

Phase 1: Job Scraping & Initial Processing This phase handles the core data collection and initial storage:

  1. Trigger Manual Run - Manually starts the workflow for on-demand job scraping
  2. Fetch Keywords from Google Sheet - Reads the list of job-related keywords from the All Keywords sheet
  3. Loop Through Keywords - Iterates over each keyword to trigger Apify scraping
  4. Trigger Apify Scraper - Sends HTTP request to start Apify actor for job scraping
  5. Wait for Apify Completion - Waits for the Apify actor to finish execution
  6. Delay Before Dataset Read - Waits a few seconds to ensure dataset is ready for processing
  7. Fetch Scraped Job Dataset - Fetches the latest dataset from Apify
  8. Process Raw Job Data - Filters jobs posted in the last 24 hours and formats the data
  9. Save Jobs to Daily Sheet - Appends new job data to the daily Google Sheet
  10. Update Keyword Job Count - Updates job count in the All Keywords summary sheet

Phase 2: Data Cleaning & Deduplication This phase ensures data quality and removes duplicates:

  1. Load Today's Daily Jobs - Loads all jobs added in today's sheet for processing
  2. Remove Duplicates by Title/Desc - Removes duplicates based on title and description matching
  3. Save Clean Job Data - Saves the cleaned, unique entries back to the sheet
  4. Clear Old Daily Sheet Data - Deletes old or duplicate entries from the sheet
  5. Reload Clean Job Data - Loads clean data again after deletion for final processing

Phase 3: Daily Summary & Email Report This phase generates summaries and delivers the final report:

  1. Generate Keyword Summary Stats - Counts job totals per keyword for analysis
  2. Update Summary Sheet - Updates the summary sheet with keyword statistics
  3. Fetch Final Summary Data - Reads the summary sheet for reporting purposes
  4. Build Email Body - Formats email with statistics and sheet link
  5. Send Daily Report Email - Sends the structured daily summary email to recipients

Data Sources

The workflow utilizes Google Sheets for data management:

  1. AI Keywords Sheet - Contains keyword management data with columns:

    • Keyword (text) - Job search terms
    • Job Count (number) - Number of jobs found for each keyword
    • Status (text) - Active/Inactive status
    • Last Updated (timestamp) - When keyword was last processed
  2. Daily Jobs Sheet - Contains scraped job data with columns:

    • Job Title (text) - Title of the job posting
    • Description (text) - Job description content
    • Budget (text) - Job budget or hourly rate
    • Client Rating (number) - Client's rating on Upwork
    • Posted Date (timestamp) - When job was posted
    • Job URL (text) - Direct link to the job posting
    • Keyword (text) - Which keyword found this job
    • Scraped At (timestamp) - When data was collected
  3. Summary Sheet - Contains daily statistics with columns:

    • Date (date) - Report date
    • Total Jobs (number) - Total jobs found
    • Keywords Processed (number) - Number of keywords searched
    • Top Keyword (text) - Most productive keyword
    • Average Budget (currency) - Average job budget
    • Report Generated (timestamp) - When summary was created

How to Use

  • Import the workflow into n8n
  • Configure Apify API credentials and Google Sheets API access
  • Set up email credentials for daily report delivery
  • Create three Google Sheets with the specified column structures
  • Add relevant job keywords to the AI Keywords sheet
  • Test with sample keywords and adjust as needed

Requirements

  1. Apify API credentials and actor access
  2. Google Sheets API access
  3. Email service credentials (Gmail, SMTP, etc.)
  4. Upwork job search keywords for targeting

Customizing This Workflow

Modify the Process Raw Job Data node to filter jobs by additional criteria like budget range, client rating, or job type. Adjust the email report format to include more detailed statistics or add visual aids, such as charts. Customize the data cleaning logic to better handle duplicate detection based on your specific requirements, or add additional data sources beyond Upwork for comprehensive job market analysis.

1.2 Logical Blocks

This catalog entry is organized from the workflow JSON. The node-level section below shows the executable blocks available for review before importing the template.

2. Block-by-Block Analysis

Block 1 - Delete rows or columns from sheet

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.6

Block 2 - Loop Through Keywords

Type / Role
n8n-nodes-base.splitInBatches - splitInBatches
Config choices
Version 3

Block 3 - Trigger Manual Run

Type / Role
n8n-nodes-base.manualTrigger - manualTrigger
Config choices
Version 1

Block 4 - Fetch Keywords from Google Sheet

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.6

Block 5 - Trigger Apify Scraper

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 6 - Wait for Apify Completion

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 7 - Delay Before Dataset Read

Type / Role
n8n-nodes-base.wait - wait
Config choices
Version 1.1

Block 8 - Fetch Scraped Job Dataset

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 9 - Process Raw Job Data

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 10 - Save Jobs to Daily Sheet

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.6

Block 11 - Update Keyword Job Count

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.6

Block 12 - Load Today’s Daily Jobs

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.6

Block 13 - Remove Duplicates by Title/Desc

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 14 - Save Clean Job Data

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.6

Block 15 - Reload Clean Job Data

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.6

Block 16 - Generate Keyword Summary Stats

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 17 - Update Summary Sheet

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.6

Block 18 - Fetch Final Summary Data

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.6

Block 19 - Build Email Body

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 20 - Send Daily Report Email

Type / Role
n8n-nodes-base.gmail - gmail
Config choices
Version 2.1

Block 21 - Sticky Note

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 22 - Sticky Note1

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 23 - Sticky Note2

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

3. Summary Table

Workflow Scrape Upwork job listings & generate daily email reports with Apify & Google Sheets
Complexity advanced
Nodes 23
Categories Market Research
Author Oneclick AI Squad
Published 15 Jul 2025

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/6028/6028.json as the source template for this automation.

  2. 2. Import the template into n8n

    Open n8n, import the downloaded JSON, and review each node before activating the workflow.

  3. 3. Configure credentials and variables

    Replace placeholder credentials, API keys, webhook URLs, account IDs, and environment-specific values with your own settings.

  4. 4. Test with sample data

    Run the workflow manually or in a staging workspace, inspect node output, and confirm downstream systems receive the expected data.

  5. 5. Activate and monitor

    Enable the workflow only after testing, then monitor executions, errors, and rate limits during the first production runs.

5. General Notes & Resources

Review imported nodes carefully before activation. This catalog entry is intended to help you inspect the workflow structure, understand required services, and find related templates faster.

Node names, credentials, schedules, webhook paths, and external service limits may need adjustment for your workspace.

Frequently asked questions

What does Scrape Upwork job listings & generate daily email reports with Apify & Google Sheets do?

This automated n8n workflow scrapes job listings from Upwork using Apify, processes and cleans the data, and generates daily email reports with job summaries. The system uses Google Sheets for data...

What do I need before importing this workflow?

Review the workflow JSON, configure any required credentials in n8n, and test the automation in a safe workspace before using it in production.

Can I customize this workflow?

Yes. Use the block-by-block analysis and the downloadable JSON to inspect each node, then adjust credentials, prompts, schedules, filters, or destinations for your Market Research use case.