This workflow corresponds to n8n.io template #5214 — we link there as the canonical source.
This workflow follows the Google Sheets → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "HyNR7wCUHOWoSMB1",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Automated_Freelance_Gig_Scraper_via_Bright_data",
"tags": [],
"nodes": [
{
"id": "ca434966-ab56-4335-88ea-c066a3a33cf4",
"name": "Run Scraper Daily",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
1720,
1400
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 9
}
]
}
},
"typeVersion": 1.2
},
{
"id": "f5446f3e-3eaf-44ac-b363-1fd61da36512",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"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": "b7e24008-ca38-4d8a-b17c-57a979307618",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
340
],
"parameters": {
"color": 4,
"width": 1289,
"height": 3418,
"content": "# \ud83d\ude80 **Automated Daily Job Scraper Workflow**\n\nThis automation scrapes new job gigs from **We Work Remotely (WWR)** daily based on your preferred skill, extracts job information, and appends it neatly into a **Google Sheet** \u2014 all without lifting a finger! Let\u2019s break it down into 3 easy-to-understand sections:\n\n---\n\n## \ud83d\udd39 **SECTION 1: Trigger + Set Your Filter**\n\n> *Automate and personalize your job search.*\n\n### \ud83d\udd52 1. Run Scraper Daily\n\n**Node Type**: Trigger\n**Purpose**: Automatically runs the workflow every 24 hours.\n**How it helps**:\nNo manual work needed! The automation ensures the job list is updated daily without you having to remember anything.\n\n\ud83d\udd27 **Icon Tip**:\n`\u26a1` = Trigger\n`\u23f0` = Time-based action\n\n---\n\n### \ud83d\udd8b\ufe0f 2. Set Skill Filter\n\n**Node Type**: Manual Input / Set Node\n**Purpose**: Define the specific skill (e.g., \u201cPython\u201d, \u201cUI/UX\u201d) you want to search gigs for.\n**How it helps**:\nYou control what kind of job gigs to track. Want only \"React\" jobs? Just set it once and forget.\n\n\ud83e\udde0 **Beginner Tip**:\nThink of this as setting the topic for your daily newsletter \u2014 you get exactly what you\u2019re interested in.\n\n\ud83d\udd27 **Icon Tip**:\n`\ud83d\udd8b\ufe0f` = Skill Input or Filter Logic\n\n---\n\n## \ud83c\udf10 **SECTION 2: Scraping & Extraction**\n\n> *Fetch real job listings based on your criteria.*\n\n### \ud83c\udf0d 3. Scrape WWR with Bright Data\n\n**Node Type**: HTTP Request\n**Purpose**: Uses the Bright Data Web Unlocker to visit the We Work Remotely website and fetch HTML data of job postings.\n**How it helps**:\nBy using Bright Data, you're bypassing bot detection and scraping like a pro without writing a single line of code.\n\n\ud83d\udd27 **Icon Tip**:\n`\ud83c\udf10` = API/Web scraper\n\n\ud83d\udd10 **Beginner Tip**:\nBright Data makes sure you're not blocked while scraping websites that usually don\u2019t allow bots.\n\n---\n\n### \ud83e\uddfe 4. Extract Jobs from HTML\n\n**Node Type**: Code / Extraction\n**Purpose**: Converts raw HTML into structured job information (like job title, company, and link).\n**How it helps**:\nNo need to look at complicated HTML. This step cleans and formats the data into something meaningful and usable.\n\n\ud83d\udd27 **Icon Tip**:\n`\ud83d\udda5\ufe0f\ud83d\udcc4` or `</>` = HTML parser\n\n\ud83e\udde0 **Beginner Tip**:\nThis is like taking a messy newspaper and extracting only the job ads you care about.\n\n---\n\n## \ud83d\udcca **SECTION 3: Save to Google Sheets**\n\n> *Turn your daily gigs into a growing list you can use and filter anytime.*\n\n### \ud83d\udcc4 5. Save Gigs to Google Sheets\n\n**Node Type**: Google Sheets\n**Purpose**: Appends each new gig to a Google Sheet in your Drive.\n**How it helps**:\nYou now have a daily updating list of remote jobs \u2014 ready to view, sort, and apply from one place.\n\n\ud83d\udccc **Icon Tip**:\n`\ud83d\udcc4\ud83d\udfe9` = Google Sheets\n\n\ud83e\udde0 **Beginner Tip**:\nThis becomes your personal remote job tracker that updates itself daily!\n\n---\n\n## \ud83d\udca1 **How Beginners Can Take Advantage**\n\n1. **Zero Code Needed**: All done visually in tools like n8n \u2013 no programming background required.\n2. **Customization Friendly**: Just change the skill filter to get different job types.\n3. **Scalable**: Add more job boards or filters in future.\n4. **Saves Hours**: No need to visit sites daily or manually copy job info.\n5. **Great for Freelancers, Students & Job Seekers**.\n\n---\n\n## \ud83c\udf1f Final Summary (With Emojis for Fun)\n\n| Step | Node | Emoji | Description |\n| ---- | -------------- | ----- | ------------------------------------- |\n| 1 | Run Daily | \u23f0 | Automatically starts every day |\n| 2 | Set Skill | \ud83d\udd8b\ufe0f | Choose what skill to search jobs for |\n| 3 | Scrape WWR | \ud83c\udf10 | Uses Bright Data to grab job postings |\n| 4 | Extract HTML | \ud83e\uddfe | Converts raw HTML to structured data |\n| 5 | Save to Sheets | \ud83d\udcca | Appends new jobs to a Google Sheet |\n\n---\n\n\n"
},
"typeVersion": 1
},
{
"id": "a83a04d5-6bec-4c7e-8d8d-538c4957a9c8",
"name": "Set Skill Filter",
"type": "n8n-nodes-base.set",
"position": [
1960,
1400
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "442d4787-7045-46e7-a86a-ccc522413ac9",
"name": "Skills",
"type": "string",
"value": "AI"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "33e2c73b-41e4-4f60-9b6c-4c954cc7e856",
"name": "Scrape WWR with Bright Data",
"type": "n8n-nodes-base.httpRequest",
"position": [
2200,
1400
],
"parameters": {
"url": "https://api.brightdata.com/request",
"method": "POST",
"options": {},
"sendBody": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "zone",
"value": "n8n_unblocker"
},
{
"name": "url",
"value": "=https://weworkremotely.com/remote-jobs/search?term={{ $json.Skills }}"
},
{
"name": "country",
"value": "us"
},
{
"name": "format",
"value": "raw"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_TOKEN_HERE"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "23709278-a9bb-4b46-a418-62a15c49f6ab",
"name": "Extract Jobs from HTML",
"type": "n8n-nodes-base.html",
"position": [
2420,
1400
],
"parameters": {
"options": {},
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "Job",
"cssSelector": "#category-18 > article > ul > li.new-listing-container.feature > a > div > div.new-listing__header > h4"
},
{
"key": "Company",
"cssSelector": "#category-18 > article > ul > li.new-listing-container.feature > a > div > p.new-listing__company-name"
},
{
"key": "Country",
"cssSelector": "#category-18 > article > ul > li.new-listing-container.feature > a > div > p.new-listing__company-headquarters"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "564c4101-2929-49fe-a651-134a0addfe35",
"name": "Save Jobs to Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
2720,
1400
],
"parameters": {
"columns": {
"value": {
"Job": "={{ $json.Job }}",
"Company": "={{ $json.Company }}",
"Location": "={{ $json.Country }}"
},
"schema": [
{
"id": "Job",
"type": "string",
"display": true,
"required": false,
"displayName": "Job",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company",
"type": "string",
"display": true,
"required": false,
"displayName": "Company",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Location",
"type": "string",
"display": true,
"required": false,
"displayName": "Location",
"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/14JmN5gkBRW6Vgevf2oNXXvEuZXPwBCk4JxQqEfJOHSw/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "14JmN5gkBRW6Vgevf2oNXXvEuZXPwBCk4JxQqEfJOHSw",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/14JmN5gkBRW6Vgevf2oNXXvEuZXPwBCk4JxQqEfJOHSw/edit?usp=drivesdk",
"cachedResultName": "weworkremotely jobs"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
},
{
"id": "3354904f-1735-4e89-a0a8-1914f707ee8b",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1700,
-20
],
"parameters": {
"color": 6,
"width": 380,
"height": 1640,
"content": "## \ud83d\udd39 **SECTION 1: Trigger + Set Your Filter**\n\n> *Automate and personalize your job search.*\n\n### \ud83d\udd52 1. Run Scraper Daily\n\n**Node Type**: Trigger\n**Purpose**: Automatically runs the workflow every 24 hours.\n**How it helps**:\nNo manual work needed! The automation ensures the job list is updated daily without you having to remember anything.\n\n\ud83d\udd27 **Icon Tip**:\n`\u26a1` = Trigger\n`\u23f0` = Time-based action\n\n---\n\n### \ud83d\udd8b\ufe0f 2. Set Skill Filter\n\n**Node Type**: Manual Input / Set Node\n**Purpose**: Define the specific skill (e.g., \u201cPython\u201d, \u201cUI/UX\u201d) you want to search gigs for.\n**How it helps**:\nYou control what kind of job gigs to track. Want only \"React\" jobs? Just set it once and forget.\n\n\ud83e\udde0 **Beginner Tip**:\nThink of this as setting the topic for your daily newsletter \u2014 you get exactly what you\u2019re interested in.\n\n\ud83d\udd27 **Icon Tip**:\n`\ud83d\udd8b\ufe0f` = Skill Input or Filter Logic\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "302ea26f-4b92-41c2-9859-17a937f7b141",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
2140,
-160
],
"parameters": {
"color": 5,
"width": 420,
"height": 1780,
"content": "## \ud83c\udf10 **SECTION 2: Scraping & Extraction**\n\n> *Fetch real job listings based on your criteria.*\n\n### \ud83c\udf0d 3. Scrape WWR with Bright Data\n\n**Node Type**: HTTP Request\n**Purpose**: Uses the Bright Data Web Unlocker to visit the We Work Remotely website and fetch HTML data of job postings.\n**How it helps**:\nBy using Bright Data, you're bypassing bot detection and scraping like a pro without writing a single line of code.\n\n\ud83d\udd27 **Icon Tip**:\n`\ud83c\udf10` = API/Web scraper\n\n\ud83d\udd10 **Beginner Tip**:\nBright Data makes sure you're not blocked while scraping websites that usually don\u2019t allow bots.\n\n---\n\n### \ud83e\uddfe 4. Extract Jobs from HTML\n\n**Node Type**: Code / Extraction\n**Purpose**: Converts raw HTML into structured job information (like job title, company, and link).\n**How it helps**:\nNo need to look at complicated HTML. This step cleans and formats the data into something meaningful and usable.\n\n\ud83d\udd27 **Icon Tip**:\n`\ud83d\udda5\ufe0f\ud83d\udcc4` or `</>` = HTML parser\n\n\ud83e\udde0 **Beginner Tip**:\nThis is like taking a messy newspaper and extracting only the job ads you care about.\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "a789140f-8006-4cae-ad40-0e595052b0d9",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
2620,
420
],
"parameters": {
"color": 3,
"width": 300,
"height": 1200,
"content": "## \ud83d\udcca **SECTION 3: Save to Google Sheets**\n\n> *Turn your daily gigs into a growing list you can use and filter anytime.*\n\n### \ud83d\udcc4 5. Save Gigs to Google Sheets\n\n**Node Type**: Google Sheets\n**Purpose**: Appends each new gig to a Google Sheet in your Drive.\n**How it helps**:\nYou now have a daily updating list of remote jobs \u2014 ready to view, sort, and apply from one place.\n\n\ud83d\udccc **Icon Tip**:\n`\ud83d\udcc4\ud83d\udfe9` = Google Sheets\n\n\ud83e\udde0 **Beginner Tip**:\nThis becomes your personal remote job tracker that updates itself daily!\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "1c541cd3-09f3-4534-b6cb-53027d87873b",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
3020,
420
],
"parameters": {
"color": 7,
"width": 380,
"height": 240,
"content": "## I\u2019ll receive a tiny commission if you join Bright Data through this link\u2014thanks for fueling more free content!\n\n### https://get.brightdata.com/1tndi4600b25"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "860467ec-cde7-45f3-aab5-814a1cab069f",
"connections": {
"Set Skill Filter": {
"main": [
[
{
"node": "Scrape WWR with Bright Data",
"type": "main",
"index": 0
}
]
]
},
"Run Scraper Daily": {
"main": [
[
{
"node": "Set Skill Filter",
"type": "main",
"index": 0
}
]
]
},
"Extract Jobs from HTML": {
"main": [
[
{
"node": "Save Jobs to Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Scrape WWR with Bright Data": {
"main": [
[
{
"node": "Extract Jobs from HTML",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleSheetsOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automatically searches multiple freelance platforms for new gigs matching your skills and requirements. It saves you time by eliminating the need to manually check multiple job boards and sends you alerts for relevant opportunities.
Source: https://n8n.io/workflows/5214/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow automates video distribution to 9 social platforms simultaneously using Blotato's API. It includes both a scheduled publisher (checks Google Sheets for videos marked "Ready") and a subwo
YogiAI. Uses googleSheets, googleSheetsTool, httpRequest, stopAndError. Scheduled trigger; 61 nodes.
This workflow monitors Google Calendar for events indicating that a customer will visit the company today or the next day, retrieves the required details, and sends reminder notifications to the relev
ofn hook v0.24.0 beta. Uses start, httpRequest, functionItem, itemLists. Scheduled trigger; 42 nodes.
Security teams, DevOps engineers, vulnerability analysts, and automation builders who want to eliminate repetitive Nessus scan parsing, AI-based risk triage, and manual reporting. Designed for orgs fo