# Vagas Brasil (`constanciodev/vagas-brasil`) Actor

Open jobs from companies hiring in Brazil via Greenhouse, Lever and Ashby public APIs, with salary in BRL, remote model, state, seniority and affirmative-action audience extracted.

- **URL**: https://apify.com/constanciodev/vagas-brasil.md
- **Developed by:** [Constancio Dev](https://apify.com/constanciodev) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 job postings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Vagas Brasil: open jobs from public ATS (Greenhouse, Lever, Ashby)

Collect every open job from companies hiring in Brazil that publish their openings on
**Greenhouse, Lever or Ashby**, and get each job back already structured: work model (remote,
hybrid, on-site), state (UF), salary range in BRL when the posting states one, seniority and
affirmative-action audience.

Built by **Constancio Dev**, a small engineering studio focused on data pipelines and B2B
automation. [constanciodev.com.br](https://constanciodev.com.br)

### Why this Actor

- **Official public APIs only.** Greenhouse, Lever and Ashby publish job boards through public
  endpoints. No login, no proxy, no headless browser: runs are fast and cheap.
- **Brazil-aware enrichment.** Salary written as "R$ 5.000 a R$ 7.000", Brazilian city and state
  names, and affirmative-action postings ("vaga exclusiva para pessoas negras", "PcD") are parsed
  into fields you can filter on.
- **Any company, not just a fixed list.** 46 companies with open jobs in Brazil come preset, checked on 14/10/2026: Brazilian ones
  (Nubank, Stone, XP, BTG, C6, Inter, QuintoAndar, VTEX...) and global ones hiring here (Datadog,
  Databricks, MongoDB, GitLab, Coinbase, Figma...). Paste the careers page URL of any other company on
  these platforms and it joins the run.
- **Monitor mode for schedules.** Run it daily and pay only for jobs that are new or changed since the last run.
- **Honest crawler.** Identifies itself, respects `robots.txt` and waits between requests to the
  same host.

### Input

| Field | What it does |
|---|---|
| `termos` | Optional. Keep only jobs whose title contains at least one of these terms. Empty returns every open job. |
| `fontes` | Preset companies to collect (all 46 by default). |
| `so_brasil` | Global companies list jobs worldwide; on (default) keeps only jobs located in Brazil or Latin America. |
| `urls_ats` | Careers page URLs of other companies on Greenhouse, Lever or Ashby. |
| `incluir_descricao` | Include the full job description text (default: true). |
| `modo_monitor` | For scheduled runs: deliver and charge only jobs that are new or changed since the last run. |

Example:

```json
{
  "termos": ["dados", "data"],
  "fontes": ["ashby:nubank", "greenhouse:quintoandar", "greenhouse:vtex"],
  "urls_ats": ["https://boards.greenhouse.io/suaempresa"],
  "incluir_descricao": false
}
```

### Output

One dataset item per job. Real item from a test run (13/10/2026):

```json
{
  "id": "ashby:nubank:6eb06a07-0f7a-4656-9864-e459efa6e41e",
  "fonte": "ashby:nubank",
  "titulo": "Staff Software Engineer - Lending Foundations (Policy & Data Platform)",
  "empresa": "nubank",
  "url": "https://jobs.ashbyhq.com/nubank/6eb06a07-0f7a-4656-9864-e459efa6e41e/application",
  "publicada_em": "2026-08-27T17:34:36.363000+00:00",
  "modelo": "remoto",
  "local": "São Paulo",
  "uf": "SP",
  "salario_min_brl": null,
  "salario_max_brl": null,
  "horas_semana": null,
  "anos_exigidos": null,
  "senioridade": "staff",
  "mercado": "brasil",
  "publico_exclusivo": [],
  "coletado_em": "2026-10-13T15:57:32.279253+00:00"
}
```

| Field | Meaning |
|---|---|
| `modelo` | `remoto`, `hibrido` or `presencial`, as declared by the posting |
| `uf` | Brazilian state code, when the location allows it |
| `salario_min_brl`, `salario_max_brl` | Monthly salary range in BRL, only when the posting states it |
| `horas_semana`, `anos_exigidos` | Weekly hours and years of experience required, when stated |
| `senioridade` | Level from the title, in Portuguese or English: `estagio`, `trainee`, `junior`, `pleno`, `senior`, `especialista` (staff, principal) or `lideranca` (manager, lead, head); `null` otherwise |
| `mercado` | `brasil` when the posting targets Brazil, `internacional` otherwise |
| `publico_exclusivo` | Affirmative-action audience the job is restricted to (`mulheres`, `negros`, `pcd`...), read in Portuguese and English; empty when open to everyone |

Fields never get guessed: when the posting does not say it, the value is `null`.

### Pricing

Pay per event: you pay only for jobs delivered to the dataset. Set a maximum cost per run in
the run options and the Actor stops when it reaches it.

### Use cases

- Recruiting and staffing agencies tracking who is hiring in Brazil.
- B2B sales teams using hiring as a buying signal.
- Market and salary research across tech companies.
- Job boards and newsletters that need a clean, structured feed.

### Em português

Coleta as vagas abertas de empresas que contratam no Brasil pelo Greenhouse, Lever e Ashby, só
por APIs públicas, e entrega cada vaga com modelo de trabalho, UF, faixa salarial em reais
(quando o anúncio informa), senioridade e público de ação afirmativa. Desenvolvido por
**Constancio Dev**.

***

Questions or a source you need: open an issue on this Actor's page, or write to
<suporte@constanciodev.com.br>.

# Actor input Schema

## `termos` (type: `array`):

Vazio traz todas as vagas abertas. Com termos, fica a vaga cujo título contém pelo menos um.

## `fontes` (type: `array`):

46 empresas com API pública de vagas e vaga no Brasil (conferidas em 14/10/2026).

## `urls_ats` (type: `array`):

Cole a URL da página de vagas de qualquer empresa nessas plataformas. Somadas às fontes escolhidas.

## `so_brasil` (type: `boolean`):

Empresa global traz vagas do mundo todo. Ligado, fica só a vaga com local no Brasil ou na América Latina; empresa brasileira passa inteira.

## `modo_monitor` (type: `boolean`):

Para execução agendada: entrega e cobra só as vagas novas ou alteradas desde a última execução.

## `incluir_descricao` (type: `boolean`):

Desligue para um dataset menor, só com os campos estruturados.

## Actor input object example

```json
{
  "termos": [
    "analista de dados"
  ],
  "fontes": [
    "greenhouse:agibank",
    "ashby:amplitude",
    "greenhouse:arcoeducacao",
    "greenhouse:bees",
    "ashby:belvo",
    "greenhouse:binance",
    "greenhouse:braze",
    "greenhouse:brex",
    "greenhouse:btgpactual",
    "greenhouse:c6bank",
    "lever:ciandt",
    "greenhouse:coinbase",
    "greenhouse:consensys",
    "greenhouse:databricks",
    "greenhouse:datadog",
    "lever:dlocal",
    "greenhouse:ebanx",
    "greenhouse:ebury",
    "greenhouse:elastic",
    "greenhouse:figma",
    "lever:flashapp",
    "greenhouse:gitlab",
    "ashby:globo",
    "greenhouse:gympass",
    "greenhouse:inter",
    "greenhouse:jusbrasil",
    "lever:kavak",
    "greenhouse:mongodb",
    "ashby:neon",
    "ashby:nubank",
    "greenhouse:okx",
    "ashby:oyster",
    "greenhouse:payoneer",
    "greenhouse:quintoandar",
    "greenhouse:rdstation",
    "ashby:snowflake",
    "greenhouse:stone",
    "lever:swile",
    "greenhouse:thoughtworks",
    "lever:toptal",
    "greenhouse:turing",
    "greenhouse:twilio",
    "greenhouse:vtex",
    "greenhouse:wildlifestudios",
    "greenhouse:xpinc",
    "ashby:zapier"
  ],
  "so_brasil": true,
  "modo_monitor": false,
  "incluir_descricao": true
}
```

# Actor output Schema

## `vagas` (type: `string`):

Every job posting collected in this run, as dataset items.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "termos": [
        "analista de dados"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("constanciodev/vagas-brasil").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "termos": ["analista de dados"] }

# Run the Actor and wait for it to finish
run = client.actor("constanciodev/vagas-brasil").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "termos": [
    "analista de dados"
  ]
}' |
apify call constanciodev/vagas-brasil --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,constanciodev/vagas-brasil"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/EGXHOFJPUpfgzE20e/builds/UpqiM31G7UBdJDNVK/openapi.json
