{
  "openapi": "3.0.1",
  "info": {
    "title": "Net-Empregos Scraper: Portugal Job Ads [USD 0.59/1K]",
    "description": "Scrape Net-Empregos job ads in Portugal (all trades): the latest 1,000 ads from the site's feed, or the whole archive by category or town, with title, company, district, category, printed date and the full ad text. The site has no salary or contract fields. USD 0.59 per 1,000 jobs.",
    "version": "1.0",
    "x-build-id": "LjlCtWJ7nfB6z5ERl"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/usefulapi~net-empregos-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-usefulapi-net-empregos-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/usefulapi~net-empregos-scraper/runs": {
      "post": {
        "operationId": "runs-sync-usefulapi-net-empregos-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/usefulapi~net-empregos-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-usefulapi-net-empregos-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": "Keywords",
            "type": "array",
            "description": "One search per line (motorista, programador, enfermeiro, python). Net-Empregos' own keyword search is closed to robots, so the words are matched here on the ad's title, company, category and, in the feed, the first 250 characters of its text. A job matches when it has every word of one line. Leave empty for every ad.",
            "items": {
              "type": "string"
            }
          },
          "category": {
            "title": "Category",
            "enum": [
              "",
              "Administração / Secretariado",
              "Agricultura / Florestas / Pesca",
              "Arquitectura / Design",
              "Artes / Entretenimento / Media",
              "Banca / Serviços Financeiros / Seguros",
              "Beleza / Moda",
              "Biotecnologia / Farmacia",
              "Call Center / Help Desk",
              "Comercial / Vendas",
              "Comunicação Social",
              "Conservação / Manutenção / Técnica",
              "Construção Civil",
              "Contabilidade / Finanças",
              "Desporto",
              "Direito / Justiça",
              "Educação / Formação",
              "Engenharia ( Ambiente )",
              "Engenharia ( Civil )",
              "Engenharia ( Eletrotecnica )",
              "Engenharia ( Mecanica )",
              "Engenharia ( Quimica )",
              "Gestão de Empresas / Economia",
              "Gestão RH",
              "Hotelaria / Turismo",
              "Imobiliário",
              "Indústria / Produção",
              "Informática ( Analise de Sistemas )",
              "Informática ( Comercial / Gestor de Conta )",
              "Informática ( Formação )",
              "Informática ( Gestão de Redes )",
              "Informática ( Internet )",
              "Informática ( Multimedia )",
              "Informática ( Programação )",
              "Informática ( Técnico de Hardware )",
              "Lojas / Comércio / Balcão",
              "Limpezas / Domesticas",
              "Publicidade / Marketing",
              "Relações Públicas",
              "Restauração / Bares",
              "Saúde / Medicina / Enfermagem",
              "Serviços Sociais",
              "Serviços Técnicos",
              "Telecomunicações",
              "Transportes / Logística"
            ],
            "type": "string",
            "description": "Net-Empregos' own category list."
          },
          "zone": {
            "title": "Zone (district)",
            "enum": [
              "",
              "Aveiro",
              "Beja",
              "Braga",
              "Bragança",
              "Castelo Branco",
              "Coimbra",
              "Évora",
              "Faro",
              "Guarda",
              "Leiria",
              "Lisboa",
              "Portalegre",
              "Porto",
              "Santarém",
              "Setúbal",
              "Viana do Castelo",
              "Vila Real",
              "Viseu",
              "Madeira",
              "Açores",
              "Outros Locais - Estrangeiro"
            ],
            "type": "string",
            "description": "Where the ad is placed on Net-Empregos. Ads for all of Portugal are written \"( Todas as Zonas )\" and are not matched by a district."
          },
          "company": {
            "title": "Company contains",
            "type": "string",
            "description": "Only ads whose company name contains this text (Adecco, Randstad, Lidl...). Ads with a confidential company never match."
          },
          "listPages": {
            "title": "Read the older ads too (list pages)",
            "type": "boolean",
            "description": "By default the Actor reads the site's RSS feed: the latest 1,000 ads (about the last day and a half) in one request. Switch this on to read the site's list pages instead, 18 ads a page, which reach the whole archive (about 60,000 ads). Pick a town, or one category, to narrow it; otherwise the list of all ads is read. Each page costs one request and a run is slower. Cards give title, company, category, zone and date; the job page gives the text.",
            "default": false
          },
          "town": {
            "title": "Town (list pages only)",
            "type": "string",
            "description": "A town as on Net-Empregos (viseu, albufeira, vila nova de gaia). Only with \"Read the older ads too\". Takes precedence over the category."
          },
          "maxListPages": {
            "title": "Most list pages to read",
            "minimum": 1,
            "maximum": 3464,
            "type": "integer",
            "description": "Only with \"Read the older ads too\": stops a search after this many list pages (18 ads each). A search for a rare word could otherwise read thousands of pages.",
            "default": 100
          },
          "maxJobs": {
            "title": "Maximum jobs",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stop after saving this many jobs (across all searches). You pay only for jobs saved.",
            "default": 50
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Only jobs published in the last N days. 0 = any date.",
            "default": 0
          },
          "onlyNewJobs": {
            "title": "Only new jobs since the last run",
            "type": "boolean",
            "description": "Remembers the jobs already delivered for these searches (in a key-value store on your account) and saves only jobs not seen before. Ideal for daily or hourly schedules and job alerts. The first run delivers everything and remembers it.",
            "default": false
          },
          "stateKey": {
            "title": "Memory name for new-jobs mode (optional)",
            "pattern": "^[A-Za-z0-9_-]{0,60}$",
            "type": "string",
            "description": "Use the same name on several schedules to share one memory, or a new name to start fresh. Letters, digits, - and _. Empty = one memory per set of searches."
          },
          "includeDetails": {
            "title": "Open each job page for full details",
            "type": "boolean",
            "description": "Reads each job's own page for the full description and extra fields. Turn off for faster runs with list fields only (same price per job).",
            "default": true
          },
          "notifyUrl": {
            "title": "Send new jobs to (optional)",
            "pattern": "^(https://.+)?$",
            "type": "string",
            "description": "Paste a Slack or Discord webhook link, or a Zapier or Make webhook (which can email you). After each run that saved jobs you get one message with the count and up to 10 jobs with their links. With 'Only new jobs' on and a schedule, this is a free job alert. Not billed."
          },
          "descriptionFormat": {
            "title": "Description format",
            "enum": [
              "both",
              "text",
              "html",
              "none"
            ],
            "type": "string",
            "description": "Plain text, HTML, both, or none (smaller datasets).",
            "default": "both"
          },
          "maxJobsPerSearch": {
            "title": "Maximum jobs per search",
            "minimum": 0,
            "type": "integer",
            "description": "Cap for each search line, so one broad search does not use up the whole run. 0 = no cap.",
            "default": 0
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Not needed for Net-Empregos in our tests. Apify datacenter proxy or your own proxies only; residential proxy is not supported.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}