{
  "openapi": "3.0.1",
  "info": {
    "title": "elempleo Job Scraper — Full Descriptions & COP Salaries",
    "description": "Scrape every live job on elempleo.com (Colombia): full job description, numeric COP salary min/max, expiry date, city/region and area/profession/sector. Filter by keyword, city, industry, contract and work mode; monitor changes and export to JSON, CSV or Excel.",
    "version": "0.1",
    "x-build-id": "ucigpc0Ugd5E9vSTN"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/corvuslab~elempleo-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-corvuslab-elempleo-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/corvuslab~elempleo-scraper/runs": {
      "post": {
        "operationId": "runs-sync-corvuslab-elempleo-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/corvuslab~elempleo-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-corvuslab-elempleo-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "keywords": {
            "title": "🔑 Search keywords",
            "type": "array",
            "description": "Job search terms, e.g. \"desarrollador\", \"contador\", \"conductor\". Add several to run several searches.",
            "items": {
              "type": "string"
            }
          },
          "keyword": {
            "title": "🔑 Single keyword",
            "type": "string",
            "description": "Alternative single search term. Combined with the list above."
          },
          "startUrls": {
            "title": "📋 Start URLs",
            "type": "array",
            "description": "Paste elempleo job-detail URLs (…/co/ofertas-trabajo/…) to scrape those offers directly.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxResults": {
            "title": "🔢 Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of jobs to return across all searches. Set 0 for unlimited (bounded by how many the search has).",
            "default": 50
          },
          "cities": {
            "title": "🏙️ Cities",
            "type": "array",
            "description": "Limit to one or more Colombian cities. Leave empty for the whole country.",
            "items": {
              "type": "string",
              "enum": [
                "34",
                "10",
                "87",
                "2",
                "23914",
                "83",
                "6",
                "81",
                "12",
                "14",
                "25585",
                "8",
                "25598",
                "17",
                "16",
                "25669",
                "25590",
                "25623",
                "9",
                "25626",
                "25221",
                "18",
                "25655",
                "11",
                "7",
                "7085",
                "24897",
                "25684",
                "1",
                "25595",
                "9102",
                "86",
                "82",
                "12238",
                "26178",
                "25580",
                "2514",
                "24773",
                "24712",
                "15"
              ],
              "enumTitles": [
                "Bogotá",
                "Medellín",
                "Cali",
                "Barranquilla",
                "Bogotá alrededores",
                "Bucaramanga",
                "Cartagena",
                "Villavicencio",
                "Neiva",
                "Pereira",
                "Chía",
                "Ibagué",
                "Funza",
                "Tunja",
                "Santa Marta",
                "Tocancipá",
                "Cota",
                "Madrid",
                "Manizales",
                "Mosquera",
                "Rionegro",
                "Valledupar",
                "Soacha",
                "Montería",
                "Cúcuta",
                "Yumbo",
                "Barrancabermeja",
                "Zipaquirá",
                "Armenia",
                "Facatativá",
                "Yopal",
                "Pasto",
                "Sincelejo",
                "Palmira",
                "Inírida",
                "Cajicá",
                "Buenaventura",
                "Duitama",
                "Florencia",
                "Popayán"
              ]
            }
          },
          "industry": {
            "title": "🏭 Industry / sector",
            "enum": [
              "",
              "123",
              "134",
              "114",
              "110",
              "125",
              "106",
              "124",
              "115",
              "102",
              "107",
              "105",
              "111",
              "130",
              "113",
              "135",
              "138",
              "103",
              "129",
              "120",
              "126",
              "128",
              "122",
              "101",
              "127",
              "117",
              "132",
              "118",
              "104",
              "139",
              "112",
              "121",
              "136",
              "116",
              "109",
              "137",
              "131",
              "119",
              "108"
            ],
            "type": "string",
            "description": "Limit to a company industry.",
            "default": ""
          },
          "contractType": {
            "title": "📄 Contract type",
            "enum": [
              "",
              "1",
              "2",
              "5",
              "3",
              "4",
              "6"
            ],
            "type": "string",
            "description": "Filter by contract type.",
            "default": ""
          },
          "workModality": {
            "title": "🏠 Work mode",
            "enum": [
              "",
              "100",
              "101",
              "102"
            ],
            "type": "string",
            "description": "Filter by on-site / remote / hybrid.",
            "default": ""
          },
          "positionLevel": {
            "title": "📈 Position level",
            "enum": [
              "",
              "1",
              "2",
              "3",
              "4",
              "6"
            ],
            "type": "string",
            "description": "Filter by seniority.",
            "default": ""
          },
          "experience": {
            "title": "🎓 Experience required",
            "enum": [
              "",
              "1",
              "2",
              "3",
              "4",
              "5",
              "6",
              "7",
              "8"
            ],
            "type": "string",
            "description": "Filter by required experience.",
            "default": ""
          },
          "publishDate": {
            "title": "🗓️ Posted within",
            "enum": [
              "0",
              "1",
              "3",
              "7",
              "15",
              "30"
            ],
            "type": "string",
            "description": "Only jobs published within the last N days.",
            "default": "0"
          },
          "sortExpression": {
            "title": "↕️ Sort by",
            "enum": [
              "PublishDate_Desc",
              "Relevance_Desc",
              "Salary_Desc",
              "Salary_Asc",
              "PublishDate_Asc"
            ],
            "type": "string",
            "description": "Order of the returned jobs.",
            "default": "PublishDate_Desc"
          },
          "requireContact": {
            "title": "📇 Require contact details",
            "enum": [
              "off",
              "email",
              "phone",
              "either",
              "both"
            ],
            "type": "string",
            "description": "off = keep everything; email / phone = require that channel; either = at least one; both = email and phone. Screened at emit time, so it also trims what you're billed for.",
            "default": "off"
          },
          "includeDetails": {
            "title": "🔬 Fetch full details",
            "type": "boolean",
            "description": "Fetch each job's detail page for numeric salary, expiry date, exact location and area / profession / sector. Turn off for the fastest, cheapest runs (you still get the description).",
            "default": true
          },
          "descriptionFormat": {
            "title": "📝 Description format",
            "enum": [
              "all",
              "text",
              "html",
              "markdown"
            ],
            "type": "string",
            "description": "Which representation(s) of the job description to include.",
            "default": "all"
          },
          "compact": {
            "title": "📦 Compact records",
            "type": "boolean",
            "description": "Emit only the core fields. Ideal for AI agents and MCP clients.",
            "default": false
          },
          "excludeEmptyFields": {
            "title": "🧹 Drop empty fields",
            "type": "boolean",
            "description": "Remove null, empty-string and empty-array fields from each record.",
            "default": false
          },
          "incrementalMode": {
            "title": "♻️ Incremental mode",
            "type": "boolean",
            "description": "Track state between runs and tag every job with a changeType (NEW / UPDATED / UNCHANGED / EXPIRED).",
            "default": false
          },
          "stateKey": {
            "title": "🗝️ State key",
            "type": "string",
            "description": "Stable name for the tracked search. Leave empty to derive one from your search settings."
          },
          "emitUnchanged": {
            "title": "🔁 Include unchanged records",
            "type": "boolean",
            "description": "Also emit jobs that have not changed since the previous run.",
            "default": false
          },
          "emitExpired": {
            "title": "🗑️ Include expired records",
            "type": "boolean",
            "description": "Emit jobs present last run but gone now.",
            "default": false
          },
          "telegramToken": {
            "title": "💬 Telegram bot token",
            "type": "string",
            "description": "Bot token from @BotFather."
          },
          "telegramChatId": {
            "title": "🆔 Telegram chat ID",
            "type": "string",
            "description": "Chat or channel ID, e.g. \"-100123456789\" or \"@yourchannel\"."
          },
          "slackWebhookUrl": {
            "title": "💼 Slack webhook URL",
            "type": "string",
            "description": "Slack incoming-webhook URL."
          },
          "discordWebhookUrl": {
            "title": "🎮 Discord webhook URL",
            "type": "string",
            "description": "Discord incoming-webhook URL."
          },
          "webhookUrl": {
            "title": "🪝 Webhook URL",
            "type": "string",
            "description": "Any HTTPS endpoint. Receives a JSON POST with the matched jobs — works with n8n, Make and Zapier."
          },
          "webhookHeaders": {
            "title": "🧾 Webhook headers",
            "type": "object",
            "description": "Extra headers for the webhook request, e.g. {\"Authorization\": \"Bearer xyz\"}."
          },
          "notificationLimit": {
            "title": "🔢 Records per notification",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many jobs to include in each notification message.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy configuration",
            "type": "object",
            "description": "Optional. elempleo works direct (no proxy) — leave this off for the cheapest runs. Enable a proxy only if you hit rate limits on very large runs.",
            "default": {
              "useApifyProxy": false
            }
          },
          "maxRequestRetries": {
            "title": "🔄 Max request retries",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "How many times to retry a failed request before giving up on it.",
            "default": 3
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}