Catho Jobs Scraper
Pricing
from $10.00 / 1,000 jobs
Catho Jobs Scraper
Every job on Catho, Brazil's biggest job board, in one run: recruiters see who is hiring and at what salary, HR teams benchmark pay by role and city, and analysts track demand by area, contract type and work model. Full descriptions and benefits, 1,000 jobs in under a minute.

💼 Catho Jobs Scraper
Extract job listings from Catho, Brazil's biggest job board: title, company, salary (as shown and as numbers), city, state, CEP, contract type, working hours, full description and the benefits list. Search by keyword, state or city, and filter by work model, contract, salary band, area and posting date. About 1,000 jobs with full details in under a minute.
Catho lists more than 200,000 open jobs. This Actor reads the same public pages a job seeker sees, page by page with no result cap, and turns each job into a clean row ready for a spreadsheet, a CRM or a salary analysis.
🎯 Who uses it?
🧑💼 Recruiters and staffing agencies
See who is hiring for a role, in which city and at what salary, and spot companies hiring many people at once.
💰 HR and compensation teams
Benchmark pay by job title, city and contract type with real published salaries, already parsed into numbers.
📈 Labor market analysts and journalists
Track demand by area, work model (remote, hybrid, on-site) and contract type across Brazil, on a schedule.
🛠️ Job board and HR tech builders
Feed an aggregator, alert service or matching model with fresh, structured Brazilian jobs.
✨ What it does
- Search by one or more keywords, in one or more states or cities, or across all of Brazil.
- Filters Catho itself offers: work model, contract type, professional area (78), salary band, salary shown only, posting date, and sort order.
- No result cap: walks every page of a search, not just the first few hundred jobs.
- Full details by default: full description, contract type, working hours, benefits list, every location with street and CEP, and the exact posting date.
- Salary as numbers: "R$ 5.500", "A partir de R$ 3.000,00" or "A combinar" become
salaryMin,salaryMaxand asalaryToBeAgreedflag. - Paste a search link: reuse a search you already filtered on catho.com.br.
🏆 Why this scraper
- Fast without shortcuts. About 1,000 jobs with full details in under a minute, with no browser and no proxy.
- Every filter, not just a keyword box. Work model, contract, area, salary band and date are real inputs, not something you have to build into a URL by hand.
- Numbers you can sort by. Salaries are parsed from Brazilian formatting into numbers, and "A combinar" is flagged instead of mixed in.
- Honest about what Catho shows. Confidential companies stay confidential (
companyis empty andconfidentialCompanyis true). The work model is only filled in when you filter by it, because that's the only time Catho tells you.
⚖️ How it compares
| Capability | This actor | scrapers_lat/catho-brasil-jobs-scraper | shahidirfan/Catho-Jobs-Scraper |
|---|---|---|---|
| Several keywords and locations in one run | yes | keywords only | one of each |
| Work model, contract, area and salary filters | yes | no | no |
| Posting date filter and newest-first sort | yes | no | date only |
| Full job description | yes | excerpt | yes |
| Benefits list | yes | count only | no |
| Salary parsed into min/max numbers | yes | no | no |
| Every location with street and CEP | yes | no | no |
| Working hours | yes | no | no |
| Proxy | none needed | residential proxies | Apify Proxy recommended |
| Published speed | ~1,000 jobs/min with details | not stated | ~500 jobs in ~2 min |
scrapers_lat also sells optional AI add-ons (summary, skills, salary estimate, translation) and a remote/home-office flag on every row. Catho has no structured work-model field on job pages, so this actor tags workModel from Catho's own filter instead of guessing from the description.
📦 What data you get
| Field | Description |
|---|---|
jobId, url | Catho's job ID and the job page. |
title, company, confidentialCompany | Job title and hiring company; confidential listings have no company name. |
vacancies | How many openings the job offers. |
city, additionalCities | Main city, and how many more cities the job is open in. |
salary, salaryMin, salaryMax, salaryCurrency, salaryToBeAgreed | The salary exactly as shown, the same as numbers in BRL, and whether it's "A combinar". |
benefitsCount | Number of benefits shown on the listing. |
sponsored, recruiterActive | Paid placement, and Catho's "active recruiter" badge. |
postedAt | Posting date (YYYY-MM-DD). |
workModel | Remote, hybrid or presential. Only present when you filter by work model. |
searchKeyword, searchLocation, source | Which search produced the row, and always Catho. |
description, contractType, workHours, benefits, locations, state, postalCode, companyLogo | From each job's own page. Present only when Full job details is on (the default). |
scrapedAt | When the row was collected (UTC). |
💡 Use cases
💰 Salary benchmark for developers in São Paulo
{ "maxItems": 1000, "keywords": ["desenvolvedor"], "locations": ["SP"], "onlyWithSalary": true }
🏠 Remote jobs only, newest first
{ "maxItems": 300, "keywords": ["analista de dados", "desenvolvedor"], "workModels": ["remote"], "sortBy": "newest" }
📋 PJ contractor roles posted this week
{ "maxItems": 500, "contractTypes": ["6"], "postedWithin": "7" }
🔗 Reuse a search you built on the site
{ "maxItems": 200, "pageUrl": "https://www.catho.com.br/vagas/enfermeiro/rj/?faixa_sal_id=5" }
⚙️ How the input is organised
| Section | What it's for |
|---|---|
| Maximum jobs | Always first, caps the whole run. |
| Search | Keywords, locations, or a pasted Catho search link. |
| Job filters | Work model, contract type, professional area, salary band, salary shown only, posting date, sort order. |
| Details | Full job details on or off. |
💰 Pricing
Pay-per-event: a one-time $0.003 when the run starts, plus a price per job saved to your dataset. The price depends on your Apify plan tier:
| Your Apify plan | Price per job |
|---|---|
| Free | $0.014 |
| Bronze | $0.0125 |
| Silver | $0.011 |
| Gold / Platinum / Diamond | $0.01 |
Approximate total cost (includes the $0.003 start fee):
| Jobs collected | Free | Bronze | Silver | Gold+ |
|---|---|---|---|---|
| 100 | $1.40 | $1.25 | $1.10 | $1.00 |
| 1,000 | $14.00 | $12.50 | $11.00 | $10.00 |
| 10,000 | $140.00 | $125.00 | $110.00 | $100.00 |
New Apify accounts start with $5 in free credit.
🚀 Run it
- Create a free Apify account with $5 in credit.
- Open the Catho Jobs Scraper.
- Type a keyword (or keep the prefilled one), add locations or filters if you like, set Maximum jobs, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python, and schedule it with Apify's built-in Scheduler.
🤖 Use with AI agents (MCP)
Give an AI agent live access to Catho jobs through the Model Context Protocol:
claude mcp add --transport http apify "https://mcp.apify.com?tools=normdata/catho-scraper"
Then prompt it in plain language to run the scraper and read back the results.
🔧 Troubleshooting
A location was skipped. Use a state code ("SP") or "City - UF" ("Campinas - SP"). If every location you gave is unrecognizable, the run stops with 0 results instead of searching all of Brazil.
Some jobs show another city than the one I searched.
Those jobs are open in several cities (additionalCities); Catho lists them under each one. Every location is in locations.
There's no workModel column.
Catho only says whether a job is remote, hybrid or on-site when you filter by it. Pick one or more work models and every row gets tagged.
company is empty.
The employer posted it as confidential (confidentialCompany is true).
A row has an error field.
That job's own page didn't load (it may have just closed); the row keeps everything from the search results.
❓ FAQ
| Question | Answer |
|---|---|
| Do I need a Catho account? | No. Only public job pages are read. |
| Does it need a proxy? | No. |
| Is there a limit on results? | No. Every page of a search is read, so big searches return every job. |
| Can I search several keywords and cities in one run? | Yes. Each combination runs its own search, and rows from all of them are mixed fairly. |
| Are salaries numbers? | Yes, salaryMin and salaryMax in BRL, plus the original text in salary. |
| Does it include recruiter contact details? | No. Catho doesn't publish them on job pages. |
| Is the data live? | Yes, read fresh on every run. |
| Can I schedule it? | Yes, with Apify's built-in Scheduler, for example daily with Posted within set to Today. |
🛡️ Limits & responsible use
This Actor reads only Catho's public job pages. It never signs in and never applies to jobs. Company names are business information; use the data in line with Catho's terms and applicable law (LGPD).
📧 Contact
Need a scraper for a different site, or found something wrong with this one? norm.data.scrapers@gmail.com
🧪 Local development
bun installbun run typechecknode test/qa.mjsapify run
Local results are stored in storage/datasets/default.