{
  "openapi": "3.0.1",
  "info": {
    "title": "Revelo LATAM Talent Scraper: Hire Costs, Salaries & Interviews",
    "description": "Scrape Revelo's public LATAM nearshore tech-talent catalog: hiring pay bands, country salary breakdowns for Brazil, Mexico, Colombia, Argentina and Peru, job description templates, and interview questions. Covers all four Revelo page families, not just hire and job pages. $0.79 per 1,000 pages.",
    "version": "0.0",
    "x-build-id": "Y7ojZZvAObn51SNjl"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~revelo-latam-talent-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-revelo-latam-talent-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~revelo-latam-talent-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-revelo-latam-talent-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~revelo-latam-talent-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-revelo-latam-talent-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": {
          "pageFamilies": {
            "title": "Page Families to Scrape",
            "type": "array",
            "description": "Choose which public Revelo content catalogs to collect. Hire and Job Description pages are the two families the existing Revelo scrapers on Apify Store already cover. Salary (country-level pay bands for Brazil, Mexico, Colombia, Argentina and Peru) and Interview Questions are not covered by either of them, even though both are listed in Revelo's own sitemap, so selecting them gets you data those actors cannot provide.",
            "items": {
              "type": "string",
              "enum": [
                "hire",
                "salary",
                "job_description",
                "interview_questions"
              ],
              "enumTitles": [
                "Hire (role + LatAm-wide monthly cost bands)",
                "Salary (country-specific pay bands and employer cost)",
                "Job Description (responsibilities and requirements templates)",
                "Interview Questions (role-specific Q&A)"
              ]
            },
            "default": [
              "hire",
              "salary",
              "job_description",
              "interview_questions"
            ]
          },
          "techOrRoleFilter": {
            "title": "Technology or Role Filter",
            "type": "array",
            "description": "Only scrape pages whose URL slug contains one of these terms, for example \"python\", \"react\" or \"data-engineer\". Matching is case-insensitive and checks for a partial match, so \"engineer\" also matches \"data-engineer\" and \"devops-engineer\". Leave empty to scrape every technology or role in the selected page families.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "countryFilter": {
            "title": "Country Filter (Salary pages only)",
            "type": "array",
            "description": "Only applies to Salary pages, the family with country-specific variants. Enter countries to include, for example \"brazil\" or \"mexico\"; Revelo also publishes country-agnostic global salary pages, which are always included regardless of this filter. Leave empty to include every country plus the global pages.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "seniorityFilter": {
            "title": "Seniority Filter (Hire & Salary pages)",
            "type": "array",
            "description": "Only return compensation data for these seniority tiers, on Hire and Salary pages. For example, selecting only Senior drops the Junior and Mid-Level cost/salary figures from the output while keeping everything else on the page (FAQs, responsibilities, questions). Leave empty to return every tier Revelo publishes.",
            "items": {
              "type": "string",
              "enum": [
                "junior",
                "midLevel",
                "senior"
              ],
              "enumTitles": [
                "Junior",
                "Mid-Level",
                "Senior"
              ]
            },
            "default": []
          },
          "maxItems": {
            "title": "Max Pages to Scrape",
            "minimum": 1,
            "maximum": 1200,
            "type": "integer",
            "description": "Maximum total number of pages to collect across all selected page families combined. Kept low by default so a run finishes quickly; raise it once you know which families and filters you need.",
            "default": 20
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Revelo's hire, salary, job-description and interview-question pages are plain server-rendered HTML with no anti-bot or IP-quality gating (verified with direct requests), so the default Apify datacenter proxy works reliably and is far cheaper than residential. Only switch to residential if you start seeing blocked requests.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}