
Google Ads Scraper
scrape.ly/store/querystone/google-ads-scraperLead generationSEO tools
4 monthly users

Scrape Catho (catho.com.br) job listings by keyword, location and filters, or from search and job URLs. Get title, company, salary, location, contract type, benefits, posting date and the full description, plus the company profile.
Scrape job listings from Catho (catho.com.br), one of Brazil's largest job boards. Get each job's title, company, salary, city and state, contract type (CLT, PJ...), benefits, work schedule, dates and the full description, plus the hiring company's sector, size and website. No login, no browser, results in seconds, and the price is low.
desenvolvedor, analista financeiro, vendedor) and, if you like, a location such as São Paulo, Curitiba - PR or RJ. You can also paste Catho search or job URLs.| Field | What it does |
|---|---|
keywords | Job titles or skills, one search per keyword. Empty lists every job in the location. |
location | Brazilian city, state or region: São Paulo, Curitiba - PR, SP, Grande São Paulo. Empty searches all of Brazil. |
startUrls | Catho search pages (filters in the URL are kept) or job pages. |
maxResults | Maximum jobs to save across all searches (0 = no limit). |
postedWithin | anytime, today, 2days, 3days, week, 15days or month. |
workModels | remote, hybrid, onsite. |
contractTypes | clt, pj, temporary, freelance, autonomous, cooperative, trainee. |
minSalary | Salary band from this amount up (BRL per month). |
sortBy | relevance or recent. |
includeDetails | Load the full description, benefits and company profile (default on). |
{
"keywords": ["analista"],
"location": "São Paulo",
"postedWithin": "week",
"contractTypes": ["clt"],
"maxResults": 100
}
| Field | Description |
|---|---|
id, url, apply_url | Catho job id and job page |
title | Job title |
company | Company name ("Empresa Confidencial" when the employer is hidden, see company_confidential) |
location, city, state, state_code, locations | Where the job is ("City, UF"); for a job listed in several cities these show the city you searched for, and locations lists them all |
salary, salary_range, salary_amount | Salary as shown, the site's salary band and the exact amount when the employer gives one |
employment_type, contract_types | Contract type(s), e.g. CLT (Efetivo), Prestador de serviços (PJ) |
work_schedule | Working hours as written by the employer |
benefits, benefits_count | Benefits such as meal vouchers and health plan |
vacancies | Number of openings |
description | Full job description (plain text) |
categories, subcategories, positions | Catho's areas and position names |
date_posted, date_updated, expires_at, posted_label | First publication, last refresh, expiry, and the site's label ("Publicada Hoje") |
is_sponsored, active_recruiter | Sponsored job, recruiter marked as active |
company_description, company_website, company_sector, company_size, company_employees, company_logo | Company profile |
postal_code, source | Job's postal code and the posting channel |
search_keyword, search_location, search_url, fetched_at | Which search found the job, and when |
Example (from a real run, description shortened):
{
"id": "38936284",
"title": "Analista de CX",
"company": "KAINOS SOLUÇÕES EM ATENDIMENTO",
"location": "São Paulo, SP",
"city": "São Paulo",
"state": "São Paulo",
"state_code": "SP",
"locations": ["São Paulo, SP"],
"salary": "R$ 4.136",
"salary_range": "A partir de R$ 4.000,00",
"salary_amount": 4136,
"employment_type": "CLT (Efetivo)",
"contract_types": ["CLT (Efetivo)"],
"work_schedule": "Período Integral",
"benefits": ["Assistência odontológica", "Tíquete refeição", "Auxílio creche", "Vale-transporte"],
"benefits_count": 4,
"vacancies": 1,
"description": "Faça parte da 1a BPO Tech do Brasil!\nNesta vaga você terá como atividades:\nAnalisar indicadores de experiência do cliente...",
"categories": ["Telemarketing"],
"subcategories": ["Atendimento ao Cliente/ Call Center/ Telemarketing"],
"positions": ["Analista de Relacionamento"],
"date_posted": "2026-10-21T15:55:21",
"date_updated": "2026-10-21T15:55:21",
"expires_at": "2027-01-19T15:55:21",
"posted_label": "Publicada Hoje",
"is_sponsored": false,
"active_recruiter": false,
"company_confidential": false,
"company_description": "Call Center.",
"company_website": "www.kainos.com.br",
"company_sector": "Telemarketing/ Call Center",
"company_size": "Medium",
"company_employees": 201,
"company_logo": null,
"postal_code": "01141-010",
"source": "pandape",
"url": "https://www.catho.com.br/vagas/analista-de-cx/38936284",
"apply_url": "https://www.catho.com.br/vagas/analista-de-cx/38936284",
"search_keyword": "analista",
"search_location": "São Paulo",
"search_url": "https://www.catho.com.br/vagas/analista/sao-paulo-sp/?lastdays=7",
"fetched_at": "2026-10-21T23:26:23.007Z"
}
$0.80 per 1,000 jobs ($0.0008 per job), with or without full details. Platform usage (compute and proxy traffic) is billed on top and is small: a measured run of 1,000 jobs with full details used about $0.008 of platform usage (compute and datacenter proxy), so 1,000 detailed jobs cost about $0.81 in total. You only pay for jobs that are saved, and a run stops cleanly at your maximum charge.
Is it legal to scrape Catho? The scraper reads only public job pages that anyone can open without an account. Check that your use of the data follows the law that applies to you (for example the LGPD) and Catho's terms.
Do I need a Catho account, cookies or a proxy? No account or cookies. The default datacenter proxy works; if Catho ever refuses it, the run switches to Brazilian residential exits on its own.
How many jobs can I get? As many as the search has: the scraper pages through every result Catho lists for it (for example about 750 "desenvolvedor" jobs or about 9,000 "vendedor" jobs across Brazil in our tests). The "resultados" number Catho prints above the list counts loosely related jobs too and is larger than the list itself, and the list repeats some sponsored jobs, which are saved once. Set Max results to 0 for no limit.
Why is a field empty?
Employers decide what they show: many jobs say "A Combinar" (salary to be agreed) and have no salary_amount, some hide the company name or list no benefits. With "Include full job details" off, only the fields shown in the search list are filled.
Can I schedule it or use the API? Yes. Save your input as a task, schedule it (for example daily with "Date posted: Today"), and read the results through the API, webhooks or integrations.
I used a similar actor on another platform. Can I keep my input?
Yes: keyword, location, startUrl, lastDays and results_wanted are accepted too, and the output keeps the familiar field names (title, company, location, salary, employment_type, description, date_posted, url, apply_url, source, fetched_at).
date_posted (first publication) can be older than the period you chose.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
keywordsarrayOptionalKeywords
Job titles or skills, one per line, e.g. desenvolvedor, analista financeiro, vendedor. Each keyword is a separate search. Leave empty to list every job in the location.
locationstringOptionalLocation
Brazilian city, state or region, e.g. São Paulo, Curitiba - PR, Belo Horizonte, RJ or Grande São Paulo. A city name wins over a state with the same name; use the two-letter code (SP, RJ) for the whole state. Leave empty for all of Brazil.
startUrlsarrayOptionalSearch or job URLs
Catho search pages copied from your browser (https://www.catho.com.br/vagas/analista/curitiba-pr/?lastdays=7, filters in the URL are kept) or job pages (https://www.catho.com.br/vagas/desenvolvedor-java/38860038).
maxResultsintegerOptionaldefault 20Max results
Maximum number of jobs to save across all searches. 0 means no limit.
postedWithinenumOptionaldefault "anytime"Date posted
Only jobs published or refreshed within this period (the site's own date filter).
workModelsarrayOptionalWork model
Only jobs with one of these work models. Leave empty for all.
contractTypesarrayOptionalContract type
Only jobs offering one of these contract types. Leave empty for all.
minSalaryintegerOptionalMinimum monthly salary (BRL)
Only jobs in the site's salary band from this amount up: 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, 15000 or 20000. Other amounts use the nearest band below. Catho still includes jobs whose salary is "A Combinar" (to be agreed).
sortByenumOptionaldefault "relevance"Sort by
Order of the results.
includeDetailsbooleanOptionaldefault trueInclude full job details
Load each job's full description, benefits, contract type, work schedule, categories, exact dates and the company profile (website, sector, size). Turn off for a faster list with title, company, city, salary and posting date only.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxy by default; the run moves to Brazilian residential exits on its own if Catho refuses it.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| id | string | null | |
| title | string | null | |
| company | string | null | |
| location | string | null | |
| city | string | null | |
| state | string | null | |
| state_code | string | null | |
| locations | array | null | |
| salary | string | null | |
| salary_range | string | null | |
| salary_amount | number | null | |
| employment_type | string | null | |
| contract_types | array | null | |
| work_schedule | string | null | |
| benefits | array | null | |
| benefits_count | number | null | |
| vacancies | number | null | |
| description | string | null | |
| categories | array | null | |
| subcategories | array | null | |
| positions | array | null | |
| date_posted | string | null | |
| date_updated | string | null | |
| expires_at | string | null | |
| posted_label | string | null | |
| is_sponsored | boolean | null | |
| active_recruiter | boolean | null | |
| company_confidential | boolean | null | |
| company_description | string | null | |
| company_website | string | null | |
| company_sector | string | null | |
| company_size | string | null | |
| company_employees | number | null | |
| company_logo | string | null | |
| postal_code | string | null | |
| source | string | null | |
| url | string | null | |
| apply_url | string | null | |
| search_keyword | string | null | |
| search_location | string | null | |
| search_url | string | null | |
| fetched_at | string | null |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Job | One saved job listing. | $0.0008 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('openrole/catho-scraper').call({
"keywords": [
"desenvolvedor"
],
"maxResults": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run openrole/catho-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=openrole/catho-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
No examples yet
The developer hasn't published example inputs for this actor.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.