Vagas.com.br Scraper - Salary, Benefits, No Duplicates
Pricing
$5.00 / 1,000 job scrapeds
Vagas.com.br Scraper - Salary, Benefits, No Duplicates
Search Vagas.com.br by one or more Brazilian job keywords and get salary, benefits, contract type and full description per listing. $0.005 per job, no duplicate charges.
Why use this scraper
Vagas.com.br is one of Brazil's oldest and largest job boards, and its listings carry details (disclosed salary ranges, full benefit lists, contract type) that recruiters, researchers and job aggregators need in bulk, not one tab at a time. Vagas.com.br has no public API, so pulling that data at scale means scraping the site and keeping the scraper working as its pages change. This actor does that for you: give it one or more Brazilian job-search keywords and get back every matching listing as clean JSON, with full detail pages included when you want them.
Overview
Input is a list of search keywords. Output is one JSON item per job
listing found for each keyword, with duplicate job IDs across keywords or
pages automatically detected and skipped so you are never billed twice
for the same listing. With includeDetails on, the actor opens each
job's own page to pull the full description, benefits and contract type;
with it off, it reads only the search result cards, which is faster and
cheaper when you just need titles, companies and locations.
Supported inputs
- searchTerms (required array, e.g. ) - each term runs its own search on Vagas.com.br; results from all terms land in the same dataset, tagged with the term that found them.["desenvolvedor", "analista de dados", "marketing"]
- maxItems - caps how many listings come back in total (0 for no limit).
- includeDetails -
truevisits each job's detail page for full description, benefits and contract type;falsereturns only what the search results list shows, for a faster and cheaper run. - proxy - optional; Vagas.com.br generally works without one, but residential proxy can be enabled for reliability.
Use cases
- Job market research: track which roles, skills and seniority levels Brazilian employers are hiring for right now, by keyword.
- Recruiting and sourcing: build a live feed of open positions for a role to map which companies are actively hiring.
- Salary benchmarking: collect the salary ranges that employers choose to disclose, by role, region and contract type.
- Lead generation: identify companies hiring for roles related to your product or service and reach out while the need is live.
- Talent analytics dashboards: feed structured listings into a BI tool to track hiring demand and location trends over time.
- Competitive hiring intelligence: watch a specific competitor's open roles by running their known hiring keywords on a schedule, to see where and how fast they are growing a team.
How it works
The actor searches Vagas.com.br for each keyword you provide and reads the
result pages directly from the site's own listing data rather than
scraping rendered text, which keeps fields consistent even when the page
design changes. When includeDetails is on, it visits each individual
job page in turn to pull the full description, the complete benefits
list and contract type, then merges that into the same record as the
search result fields. A job ID seen more than once, whether from
pagination or from overlapping keywords, is recorded once and never
billed twice.
Input configuration
Single keyword, full details:
{"searchTerms": ["desenvolvedor"],"maxItems": 50,"includeDetails": true}
Multiple keywords in one run:
{"searchTerms": ["desenvolvedor", "analista de dados", "marketing"],"maxItems": 100,"includeDetails": true}
Fast, lighter run without detail pages:
{"searchTerms": ["recursos humanos"],"maxItems": 30,"includeDetails": false}
Output sample
Real items from a production run (October 2026), keyword
"desenvolvedor":
[{"id": "v2835043","url": "https://www.vagas.com.br/vagas/v2835043/desenvolvedor-java","title": "Desenvolvedor Java","company": "Synchro","seniorityLevel": "Pleno","location": "100% Home Office","salary": "a combinar","contractType": "Regime CLT","description": "Descricao: A Synchro Solucoes Fiscais esta em busca de um(a) Desenvolvedor(a) Java para fazer parte do nosso time de tecnologia...","requirements": null,"benefits": [],"publishedDate": "15/09/2026","searchTerm": "desenvolvedor","scrapedAt": "2026-10-03T09:31:32.408Z"},{"id": "v2831921","url": "https://www.vagas.com.br/vagas/v2831921/desenvolvedor-a-backend-net-senior-c","title": "Desenvolvedor(a) Backend .net Senior | C#","company": "be3 health tech","seniorityLevel": "Senior","location": "Sao Paulo A empresa aceita apenas candidaturas de Sao Paulo","salary": "a combinar","contractType": "Pessoa Juridica","description": "Descricao: Atividades e Responsabilidades A Be3 Health Tech esta em busca de um(a) Desenvolvedor(a) Full Stack Senior, com forte atuacao em Backend...","requirements": null,"benefits": [],"publishedDate": "24/08/2026","searchTerm": "desenvolvedor","scrapedAt": "2026-10-03T09:31:35.105Z"}]
Key output fields
| Field | Type | Description |
|---|---|---|
id | string | Vagas.com.br's own job id (e.g. v2835043). |
url | string | Direct link to the listing. |
title | string | Job title as posted. |
company | string | Employer name, or "Confidencial" when the employer withholds it. |
seniorityLevel | string | Seniority as classified by the listing (e.g. Pleno, Senior, Junior/Trainee). |
location | string | Work location or remote-work note. |
salary | string | Disclosed salary range, or "a combinar" when the employer does not disclose it. |
contractType | string | Regime CLT, Pessoa Juridica, or other contract type listed. |
description | string | Full job description (requires includeDetails: true). |
requirements | null | Always null; Vagas.com.br folds requirements text into description rather than a separate field. |
benefits | array | List of disclosed benefits (requires includeDetails: true); empty otherwise. |
publishedDate | string | Date the listing was published, as shown on the site. |
searchTerm | string | The keyword that found this listing. |
scrapedAt | string | ISO timestamp of when the item was scraped. |
Pricing
| Event | Price |
|---|---|
| Job scraped (each listing returned) | $0.005 |
Pay per result only. Duplicate job IDs found again across pages or keywords are skipped and never billed twice.
What makes this richer than the competition
Two other scrapers on the Apify Store cover Vagas.com.br, by users in the
last 30 days: viralanalyzer/brazil-jobs-scraper (34, which spans Vagas
plus InfoJobs, Gupy, APInfo and LinkedIn Jobs at the same $0.005 per job)
and latinamericadata/gupy-vagas-brasil (6, cheaper at $0.003 per result
but focused primarily on Gupy). This actor is built specifically for
Vagas.com.br with built-in duplicate protection across keywords and pages,
so running several related search terms in one call never double-charges
for the same listing, and the includeDetails toggle lets you choose
between a fast, cheap listing-only pull or the full job page with
benefits and contract type, in the same input.
Notes & limitations
requirementsis alwaysnull; Vagas.com.br does not separate requirements from the job description, so that text lives insidedescriptioninstead.salary,contractType, fulldescriptionandbenefitsare only populated whenincludeDetailsistrue. With itfalse, those fields come backnullor empty and the run is faster and cheaper.salaryreflects only what the employer chose to disclose on the listing; most Brazilian job posts show"a combinar"(negotiable) instead of a number.- Results reflect Vagas.com.br's own search ranking and relevance for each keyword; the actor does not re-sort or filter results itself.
companyreturns"Confidencial"when the employer chose not to disclose its name on the listing, which is common for recruiting agencies posting on a client's behalf; this is the site's own label, not a scraping gap.
FAQ
Can I search for more than one role in a single run?
Yes, searchTerms accepts a list; every result is tagged with the exact
keyword that found it.
Why is salary often "a combinar"?
Brazilian employers frequently choose not to publish a number. The field
returns the site's own text, which is "a combinar" (negotiable) when no
figure is given.
Does includeDetails: false still return the full job description?
No, only the fields visible on the search result card (title, company,
seniority, location, published date). Turn includeDetails on for the
full description and benefits.
Will I be charged twice if two keywords return the same job? No, job IDs are deduplicated automatically across keywords and pages within a run.
Can I filter by city or remote work before scraping?
Not as a separate input field; filter the location field in the output
after the run, or use a more specific search keyword.
Does the actor stop at the first page of results?
No, it paginates through Vagas.com.br's results automatically for each
keyword until it reaches maxItems or runs out of listings.
For AI Agents & LLM Apps
This actor is callable directly from an MCP-compatible client at
mcp.apify.com, or via the standard Apify API. Example with the
run-sync-get-dataset-items endpoint, which runs the actor and returns the
dataset items in one call:
curl "https://api.apify.com/v2/acts/gio21~vagas-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchTerms": ["desenvolvedor"], "maxItems": 50, "includeDetails": true}'
Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Vagas.com.br or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.
SEO Keywords
vagas.com.br scraper, brazilian jobs scraper, vagas scraper api, brazil job listings api, vagas emprego scraper, brazilian job board data