Offres d'emploi Upwork vers Google Sheets
Ceci est unOtherworkflow d'automatisation du domainecontenant 8 nœuds.Utilise principalement des nœuds comme Set, HttpRequest, GoogleSheets, ScheduleTrigger. Suivi automatisé du marché de l'emploi : flux de travail de scraping Upwork vers Google Sheets
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Informations d'identification Google Sheets API
Nœuds utilisés (8)
Catégorie
{
"id": "s1PkxgZZchk3npwR",
"meta": {
"instanceId": "84ad02d6104594179f43f1ce9cfe3a81637b2faedb57dafcb9e649b7542988db",
"templateCredsSetupCompleted": true
},
"name": "Upwork Jobs to google sheets",
"tags": [],
"nodes": [
{
"id": "e08c753e-7d88-4f0b-889e-100291f0a3c7",
"name": "Vérifier les emplois Upwork - Déclencheur",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
0,
0
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "ffcc4ad0-7787-40a6-a78d-d3a03b1dc23b",
"name": "Récupérer les emplois Upwork avec Apify",
"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": "Formatter les données scrapées",
"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": "Enregistrer les emplois dans Google Sheets",
"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": "Note adhésive",
"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": "Note adhésive1",
"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": "Note adhésive9",
"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": "Note adhésive4",
"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
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Intermédiaire - Autres
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Yaron Been
@yaron-nofluffBuilding 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
Partager ce workflow