{
  "openapi": "3.0.1",
  "info": {
    "title": "InfoJobs Spain Job Scraper: Ofertas de Empleo",
    "description": "Scrape InfoJobs Spain job offers (ofertas de empleo) by keyword, province, city, category, remote or hybrid work, contract, hours, education, minimum salary and date. Get structured pay, full description, skills and languages as JSON, CSV or Excel. Monitor only new offers on a schedule.",
    "version": "0.2",
    "x-build-id": "QjNTmXnns4BEuNuSe"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~infojobs-spain-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-infojobs-spain-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/getascraper~infojobs-spain-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-infojobs-spain-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/getascraper~infojobs-spain-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-infojobs-spain-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": {
          "startUrls": {
            "title": "InfoJobs search links",
            "type": "array",
            "description": "Optional. Paste InfoJobs search result links (for example a filtered search you built on infojobs.net, or a province or category page). When links are given, the filters below are ignored and each link is collected in turn. Leave empty to search with the filters below.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Job title, skill or company to search for, for example camarero, python or enfermera. Leave empty to list the newest offers in Spain.",
            "default": ""
          },
          "provinces": {
            "title": "Provinces",
            "type": "array",
            "description": "Only offers in these Spanish provinces. Pick several to combine them. Leave empty for all of Spain.",
            "items": {
              "type": "string",
              "enum": [
                "28",
                "2",
                "3",
                "4",
                "5",
                "6",
                "7",
                "8",
                "9",
                "10",
                "11",
                "12",
                "13",
                "14",
                "15",
                "16",
                "17",
                "18",
                "19",
                "21",
                "22",
                "23",
                "24",
                "25",
                "26",
                "27",
                "29",
                "20",
                "30",
                "31",
                "32",
                "33",
                "34",
                "35",
                "36",
                "37",
                "38",
                "39",
                "40",
                "41",
                "46",
                "42",
                "43",
                "44",
                "45",
                "47",
                "48",
                "49",
                "50",
                "51",
                "52",
                "53"
              ],
              "enumTitles": [
                "A Coruña",
                "Álava/Araba",
                "Albacete",
                "Alicante/Alacant",
                "Almería",
                "Asturias",
                "Ávila",
                "Badajoz",
                "Barcelona",
                "Burgos",
                "Cáceres",
                "Cádiz",
                "Cantabria",
                "Castellón/Castelló",
                "Ceuta",
                "Ciudad Real",
                "Córdoba",
                "Cuenca",
                "Girona",
                "Granada",
                "Guadalajara",
                "Guipúzcoa/Gipuzkoa",
                "Huelva",
                "Huesca",
                "Islas Baleares/Illes Balears",
                "Jaén",
                "La Rioja",
                "Las Palmas",
                "León",
                "Lleida",
                "Lugo",
                "Madrid",
                "Málaga",
                "Melilla",
                "Murcia",
                "Navarra",
                "Ourense",
                "Palencia",
                "Pontevedra",
                "Salamanca",
                "Santa Cruz de Tenerife",
                "Segovia",
                "Sevilla",
                "Soria",
                "Tarragona",
                "Teruel",
                "Toledo",
                "Valencia/València",
                "Valladolid",
                "Vizcaya/Bizkaia",
                "Zamora",
                "Zaragoza"
              ]
            },
            "default": []
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "Only offers in these cities, typed as they appear on InfoJobs, for example Madrid or Sabadell. Combine with provinces to narrow further.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Job categories",
            "type": "array",
            "description": "Only offers in these InfoJobs categories, for example Informática y telecomunicaciones. Leave empty for every category.",
            "items": {
              "type": "string",
              "enum": [
                "20",
                "10",
                "170",
                "30",
                "190",
                "40",
                "50",
                "60",
                "70",
                "150",
                "80",
                "90",
                "100",
                "110",
                "180",
                "120",
                "130",
                "140",
                "210",
                "160",
                "200"
              ],
              "enumTitles": [
                "Administración Pública",
                "Administración de empresas",
                "Atención a clientes",
                "Calidad, producción e I+D",
                "Comercial y ventas",
                "Compras, logística y almacén",
                "Diseño y artes gráficas",
                "Educación y formación",
                "Finanzas y banca",
                "Informática y telecomunicaciones",
                "Ingenieros y técnicos",
                "Inmobiliario y construcción",
                "Legal",
                "Marketing y comunicación",
                "Otros",
                "Profesiones, artes y oficios",
                "Recursos humanos",
                "Sanidad y salud",
                "Sector Farmacéutico",
                "Turismo y restauración",
                "Ventas al detalle"
              ]
            },
            "default": []
          },
          "remoteWork": {
            "title": "Work model",
            "type": "array",
            "description": "Filter by on-site, hybrid or fully remote. Pick Fully remote to get remote-only jobs in Spain, a filter that most InfoJobs scrapers do not expose.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "3",
                "2"
              ],
              "enumTitles": [
                "On-site",
                "Hybrid",
                "Fully remote"
              ]
            },
            "default": []
          },
          "contractTypes": {
            "title": "Contract types",
            "type": "array",
            "description": "Only offers with these contract types, for example Permanent or Freelance. Leave empty for all contract types.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "8",
                "9",
                "10",
                "4",
                "3",
                "6",
                "5"
              ],
              "enumTitles": [
                "Permanent (indefinido)",
                "Fixed-term",
                "Permanent seasonal (fijo discontinuo)",
                "Freelance (autónomo)",
                "Part-time contract",
                "Training / internship (formativo)",
                "Relief contract (relevo)",
                "Other contracts"
              ]
            },
            "default": []
          },
          "workdays": {
            "title": "Working hours",
            "type": "array",
            "description": "Only offers with this schedule, such as full-time or part-time mornings. Leave empty for all schedules.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5",
                "6",
                "7",
                "8",
                "9",
                "10"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time, mornings",
                "Part-time, afternoons",
                "Part-time, nights",
                "Part-time, any shift",
                "Intensive, mornings",
                "Intensive, afternoons",
                "Intensive, nights",
                "Intensive, any shift",
                "Any schedule"
              ]
            },
            "default": []
          },
          "education": {
            "title": "Education level",
            "type": "array",
            "description": "Only offers asking for this education level, for example Bachelor degree or Master.",
            "items": {
              "type": "string",
              "enum": [
                "10",
                "20",
                "50",
                "35",
                "60",
                "30",
                "55",
                "110",
                "120",
                "125",
                "140",
                "130",
                "143",
                "147",
                "150",
                "160",
                "170"
              ],
              "enumTitles": [
                "No formal education",
                "Compulsory secondary (ESO)",
                "Baccalaureate (Bachillerato)",
                "Vocational, intermediate (Ciclo Medio)",
                "Vocational, higher (Ciclo Superior)",
                "FP intermediate",
                "FP higher",
                "Diploma (Diplomatura)",
                "Technical engineering degree",
                "Bachelor degree (Grado)",
                "Licentiate (Licenciatura)",
                "Engineering degree (Ingeniería Superior)",
                "Postgraduate",
                "Master",
                "Doctorate",
                "Other titles, certifications and licences",
                "Other courses and non-regulated training"
              ]
            },
            "default": []
          },
          "salaryMin": {
            "title": "Minimum gross salary",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Only offers whose advertised gross salary is at or above this amount in euros. Offers that hide their salary are excluded when this is set. 0 means no salary filter.",
            "default": 0
          },
          "salaryPeriod": {
            "title": "Salary period",
            "enum": [
              "YEAR",
              "MONTH"
            ],
            "type": "string",
            "description": "Whether the minimum salary above is a yearly or a monthly amount.",
            "default": "YEAR"
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "ANY",
              "_24_HOURS",
              "_7_DAYS",
              "_15_DAYS"
            ],
            "type": "string",
            "description": "Only offers published in this time window. Combine with the new-postings monitor for a daily feed.",
            "default": "ANY"
          },
          "sortBy": {
            "title": "Sort order",
            "enum": [
              "PUBLICATION_DATE",
              "RELEVANCE"
            ],
            "type": "string",
            "description": "Newest first returns the most recently published offers first. Most relevant only differs when a keyword is set.",
            "default": "PUBLICATION_DATE"
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Give this search a name (letters, numbers and dashes) to turn on new-postings mode. The first run returns the matches and remembers them; every later run with the same name returns only offers not delivered before. Use one name per saved search or schedule. Leave empty for a normal one-off run.",
            "default": ""
          },
          "resetMonitor": {
            "title": "Reset monitor memory",
            "type": "boolean",
            "description": "Forget every offer remembered under the monitor name above and start fresh, so the next results are treated as a first run.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum offers",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Stop after this many offers across all searches. Each page of InfoJobs results holds about 20 offers.",
            "default": 20
          },
          "includeDescription": {
            "title": "Include full description",
            "type": "boolean",
            "description": "Add the complete offer text, plus the skills, languages and years of experience detected in it. Turn off for lighter rows.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Spanish residential proxies are pre-selected because InfoJobs blocks most datacenter addresses. Change only if you know what you are doing.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "ES"
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}