{
  "openapi": "3.0.1",
  "info": {
    "title": "Gupy.io – Public Jobs, Companies & Hiring Badges",
    "description": "Scrape public jobs from Gupy.io. Search by keyword, state, city, workplace type, job type, company, PWD, and feedback badge. Returns rich job, company, deadline, and badge fields.",
    "version": "1.0",
    "x-build-id": "g46mBN9SE7WK5HGkX"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~gupy-io-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-gupy-io-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/abotapi~gupy-io-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-gupy-io-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/abotapi~gupy-io-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-gupy-io-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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "url"
            ],
            "type": "string",
            "description": "Search mode uses the filters below. URL mode accepts portal search URLs and Gupy company job URLs.",
            "default": "search"
          },
          "searchTerm": {
            "title": "Search keyword",
            "type": "string",
            "description": "Job title, skill, or keyword. Leave empty to scrape all jobs matching the other filters.",
            "default": ""
          },
          "state": {
            "title": "State",
            "enum": [
              "",
              "Acre",
              "Alagoas",
              "Amapá",
              "Amazonas",
              "Bahia",
              "Ceará",
              "Distrito Federal",
              "Espírito Santo",
              "Goiás",
              "Maranhão",
              "Mato Grosso",
              "Mato Grosso do Sul",
              "Minas Gerais",
              "Pará",
              "Paraíba",
              "Paraná",
              "Pernambuco",
              "Piauí",
              "Rio de Janeiro",
              "Rio Grande do Norte",
              "Rio Grande do Sul",
              "Rondônia",
              "Roraima",
              "Santa Catarina",
              "São Paulo",
              "Sergipe",
              "Tocantins"
            ],
            "type": "string",
            "description": "Brazilian state filter. Leave empty for all states.",
            "default": ""
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "Exact Gupy city names. Leave empty for all cities.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "workplaceTypes": {
            "title": "Workplace types",
            "type": "array",
            "description": "Remote, hybrid, or on-site jobs. Leave empty for all workplace types.",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "on-site"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "On-site"
              ]
            },
            "default": []
          },
          "jobTypes": {
            "title": "Job types",
            "type": "array",
            "description": "Gupy vacancy type values. Leave empty for all job types.",
            "items": {
              "type": "string",
              "enum": [
                "vacancy_type_effective",
                "vacancy_type_apprentice",
                "vacancy_type_internship",
                "vacancy_legal_entity",
                "vacancy_type_trainee",
                "vacancy_type_temporary",
                "vacancy_type_freelancer",
                "vacancy_type_outsource",
                "vacancy_type_talent_pool",
                "vacancy_type_volunteer",
                "vacancy_type_parter",
                "vacancy_type_summer",
                "vacancy_type_intermittent"
              ],
              "enumTitles": [
                "Full-time (Effective)",
                "Apprentice",
                "Internship",
                "Legal Entity",
                "Trainee",
                "Temporary",
                "Freelancer",
                "Outsourced",
                "Talent Pool",
                "Volunteer",
                "Partner",
                "Summer Job",
                "Intermittent"
              ]
            },
            "default": []
          },
          "companies": {
            "title": "Companies",
            "type": "array",
            "description": "Exact Gupy career page names, for example '#sejaveriter' or 'PagBank'. Leave empty for all companies.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "pwdOnly": {
            "title": "Only PWD-accessible jobs",
            "type": "boolean",
            "description": "Return only jobs marked for people with disabilities.",
            "default": false
          },
          "friendlyBadgeOnly": {
            "title": "Only feedback-badge companies",
            "type": "boolean",
            "description": "Return only jobs from companies with Gupy feedback badge.",
            "default": false
          },
          "urls": {
            "title": "URLs",
            "type": "array",
            "description": "Portal search URLs or Gupy company job URLs. Used only when Mode is URLs.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "fetchDetails": {
            "title": "Fetch details",
            "type": "boolean",
            "description": "Fetch the full per-job record before saving each result. Applies to Search mode and to portal search URLs. Direct Gupy job URLs are always fetched in full, so this toggle does not affect them. Adds the detail-enrichment charge per enriched job.",
            "default": false
          },
          "sortBy": {
            "title": "Sort order",
            "enum": [
              "newest",
              "oldest",
              "company"
            ],
            "type": "string",
            "description": "Sort saved jobs after collection. Applies in both Search and URL mode.",
            "default": "newest"
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum matching rows to save. Fewer rows may be returned when the selected source, keyword, and filters match fewer live records.",
            "default": 20
          },
          "maxPages": {
            "title": "Max pages",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "No page limit by default. Leave empty or set 0 for unlimited; the run stops at Max items.",
            "default": 0
          },
          "pageSize": {
            "title": "Page size",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "API page size. Larger pages are faster; smaller pages are useful for debugging.",
            "default": 100
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally send the scraped jobs into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per job (title + key fields), not the full JSON; the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL (or id) of the Notion page under which job pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max jobs to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on jobs written to each connector per run. Does not affect the dataset.",
            "default": 50
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify datacenter proxy is sufficient for Gupy and is the default. Running without Apify Proxy may be rate-limited; residential is rarely needed.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": []
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}