# Catho Scraper — Brazil Jobs, Salaries & Companies (`hipersoft/catho-scraper`) Actor

Scrape Brazilian job vacancies from Catho (catho.com.br): title, company, city, state, openings, salary text and range, contract type (CLT, PJ…), full description, posting date and link. Search any job title in any Brazilian city. Export CSV/JSON.

- **URL**: https://apify.com/hipersoft/catho-scraper.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.00075 / job

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Catho Scraper: Brazil Job Vacancies, Salaries & Companies

**Catho Scraper** extracts job vacancies (vagas de emprego) from **Catho (catho.com.br)**, one of Brazil's largest job boards. Every vacancy includes the **job title, company, city, state, number of openings, salary as shown and salary range, contract type (CLT/efetivo, PJ, temporário, estágio…), full job description, posting date, postal code and link**, plus sponsored and active-recruiter flags. Search any **job title** in any **Brazilian city**, and export to **CSV, Excel or JSON**.

### What does Catho Scraper do?

- 🇧🇷 **Search any profession**: analista financeiro, vendedor, enfermeiro, motorista, desenvolvedor, auxiliar administrativo…
- 📍 **Filter by city**: São Paulo, Rio de Janeiro, Belo Horizonte, Curitiba, Porto Alegre, Recife… or all of Brazil.
- 💰 **Salaries**: salary as displayed plus the numeric salary range (min/max per month) when available.
- 📄 **Contract type**: CLT (efetivo), PJ, temporário, estágio and more.
- 📝 **Full job description** with activities and requirements.
- 🏢 **Company name**, number of openings, posting date and postal code.
- ⭐ **Sponsored** and **active recruiter** flags.

### What data can you scrape from Catho?

| Field | Description |
|---|---|
| Job ID, title, link | Catho vacancy |
| Company | Hiring company |
| Location | City, state, postal code |
| Openings | Number of positions |
| Salary | Displayed salary, min/max, unit, currency |
| Contract type | CLT, PJ, temporário, estágio… |
| Description | Full vacancy description |
| Posted | Posting date and label |
| Flags | Sponsored, active recruiter |

### Use cases for Brazilian job data

- **Recruiters and staffing agencies (recrutamento e seleção)**: find companies hiring by role and city.
- **Salary research**: benchmark published salary ranges across Brazil.
- **B2B prospecting**: hiring companies are growing companies and good leads for HR and benefits services.
- **Job aggregators and WhatsApp/Telegram groups**: publish fresh vagas automatically.
- **Labour-market analytics**: track demand by profession, state and contract type.

### How to scrape Catho

1. Click **Try for free** to open Catho Scraper in Apify Console.
2. Enter **job titles** and optionally **cities** (with state code).
3. Keep **Include full details** on for descriptions and salary ranges.
4. Set **Max jobs** and click **Start**.
5. Download the vacancies as **CSV, Excel or JSON**.

### Input

#### Example input

```json
{
  "keywords": ["analista financeiro", "vendedor"],
  "locations": ["São Paulo SP", "Campinas SP"],
  "includeDetails": true,
  "maxItems": 500
}
```

| Field | Description |
|---|---|
| **Job titles** | Professions in Portuguese, one search each. |
| **Cities** | Brazilian cities with state code. Empty = all of Brazil. |
| **Include full details** | Description, contract type, salary range, date. |
| **Catho search links** | Search-results links. Override job titles. |
| **Max jobs** | Stop after this many (0 = no limit). |

### Output

#### Vacancy example

```json
{
  "jobId": "38700995",
  "title": "Assistente Financeiro",
  "url": "https://www.catho.com.br/vagas/assistente-financeiro/38700995/",
  "company": "KAED CONTABILIDADE",
  "openings": 1,
  "location": "São Paulo",
  "salaryText": "R$ 3.500",
  "published": "Publicada Ontem",
  "sponsored": true,
  "activeRecruiter": false,
  "description": "Descrição das Atividades:\nContas à receber, emissão de boletos, envio de arquivo remessa para os bancos, emissão de notas fiscais, conciliação bancária…",
  "datePosted": "2026-10-05T23:59:59Z",
  "contractType": "CLT (Efetivo)",
  "salaryMin": 3001,
  "salaryMax": 4000,
  "salaryUnit": "MONTH",
  "currency": "BRL",
  "postalCode": "03086-050",
  "state": "SP"
}
```

#### Output schema

| Field | Type | Description |
|---|---|---|
| `jobId`, `title`, `url` | string | Vacancy. |
| `company` | string | Hiring company. |
| `openings` | number | Number of positions. |
| `location`, `state`, `street`, `postalCode` | string | Location. |
| `salaryText` | string | Salary as displayed. |
| `salaryMin`, `salaryMax`, `salaryUnit`, `currency` | mixed | Salary range. |
| `contractType` | string | Contract type. |
| `description` | string | Full description. |
| `published`, `datePosted`, `validThrough` | string | Dates. |
| `sponsored`, `activeRecruiter` | boolean | Flags. |
| `search`, `scrapedAt` | string | Source info. |

### How much does it cost to scrape Catho?

Catho Scraper uses **pay-per-job** pricing: a small fixed price per vacancy, with automatic discounts on higher Apify plans. See the **Pricing** tab for the exact price.

### More Brazilian data

- [Gupy Jobs Scraper](https://apify.com/hipersoft/gupy-jobs-scraper): jobs from Gupy career pages across Brazil.
- [Brazil CNPJ Scraper](https://apify.com/hipersoft/brazil-cnpj-scraper): Brazilian company registry data.

### FAQ

**How do I search a specific city?**
Add the city with its state code, e.g. "São Paulo SP" or "Belo Horizonte MG".

**Does every vacancy show a salary?**
Many do. When the company hides it, salary fields are empty or show "A combinar".

**How fresh is the data?**
Every run reads the live job board; `datePosted` shows when each vacancy was published.

**What formats can I export?**
CSV, Excel, JSON, XML, HTML and RSS, or read the results through the Apify API.

**Can I integrate Catho Scraper with other apps?**
Catho Scraper can be connected with almost any cloud service or web app thanks to [integrations on the Apify platform](https://apify.com/integrations). It works with [Make](https://apify.com/integrations/make), [Zapier](https://apify.com/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), [Airbyte](https://docs.apify.com/platform/integrations/airbyte), [GitHub](https://docs.apify.com/platform/integrations/github), [Google Drive](https://docs.apify.com/platform/integrations/drive) and [many more](https://apify.com/integrations), plus the [Apify API](https://docs.apify.com/api/v2), JS/Python clients and MCP. Or use [webhooks](https://docs.apify.com/platform/integrations/webhooks) to trigger an action whenever a run finishes.

**Is it legal to scrape Catho?**
The scraper only collects publicly listed job vacancies. You are responsible for using the data in line with Catho's terms and the LGPD.

### Related Actors

- [Gupy Jobs Scraper](https://apify.com/hipersoft/gupy-jobs-scraper)
- [Brazil CNPJ Scraper](https://apify.com/hipersoft/brazil-cnpj-scraper)

### Notes

Original clean-room implementation. Returns only public data. Not affiliated with Catho.

# Actor input Schema

## `keywords` (type: `array`):

Job titles or professions in Portuguese, e.g. analista financeiro, vendedor, enfermeiro, motorista, desenvolvedor. Each title is a separate search.

## `locations` (type: `array`):

Brazilian cities with state code, e.g. São Paulo SP, Rio de Janeiro RJ, Belo Horizonte MG, Curitiba PR. Each title is searched in each city. Leave empty for all of Brazil.

## `includeDetails` (type: `boolean`):

Open each vacancy to add the full description, contract type, salary range, posting date and postal code.

## `startUrls` (type: `array`):

Optional. Paste Catho search-results links. When set, job titles are ignored.

## `maxItems` (type: `integer`):

Stop after this many jobs. 0 means no limit.

## `proxyConfiguration` (type: `object`):

Not required for normal use.

## Actor input object example

```json
{
  "keywords": [
    "analista financeiro"
  ],
  "locations": [
    "São Paulo SP"
  ],
  "includeDetails": true,
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

The results 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 = {
    "keywords": [
        "analista financeiro"
    ],
    "locations": [
        "São Paulo SP"
    ],
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/catho-scraper").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 = {
    "keywords": ["analista financeiro"],
    "locations": ["São Paulo SP"],
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/catho-scraper").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 '{
  "keywords": [
    "analista financeiro"
  ],
  "locations": [
    "São Paulo SP"
  ],
  "maxItems": 50
}' |
apify call hipersoft/catho-scraper --silent --output-dataset

```

## MCP server setup

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

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/uu5VqaVt669QniShk/builds/sZex2OfkDBSThhTWW/openapi.json
