This workflow corresponds to n8n.io template #15663 — we link there as the canonical source.
This workflow follows the Airtable → 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 →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "e1e9b5ca-8327-4797-a335-8b8130f2fd39",
"name": "Sticky Note13",
"type": "n8n-nodes-base.stickyNote",
"position": [
-304,
-240
],
"parameters": {
"color": 7,
"width": 1024,
"height": 208,
"content": "## Need more advanced automation solutions? Contact us for custom enterprise workflows!\n\n# Growth-AI.fr\n\n## https://www.linkedin.com/in/allanvaccarizi/\n## https://www.linkedin.com/in/hugo-marinier-%F0%9F%A7%B2-6537b633/"
},
"typeVersion": 1
},
{
"id": "ac8be395-c792-4b15-a8bf-167a27de8de1",
"name": "Sticky Note16",
"type": "n8n-nodes-base.stickyNote",
"position": [
-304,
-656
],
"parameters": {
"color": 7,
"width": 1024,
"height": 400,
"content": ""
},
"typeVersion": 1
},
{
"id": "0c004fa1-c4a5-4056-ad82-2e31e4e79b74",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-864,
-16
],
"parameters": {
"width": 480,
"height": 608,
"content": "## Linkedin jobs scraper\n\n### How it works\n\n1. A schedule trigger fires the workflow at configured intervals.\n2. The Edit Fields node defines the search queries to be passed to the scraper.\n3. An HTTP POST request submits the queries to an Apify actor, which performs the scraping job.\n4. The results returned by Apify are saved as a new record in Airtable.\n\n### Setup steps\n\n- - [ ] Configure the Schedule Trigger with your desired run frequency (e.g. daily, hourly).\n- - [ ] Add your Apify API token to the HTTP Request node's authentication settings.\n- - [ ] Update the Apify actor URL/ID in the 'Apify get job' node to point to your chosen scraper actor.\n- - [ ] Set the desired search queries in the 'Edit Fields' node (Query 1, Query 2, Query 3).\n- - [ ] Connect your Airtable account credentials and configure the target base and table in the 'Create a record' node.\n\n### Customization\n\nYou can add more query fields in the 'Edit Fields' node to expand the number of searches per run. The Apify actor ID in the HTTP Request can be swapped to use a different scraper depending on your data needs."
},
"typeVersion": 1
},
{
"id": "f6317fdd-71e2-4db8-a7c0-785cebc1f419",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-304,
-16
],
"parameters": {
"color": 7,
"width": 400,
"height": 336,
"content": "## Schedule and prepare queries\n\nThe schedule trigger initiates the workflow on a timed basis, and Edit Fields sets the search query values that will be sent to the scraper."
},
"typeVersion": 1
},
{
"id": "d7a8b024-243f-43b5-9c01-f648d7031a1d",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
128,
-16
],
"parameters": {
"color": 7,
"width": 368,
"height": 336,
"content": "## Run scraper and save results\n\nSubmits the queries to an Apify actor via HTTP POST to execute the scraping job, then stores the returned data as a new record in Airtable."
},
"typeVersion": 1
},
{
"id": "a7c0ca83-6f85-4991-baba-e48fef2f8632",
"name": "Run Apify Actor and Fetch Results",
"type": "n8n-nodes-base.httpRequest",
"position": [
176,
160
],
"parameters": {
"url": "https://api.apify.com/v2/acts/vIGxjRrHqDTPuE6M4/run-sync-get-dataset-items",
"method": "POST",
"options": {},
"jsonBody": "={\n \"aiHasSalary\": false,\n \"aiVisaSponsorshipFilter\": false,\n \"directApply\": false,\n \"excludeATSDuplicate\": false,\n \"externalApplyUrl\": false,\n \"includeAi\": true,\n \"limit\": 10,\n \"locationSearch\": [\"France\"],\n \"organizationEmployeesLte\": 500,\n \"populateAiRemoteLocation\": false,\n \"populateAiRemoteLocationDerived\": false,\n \"populateExternalApplyURL\": false,\n \"remote\": false,\n \"removeAgency\": true,\n \"timeRange\": \"7d\",\n \"titleSearch\": {{ JSON.stringify(Object.values($json).filter(v => v && v.trim() !== '')) }}\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "apifyApi"
},
"credentials": {
"apifyApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.3
},
{
"id": "b7a3d976-7006-44ce-ab1b-1854006e06d6",
"name": "Every Week at 10am",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-256,
160
],
"parameters": {
"rule": {
"interval": [
{
"field": "weeks",
"triggerAtHour": 10
}
]
}
},
"typeVersion": 1.3
},
{
"id": "fa1d2a0e-cacc-42b1-9301-4fe7c1a1013b",
"name": "Set Search Queries",
"type": "n8n-nodes-base.set",
"position": [
-48,
160
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "eca2845e-e596-46d2-a1ba-5a076cb6764a",
"name": "Query 1",
"type": "string",
"value": "Assistant administratif"
},
{
"id": "1caeac9a-c990-41ee-b6e1-187ebb7b54db",
"name": "Query 2",
"type": "string",
"value": "Assistant ADV"
},
{
"id": "ba7c83d6-cc64-4b90-8da3-8918685ac0a7",
"name": "Query 3",
"type": "string",
"value": "Administration des ventes"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "ea041fbb-0d33-4399-b345-14a28b7ccd2f",
"name": "Create Record in Airtable",
"type": "n8n-nodes-base.airtable",
"position": [
352,
160
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appnM9t2JxMCU2LQB",
"cachedResultUrl": "https://airtable.com/appnM9t2JxMCU2LQB",
"cachedResultName": "Test n8n"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblQ7A00d5iocuwfr",
"cachedResultUrl": "https://airtable.com/appnM9t2JxMCU2LQB/tblQ7A00d5iocuwfr",
"cachedResultName": "Table 2"
},
"columns": {
"value": {
"URL": "={{ $json.url }}",
"Title": "={{ $json.title }}",
"Industry": "={{ $json.linkedin_org_industry }}",
"Location": "={{ $json.linkedin_org_locations.join(', ') }}",
"Date posted": "={{ $json.date_posted }}",
"Organization": "={{ $json.organization }}",
"Recruiter URL": "={{ $json.recruiter_url }}",
"Recruiter name": "={{ $json.recruiter_name }}",
"Employment type": "={{ $json.employment_type.join(', ') }}",
"Job description": "={{ $json.description_text }}",
"Organization size": "={{ $json.linkedin_org_size }}",
"Organization type": "={{ $json.linkedin_org_type }}",
"Organization Linkedin URL": "={{ $json.organization_url }}",
"Organization foundation year": "={{ $json.linkedin_org_foundeddate }}"
},
"schema": [
{
"id": "Title",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "URL",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job description",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Job description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Date posted",
"type": "dateTime",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Date posted",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Organization",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Organization",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Organization Linkedin URL",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Organization Linkedin URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Location",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Location",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Employment type",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Employment type",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Organization size",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Organization size",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Industry",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Industry",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Organization type",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Organization type",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Organization foundation year",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Organization foundation year",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Recruiter name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Recruiter name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Recruiter URL",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Recruiter URL",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {
"typecast": true
},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
}
],
"connections": {
"Every Week at 10am": {
"main": [
[
{
"node": "Set Search Queries",
"type": "main",
"index": 0
}
]
]
},
"Set Search Queries": {
"main": [
[
{
"node": "Run Apify Actor and Fetch Results",
"type": "main",
"index": 0
}
]
]
},
"Run Apify Actor and Fetch Results": {
"main": [
[
{
"node": "Create Record in Airtable",
"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.
airtableTokenApiapifyApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow is for job seekers, recruiters, or HR teams who want to automatically monitor new job postings on LinkedIn based on specific search queries, without manually checking the platform every week. A Schedule Trigger fires the workflow every week at 10am. The Set Search…
Source: https://n8n.io/workflows/15663/ — 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.
Very straightforward workflow. It checks the Epic Games website if the HTML container with free games has changed. If it did then it will send a notification to Discord with a list of embeds containin
This n8n workflow collects leads from Google Maps, scrapes their websites via direct HTTP requests, and extracts valid email addresses — all while mimicking real user behavior to improve scraping reli
This workflow automatically scrapes business leads from Google Maps on a daily schedule and ensures only high-quality, unique leads are processed. New businesses are cleaned, validated, and deduplicat
Women creators, homemakers-turned-entrepreneurs, and feminine lifestyle brands who want a graceful, low-lift way to keep an eye on competitor content and spark weekly ideas.
This workflow automatically searches YouTube Data API for videos related to specific keywords, extracts channel data, filters channels based on performance metrics, and saves the results into Google S