Upwork-Jobmöglichkeiten zu Google Sheets

Fortgeschritten

Dies ist ein Other-Bereich Automatisierungsworkflow mit 8 Nodes. Hauptsächlich werden Set, HttpRequest, GoogleSheets, ScheduleTrigger und andere Nodes verwendet. Automatisierte Stellenmarkt-Verfolgung: Upwork-Crawler zu Google Sheets-Workflow

Voraussetzungen
  • Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
  • Google Sheets API-Anmeldedaten

Kategorie

Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "id": "s1PkxgZZchk3npwR",
  "meta": {
    "instanceId": "84ad02d6104594179f43f1ce9cfe3a81637b2faedb57dafcb9e649b7542988db",
    "templateCredsSetupCompleted": true
  },
  "name": "Upwork Jobs to google sheets",
  "tags": [],
  "nodes": [
    {
      "id": "e08c753e-7d88-4f0b-889e-100291f0a3c7",
      "name": "Upwork Jobs prüfen - Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        0,
        0
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "ffcc4ad0-7787-40a6-a78d-d3a03b1dc23b",
      "name": "Upwork Jobs mit Apify abrufen",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        260,
        0
      ],
      "parameters": {
        "url": "https://api.apify.com/v2/actor-tasks/<TASK_ID>/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {}
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "4d0d8fb6-ad2e-4dff-8d04-b100721e33ee",
      "name": "Scraping-Daten formatieren",
      "type": "n8n-nodes-base.set",
      "position": [
        660,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "404d06e0-d3a0-448d-98f5-35fe87405e87",
              "name": "title",
              "type": "string",
              "value": "={{ $json.title }}"
            },
            {
              "id": "1d0e9a1d-e5f9-413b-9ab4-f20ae7260b65",
              "name": "description",
              "type": "string",
              "value": "={{ $json.description }}"
            },
            {
              "id": "c8d60809-8747-4321-ac97-a44a12ae91d5",
              "name": "postedDate",
              "type": "string",
              "value": "={{ $json.postedDate }}"
            },
            {
              "id": "e55fbecc-a984-49b7-80a7-8c7a6d10b32a",
              "name": "skills",
              "type": "array",
              "value": "={{ $json.skills }}"
            },
            {
              "id": "45f77f6b-c436-490c-8970-c9cb8b9949ea",
              "name": "link",
              "type": "string",
              "value": "={{ $json.link }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "c1f6c43c-f962-48f7-818b-638105720cad",
      "name": "Jobs zu Google Sheets protokollieren",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        960,
        0
      ],
      "parameters": {
        "columns": {
          "value": {
            "link": "={{ $json.link }}",
            "title": "={{ $json.title }}",
            "skills": "={{ $json.skills }}",
            "postedDate": "={{ $json.postedDate }}",
            "description": "={{ $json.description }}"
          },
          "schema": [
            {
              "id": "title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "description",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "postedDate",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "postedDate",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "skills",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "skills",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "link",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1u9TeIArgJPwLn-MV77-lwDwNiZ8qZscZnkuK1xev6YA/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1u9TeIArgJPwLn-MV77-lwDwNiZ8qZscZnkuK1xev6YA",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1u9TeIArgJPwLn-MV77-lwDwNiZ8qZscZnkuK1xev6YA/edit?usp=drivesdk",
          "cachedResultName": "Upwork job scraper"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "Rp7XiR3hxJfv03ZO",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "0e05d038-bb10-4cd2-847c-c38ecafe47f4",
      "name": "Haftnotiz",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -40,
        -1420
      ],
      "parameters": {
        "color": 5,
        "width": 480,
        "height": 1620,
        "content": "## 🌐 **Section 1: Data Scraping Automation**\n\n> 🧠 *“Tell me what’s trending!”*\n\n### 🔁 Nodes Combined:\n\n* 🕒 `Check Upwork Jobs - Trigger`\n* 🌐 `Fetch Upwork Jobs from Apify`\n\n---\n\n### ⚙️ What This Section Does:\n\nThis section automates the process of **scraping fresh job listings from Upwork** using Apify.\n\n### 🧩 Step-by-Step Breakdown:\n\n#### 🕒 1. `Check Upwork Jobs - Trigger`\n\n🕰 **Trigger Type**: Scheduled\nThis node automatically **starts the workflow at specific times** (e.g., every hour, daily, etc.).\n\n📌 **Why this matters**:\nYou don’t have to manually run anything! Just set it once, and n8n will check for new job listings on its own — like a robot assistant.\n\n---\n\n#### 🌐 2. `Fetch Upwork Jobs from Apify`\n\n📤 **HTTP Request** → **Apify API**\n\nThis node sends a `POST` request to [Apify](https://apify.com), where you've configured a **web scraping actor** to collect data from **Upwork job listings**.\n\n📥 **Response**: A JSON array of job data, including:\n\n* 📌 `title` – What the job is about\n* 📝 `description` – A short job overview\n* 🎯 `skills` – Required skills\n* 🗓 `postedDate` – When it was posted\n* 🔗 `link` – Direct link to the job\n\n✅ **Why Apify?**\nBecause Upwork’s API is **not public**, Apify acts as your friendly bot that **scrapes the job board safely and returns structured data**.\n\n💡 **Pro Tip**: You can customize your Apify actor to filter by keyword (e.g., `AI`, `Python`, `Design`, etc.).\n\n---\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "d5ef38cd-796c-48bf-ac16-7180b22dea39",
      "name": "Haftnotiz1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        620,
        -1500
      ],
      "parameters": {
        "color": 6,
        "width": 480,
        "height": 1700,
        "content": "## 📊 **Section 2: Data Transformation & Logging**\n\n> 🧠 *“Let’s clean this up and put it somewhere useful.”*\n\n### 🔁 Nodes Combined:\n\n* ✏️ `Format Job Data`\n* 📄 `Log Jobs to Google Sheets`\n\n---\n\n### 🧩 Step-by-Step Breakdown:\n\n#### ✏️ 3. `Format Job Data`\n\n🧹 **Field Cleaner / Formatter**\n\nThis node helps you:\n\n* Extract only **relevant fields** from the Apify response\n* Optionally **rename or restructure fields** (like mapping `postedDate` to `Date Posted`)\n* Prepare the data in a clean format so it's ready for Google Sheets\n\n📌 Example Output:\n\n```json\n{\n  \"Job Title\": \"Build AI chatbot\",\n  \"Skills\": \"LangChain, Python\",\n  \"Posted Date\": \"2025-06-06\",\n  \"Link\": \"https://upwork.com/jobs/...\"\n}\n```\n\n💡 **Why This Matters**: Raw data isn’t always useful. This node ensures that what goes into Google Sheets is **clean, consistent, and human-readable**.\n\n---\n\n#### 📄 4. `Log Jobs to Google Sheets`\n\n📑 **Append Data to Sheet**\n\nThis node takes the formatted job data and **adds it to a Google Sheet** row by row.\n\n📌 Each job becomes a row with columns:\n\n| Job Title    | Skills            | Posted Date | Link                                                    |\n| ------------ | ----------------- | ----------- | ------------------------------------------------------- |\n| Build AI Bot | Python, LangChain | 2025-06-06  | [https://upwork.com/jobs/](https://upwork.com/jobs/)... |\n\n✅ **Why Use Google Sheets?**\n\n* You can **analyze market trends** easily\n* Share with your team\n* Build charts, dashboards, or even connect to Looker Studio\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "8af7a509-a4a9-480b-b687-49a3056e27e1",
      "name": "Haftnotiz9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1920,
        -1400
      ],
      "parameters": {
        "color": 4,
        "width": 1300,
        "height": 320,
        "content": "=======================================\n            WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n    Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n   - YouTube: https://www.youtube.com/@YaronBeen/videos\n   - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"
      },
      "typeVersion": 1
    },
    {
      "id": "773ea8c5-702e-4080-818b-12f0dc93579f",
      "name": "Haftnotiz4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1920,
        -1060
      ],
      "parameters": {
        "color": 4,
        "width": 1289,
        "height": 3058,
        "content": "## 🌐 **Section 1: Data Scraping Automation**\n\n> 🧠 *“Tell me what’s trending!”*\n\n### 🔁 Nodes Combined:\n\n* 🕒 `Check Upwork Jobs - Trigger`\n* 🌐 `Fetch Upwork Jobs from Apify`\n\n---\n\n### ⚙️ What This Section Does:\n\nThis section automates the process of **scraping fresh job listings from Upwork** using Apify.\n\n### 🧩 Step-by-Step Breakdown:\n\n#### 🕒 1. `Check Upwork Jobs - Trigger`\n\n🕰 **Trigger Type**: Scheduled\nThis node automatically **starts the workflow at specific times** (e.g., every hour, daily, etc.).\n\n📌 **Why this matters**:\nYou don’t have to manually run anything! Just set it once, and n8n will check for new job listings on its own — like a robot assistant.\n\n---\n\n#### 🌐 2. `Fetch Upwork Jobs from Apify`\n\n📤 **HTTP Request** → **Apify API**\n\nThis node sends a `POST` request to [Apify](https://apify.com), where you've configured a **web scraping actor** to collect data from **Upwork job listings**.\n\n📥 **Response**: A JSON array of job data, including:\n\n* 📌 `title` – What the job is about\n* 📝 `description` – A short job overview\n* 🎯 `skills` – Required skills\n* 🗓 `postedDate` – When it was posted\n* 🔗 `link` – Direct link to the job\n\n✅ **Why Apify?**\nBecause Upwork’s API is **not public**, Apify acts as your friendly bot that **scrapes the job board safely and returns structured data**.\n\n💡 **Pro Tip**: You can customize your Apify actor to filter by keyword (e.g., `AI`, `Python`, `Design`, etc.).\n\n---\n\n## 📊 **Section 2: Data Transformation & Logging**\n\n> 🧠 *“Let’s clean this up and put it somewhere useful.”*\n\n### 🔁 Nodes Combined:\n\n* ✏️ `Format Job Data`\n* 📄 `Log Jobs to Google Sheets`\n\n---\n\n### 🧩 Step-by-Step Breakdown:\n\n#### ✏️ 3. `Format Job Data`\n\n🧹 **Field Cleaner / Formatter**\n\nThis node helps you:\n\n* Extract only **relevant fields** from the Apify response\n* Optionally **rename or restructure fields** (like mapping `postedDate` to `Date Posted`)\n* Prepare the data in a clean format so it's ready for Google Sheets\n\n📌 Example Output:\n\n```json\n{\n  \"Job Title\": \"Build AI chatbot\",\n  \"Skills\": \"LangChain, Python\",\n  \"Posted Date\": \"2025-06-06\",\n  \"Link\": \"https://upwork.com/jobs/...\"\n}\n```\n\n💡 **Why This Matters**: Raw data isn’t always useful. This node ensures that what goes into Google Sheets is **clean, consistent, and human-readable**.\n\n---\n\n#### 📄 4. `Log Jobs to Google Sheets`\n\n📑 **Append Data to Sheet**\n\nThis node takes the formatted job data and **adds it to a Google Sheet** row by row.\n\n📌 Each job becomes a row with columns:\n\n| Job Title    | Skills            | Posted Date | Link                                                    |\n| ------------ | ----------------- | ----------- | ------------------------------------------------------- |\n| Build AI Bot | Python, LangChain | 2025-06-06  | [https://upwork.com/jobs/](https://upwork.com/jobs/)... |\n\n✅ **Why Use Google Sheets?**\n\n* You can **analyze market trends** easily\n* Share with your team\n* Build charts, dashboards, or even connect to Looker Studio\n\n💡 **Bonus Tip**: Add filters or conditional formatting to highlight certain keywords or top-paying jobs!\n\n---\n\n## 🎯 Why This Workflow is Powerful (Even for Beginners)\n\n✅ **No coding required** – You’re using no-code tools like n8n, Apify, and Google Sheets\n✅ **Automated** – Runs while you sleep 🌙\n✅ **Real-time market insights** – Know what clients are looking for (great for freelancers, agencies, product devs)\n✅ **Extendable** – Add Telegram alerts, Airtable dashboards, or link it with Notion or CRMs!\n\n---\n\n## 📌 What You Can Do Next:\n\n| Task                      | Tool                              | Outcome                                   |\n| ------------------------- | --------------------------------- | ----------------------------------------- |\n| ✅ Add deduplication logic | Google Sheets or n8n `IF` node    | Avoid storing duplicate jobs              |\n| ✅ Filter by skill/keyword | Apify task input                  | Focus on niche markets                    |\n| ✅ Connect to Airtable     | Replace Sheets with Airtable node | Richer dashboards and tagging             |\n| ✅ Set alerts              | Email/Telegram node               | Be the first to apply or inform your team |\n\n---\n\n\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {
    "Fetch Upwork Jobs using Apify": [
      {
        "json": {
          "link": "https://www.upwork.com/jobs/~01a2b3c4d5e6f7g8h9",
          "title": "Build AI-based chatbot with RAG",
          "skills": [
            "Python",
            "LangChain",
            "AI",
            "RAG",
            "LLM"
          ],
          "postedDate": "2025-06-05T12:00:00Z",
          "description": "Need a developer experienced in LangChain and vector DBs to build a chatbot..."
        }
      },
      {
        "json": {
          "link": "https://www.upwork.com/jobs/~09h8g7f6e5d4c3b2a1",
          "title": "Fine-tune Llama-3 for sentiment analysis",
          "skills": [
            "NLP",
            "Llama",
            "Fine-tuning",
            "Transformers"
          ],
          "postedDate": "2025-06-04T09:30:00Z",
          "description": "Looking for someone to fine-tune Meta’s Llama-3 model on our custom dataset..."
        }
      }
    ]
  },
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "ad7a638f-061a-4ab9-aa96-9d2b13f67c5c",
  "connections": {
    "4d0d8fb6-ad2e-4dff-8d04-b100721e33ee": {
      "main": [
        [
          {
            "node": "c1f6c43c-f962-48f7-818b-638105720cad",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e08c753e-7d88-4f0b-889e-100291f0a3c7": {
      "main": [
        [
          {
            "node": "ffcc4ad0-7787-40a6-a78d-d3a03b1dc23b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ffcc4ad0-7787-40a6-a78d-d3a03b1dc23b": {
      "main": [
        [
          {
            "node": "4d0d8fb6-ad2e-4dff-8d04-b100721e33ee",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Fortgeschritten - Sonstiges

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Fortgeschritten
Anzahl der Nodes8
Kategorie1
Node-Typen5
Schwierigkeitsbeschreibung

Für erfahrene Benutzer, mittelkomplexe Workflows mit 6-15 Nodes

Autor
Yaron Been

Yaron Been

@yaron-nofluff

Building AI Agents and Automations | Growth Marketer | Entrepreneur | Book Author & Podcast Host If you need any help with Automations, feel free to reach out via linkedin: https://www.linkedin.com/in/yaronbeen/ And check out my Youtube channel: https://www.youtube.com/@YaronBeen/videos

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34