Automatización de búsqueda de empleos con Job Search Global API y Google Sheets

Intermedio

Este es unContent Creation, Multimodal AIflujo de automatización del dominio deautomatización que contiene 15 nodos.Utiliza principalmente nodos como If, Set, Code, EmailSend, HttpRequest. Automatización de búsqueda de empleos con Job Search Global API y Google Sheets

Requisitos previos
  • Pueden requerirse credenciales de autenticación para la API de destino
  • Credenciales de API de Google Sheets
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "meta": {
    "instanceId": "60c025075753afcab9f803964b4caaca9402f435deb4efafbb8e3b93b54d8752",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "1f0a7b3a-a6ab-4fb9-b1ef-4f4d5bc48a01",
      "name": "Establecer Término de Búsqueda",
      "type": "n8n-nodes-base.set",
      "position": [
        272,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "bb36d63f-a074-40b1-9d83-dd573566f6af",
              "name": "Search Term",
              "type": "string",
              "value": "Web Developer"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "0a66e398-1de3-4dd3-8b5f-6fd8c6b6358c",
      "name": "Obtener Listados de Empleo",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        496,
        0
      ],
      "parameters": {
        "url": "https://job-search-global.p.rapidapi.com/search.php",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "pageNumber",
              "value": "1"
            },
            {
              "name": "pageSize",
              "value": "10"
            },
            {
              "name": "searchQuery",
              "value": "={{ $json[\"Search Term\"] }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "x-rapidapi-host",
              "value": "job-search-global.p.rapidapi.com"
            },
            {
              "name": "x-rapidapi-key",
              "value": "your key"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "16e842c1-fd91-4082-b015-387632eff19f",
      "name": "Verificar Respuesta de API",
      "type": "n8n-nodes-base.if",
      "position": [
        784,
        0
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "ef7b71fa-c726-4e08-8fdb-55c215227bb0",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "={{ $json.status }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "ec64192d-9865-45f0-b4be-e3ee18ebbe5c",
      "name": "Enviar Correo de Notificación de Fallo",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        1072,
        224
      ],
      "webhookId": "f1359f08-e267-44d2-9fca-505f66b5feb6",
      "parameters": {
        "html": "Hello,\n\nThe job search automation workflow encountered a failure while attempting to fetch job listings from the API.\n\nPlease review the API request and ensure the following:\n- API key and host are valid and not expired.\n- The request payload is correctly formatted.\n- The API endpoint is available.\n\nYou may also want to inspect the response for further debugging.\n\nRegards,  \nn8n Workflow Bot\n",
        "options": {},
        "subject": "🚨 Job Search API Failure Notification",
        "toEmail": "dev@gmail.com",
        "fromEmail": "itadmin@gmail.com"
      },
      "credentials": {
        "smtp": {
          "id": "nPwKPPgVavimTJX4",
          "name": "SMTP account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "96a773ee-a81b-4aca-8ad1-9d982bd0a2cd",
      "name": "Activador Programado",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        0,
        0
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 6
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "294c8010-0792-4396-89ec-03ae8c60fe30",
      "name": "Nota Adhesiva",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -64,
        -112
      ],
      "parameters": {
        "height": 240,
        "content": "Triggers the workflow automatically every 6 hours.\nEnsures regular job search updates without manual execution."
      },
      "typeVersion": 1
    },
    {
      "id": "9765dd80-dc0b-407f-a8b9-1746aaf44161",
      "name": "Nota Adhesiva1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        192,
        -112
      ],
      "parameters": {
        "height": 240,
        "content": "Defines the job search keyword (e.g., “Web Developer”).\nThis value is dynamically inserted into the API request body."
      },
      "typeVersion": 1
    },
    {
      "id": "b1607d91-4603-4df8-b35d-7b7bb12ded61",
      "name": "Nota Adhesiva2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        448,
        -112
      ],
      "parameters": {
        "height": 240,
        "content": "Sends a POST request to the Job Search Global API.\nFetches job data based on the search term, limited to 10 results per request."
      },
      "typeVersion": 1
    },
    {
      "id": "5ca49f7d-2598-4403-ba55-7311e4208d6e",
      "name": "Nota Adhesiva3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        704,
        -112
      ],
      "parameters": {
        "height": 240,
        "content": "Evaluates whether the API returned a successful response.\nBranches the workflow into success (data processing) or failure (email alert)."
      },
      "typeVersion": 1
    },
    {
      "id": "c70bdcd3-313b-4f95-8dc0-4287982f41ae",
      "name": "Nota Adhesiva4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1056,
        -256
      ],
      "parameters": {
        "height": 256,
        "content": "Extracts the job listings array from the API response.\nTransforms it into individual records for Google Sheets."
      },
      "typeVersion": 1
    },
    {
      "id": "785dd467-f560-4430-af77-3c935a5c6ccb",
      "name": "Guardar en Google Hoja1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1392,
        -128
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "company",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "postDate",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "postDate",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "jobSource",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "jobSource",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "slug",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "slug",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sentiment",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "sentiment",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "dateAdded",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "dateAdded",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tags",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "tags",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "viewCount",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "viewCount",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [
            "title"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": ""
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "Rt0RWApx8PL9t0RF",
          "name": "Google Docs account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "e8456e00-4912-4d6c-a962-717cecf5ef38",
      "name": "Extraer Datos de Empleo",
      "type": "n8n-nodes-base.code",
      "position": [
        1120,
        -144
      ],
      "parameters": {
        "jsCode": "return $input.first().json.data.data;"
      },
      "typeVersion": 2
    },
    {
      "id": "58681808-71b7-4041-b88a-70149c74fbf4",
      "name": "Nota Adhesiva5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1312,
        -256
      ],
      "parameters": {
        "height": 256,
        "content": "Appends or updates job listings in a specific Google Sheet.\nUses \"title\" as the matching column to prevent duplicates."
      },
      "typeVersion": 1
    },
    {
      "id": "4bad0177-fc01-4169-a022-882c1c313d92",
      "name": "Nota Adhesiva6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1024,
        112
      ],
      "parameters": {
        "height": 288,
        "content": "Sends an email to notify of API failure or bad response.\nHelps in quickly identifying issues with the API call or authentication."
      },
      "typeVersion": 1
    },
    {
      "id": "b0de1b25-f4b1-47dd-8a1b-1c8e47faba4d",
      "name": "Nota Adhesiva7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -896,
        -368
      ],
      "parameters": {
        "width": 576,
        "height": 880,
        "content": "#  Job Search Automation Workflow \n\n**Description:**  \nThis workflow automates job searches by querying the Job Search Global API every 6 hours for the keyword \"Web Developer\". It processes the API response, extracts job listings, and appends or updates the results in a Google Sheet. If the API response indicates failure, it sends an email notification alerting the admin.\n\n\n### Workflow Steps:\n\n1. **Schedule Trigger**  \n   Runs the workflow automatically every 6 hours.\n\n2. **Set Search Term**  \n   Defines the job search keyword dynamically used in the API request (`\"Web Developer\"`).\n\n3. **Fetch Job Listings**  \n   Sends a POST request to the Job Search Global API with pagination parameters.\n\n4. **Check API Response**  \n   Validates if the API response status is successful.\n\n5. **Extract Job Data**  \n   Parses the job listings array from the API response for further processing.\n\n6. **Save to Google Sheet1**  \n   Appends or updates the extracted job listings in a specified Google Sheet, using the job title to avoid duplicates.\n\n7. **Send Failure Notification Email** (Conditional)  \n   Sends an alert email if the API response fails or returns an error.\n\n---\n\n### Notes:  \n- Uses environment variables for API keys and authentication.  \n- Prevents duplicate job entries by matching on the job title.  \n- Includes helpful sticky notes explaining each node's purpose.\n"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "1f0a7b3a-a6ab-4fb9-b1ef-4f4d5bc48a01": {
      "main": [
        [
          {
            "node": "0a66e398-1de3-4dd3-8b5f-6fd8c6b6358c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e8456e00-4912-4d6c-a962-717cecf5ef38": {
      "main": [
        [
          {
            "node": "785dd467-f560-4430-af77-3c935a5c6ccb",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "96a773ee-a81b-4aca-8ad1-9d982bd0a2cd": {
      "main": [
        [
          {
            "node": "1f0a7b3a-a6ab-4fb9-b1ef-4f4d5bc48a01",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "16e842c1-fd91-4082-b015-387632eff19f": {
      "main": [
        [
          {
            "node": "e8456e00-4912-4d6c-a962-717cecf5ef38",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "ec64192d-9865-45f0-b4be-e3ee18ebbe5c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0a66e398-1de3-4dd3-8b5f-6fd8c6b6358c": {
      "main": [
        [
          {
            "node": "16e842c1-fd91-4082-b015-387632eff19f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Intermedio - Creación de contenido, IA Multimodal

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Flujos de trabajo relacionados recomendados

Información del flujo de trabajo
Nivel de dificultad
Intermedio
Número de nodos15
Categoría2
Tipos de nodos8
Descripción de la dificultad

Adecuado para usuarios con experiencia intermedia, flujos de trabajo de complejidad media con 6-15 nodos

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34