{
  "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": "![Logo Growth AI](https://cdn.prod.website-files.com/6825df5b20329ba581df4914/68d413c43f8729fa336568a6_Logo_horizontal.png)"
      },
      "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
          }
        ]
      ]
    }
  }
}