{
  "openapi": "3.0.1",
  "info": {
    "title": "Gupy Jobs Scraper",
    "description": "Scrape public Gupy job listings and return each job's title, company, description, location, work mode, contract type, publish date, deadline and application URL. Search by keywords or filter by state, city, work mode, contract type or PcD status; results from multiple queries are deduplicated.",
    "version": "0.1",
    "x-build-id": "iYd7VJ0bBqGQXmceJ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/axiomworks~gupy-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-axiomworks-gupy-jobs-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/axiomworks~gupy-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-axiomworks-gupy-jobs-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/axiomworks~gupy-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-axiomworks-gupy-jobs-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": {
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Job keywords to search on Gupy, one per line, e.g. 'desenvolvedor' or 'analista de dados' (Portuguese works best, accents allowed). Each term is a separate search filtered by the fields below. Leave empty to list all open jobs that match the filters. A term with no matches returns 0 items, not an error.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Gupy search URLs",
            "type": "array",
            "description": "portal.gupy.io search links copied from the browser, e.g. [{\"url\": \"https://portal.gupy.io/job-search/term=vendedor&state=São Paulo&workplaceTypes[]=on-site\"}]. Plain URL strings also work. The term, state, city, work-mode, job-type, company and PwD filters in the link are used; fields below fill in only what the link leaves out. Company career sites (*.gupy.io) are not supported."
          },
          "companyName": {
            "title": "Company name",
            "type": "string",
            "description": "Only jobs from this company, written exactly as Gupy shows it (case-sensitive), e.g. 'Cresol Oficial'. A partial or misspelled name returns 0 items."
          },
          "state": {
            "title": "State",
            "type": "string",
            "description": "Brazilian state, full name as Gupy writes it, e.g. 'São Paulo', 'Paraná', 'Minas Gerais'. Remote jobs have no state, so combining this with work mode 'remote' usually returns nothing."
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "City name, e.g. 'Curitiba' or 'Manaus'. Works alone or together with state."
          },
          "workplaceTypes": {
            "title": "Work mode",
            "type": "array",
            "description": "Work modes to include: 'remote', 'hybrid', 'on-site'. Empty = all. Each value is searched separately and merged, so maxItems may be filled by the first value before the next one is reached.",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "on-site"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "On-site"
              ]
            },
            "default": []
          },
          "jobTypes": {
            "title": "Job types",
            "type": "array",
            "description": "Contract types to include, e.g. 'vacancy_type_effective' (CLT), 'vacancy_type_internship' (estágio), 'vacancy_type_apprentice', 'vacancy_type_trainee', 'vacancy_type_temporary', 'vacancy_legal_entity' (PJ). Empty = all. Each value is a separate search, merged and de-duplicated.",
            "items": {
              "type": "string",
              "enum": [
                "vacancy_type_effective",
                "vacancy_type_internship",
                "vacancy_type_apprentice",
                "vacancy_type_trainee",
                "vacancy_type_temporary",
                "vacancy_type_talent_pool",
                "vacancy_legal_entity",
                "vacancy_type_autonomous",
                "vacancy_type_freelancer",
                "vacancy_type_associate",
                "vacancy_type_lecturer",
                "vacancy_type_volunteer",
                "vacancy_type_summer",
                "vacancy_type_outsource",
                "vacancy_type_intermittent",
                "vacancy_type_parter"
              ],
              "enumTitles": [
                "Effective (CLT)",
                "Internship (estágio)",
                "Apprentice (jovem aprendiz)",
                "Trainee",
                "Temporary",
                "Talent pool",
                "Legal entity (PJ)",
                "Autonomous",
                "Freelancer",
                "Associate",
                "Lecturer",
                "Volunteer",
                "Summer job",
                "Outsourced",
                "Intermittent",
                "Partner"
              ]
            },
            "default": []
          },
          "pwdOnly": {
            "title": "Only jobs for people with disabilities (PcD)",
            "type": "boolean",
            "description": "If true, return only jobs Gupy flags for people with disabilities (PcD / isPWD). Default false returns all jobs.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of jobs to return in total, shared across all search terms, URLs and filter values, 1-10000, default 50. The run stops as soon as this many are saved, and you are charged only for results returned. One search can reach about 10,000 jobs; narrow by state, city or work mode to go deeper.",
            "default": 50
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy for requests, default none (direct). Rate-limited or blocked requests are retried through Apify Proxy anyway; turn it on here only if runs keep getting blocked.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}