Gupy Vagas Scraper: Brazil Jobs, Companies & Hiring Stages
Pricing
from $1.25 / 1,000 jobs
Gupy Vagas Scraper: Brazil Jobs, Companies & Hiring Stages
Scrape Gupy job ads (vagas) across Brazil: title, company, city, state, remote, hybrid or on-site, job type, publish date, deadline, full description, requirements, hiring stages and company website and LinkedIn. Filter by keyword, state, city, company and PcD. No login. Pay per job.
Pricing
from $1.25 / 1,000 jobs
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
16 days ago
Last modified
Categories
Share
From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with more than 140,000 runs across our actors.
Gupy is the recruiting platform behind the career sites of Brazilian employers such as Grupo Boticário, WEG, Localiza, Sicredi and Porto, and portal.gupy.io is its public search across all of them. This actor searches it the way a job seeker does and returns one row per vaga: title, company, city, state, work model (remote, hybrid or on-site), contract type, publish date, application deadline and the full description. With job pages on (the default) each row also carries the separate sections (responsibilities, requirements, additional information), the hiring stages in order, the address and the company's about text, website and LinkedIn.
Why choose this actor?
- Full job details in one pass. A test run on 1 October 2026 returned 20 remote developer jobs with their job pages read in 13 seconds: responsibilities and requirements on all 20, hiring stages on all 20, company website and LinkedIn on 18. No login, no cookies, no Gupy account.
- The same filters as Gupy's own search. State, cities, remote, hybrid or on-site, 16 contract types (Efetivo, Estágio, PJ, Trainee and more), company, Gupy's PcD filter and newest first. In a test, 10 internships in São Paulo state came back in 3.5 seconds with job pages off.
- Pay per job, never twice. One charge per job delivered. A job found by two of your searches is delivered and charged once, monitor mode skips jobs you already have, and a row whose job page could not be read is delivered free and marked
details_fetched: false.
Part of The Mine Works Jobs and hiring family: Foundit Monster India Jobs, Hirist Jobs Scraper, India Jobs MCP, Naukri Jobs Scraper, Shine.com Jobs Scraper, Internshala Scraper.
Try it in one minute
Paste this into the JSON tab of the input form and press Start:
{"searchTerms": ["analista de dados"],"maxJobsPerSearch": 10}
That returns 10 of the newest data analyst jobs on Gupy with their full job pages. Give search terms as a list, one per line in the form, in Portuguese or English, exactly as you would type them on portal.gupy.io. Leave the list empty to get every open job that matches your filters. To narrow the search, add a state (name or code: São Paulo or SP), cities, workplaceTypes, jobTypes or companies (the name on the company's Gupy career page).
Apify's free plan includes $5 of credit every month, which covers about 1,800 jobs at this actor's Free plan price.
Copy to your AI assistant
Paste this block into ChatGPT, Claude, Cursor or any assistant that can write code, and it can run the actor for you.
themineworks/gupy-vagas-scraper on Apify. Searches Gupy's public job portal (portal.gupy.io, Brazilian job ads from every company's Gupy career site) and returns one row per job: job_id, title, company, city, state, workplace_type, job_type, job_type_label, published_at, application_deadline, description, job_url, apply_url, and with job pages on: responsibilities, requirements, additional_info, hiring_steps, address, company_about, company_website, company_linkedin. Call ApifyClient("TOKEN").actor("themineworks/gupy-vagas-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: nothing (empty input lists the newest jobs). Optional: searchTerms (array of strings), maxJobsPerSearch (integer 1 to 5000, default 100), state (Brazilian state name, default all), cities (array), workplaceTypes (remote, hybrid, on-site), jobTypes (Gupy codes such as vacancy_type_effective or vacancy_type_internship), companies (career page names), pcdOnly (boolean, default false), sortBy (newest, oldest or relevance, default newest), includeDetails (boolean, default true), onlyNewJobs (boolean, default false). Rows with _type "info" are run notes, not jobs. Full spec: GET https://api.apify.com/v2/acts/themineworks~gupy-vagas-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
Key features
- Up to 38 fields per job. 21 from the search (title, company, logo, links, city, state, work model, contract type with Gupy's Portuguese label, dates, PcD flags, full description) and up to 17 more from the job page (sections, hiring stages, skills, address, quick apply, company about text and four company links).
- Up to 50 searches and 5,000 jobs per search in one run. Search terms and companies combine: 3 terms and 2 companies make 6 searches. Jobs are read 50 at a time, newest first by default.
- Hiring stages, in order. Each stage's name and Gupy's category for it (registration, screening, interview, evaluation, offer, hiring), for example 10 stages for a Grupo Boticário developer job in the test, including Triagem, Pair Programming, Entrevista com Liderança, Carta Oferta and Contratação.
- Readable text. Job sections come as plain text with paragraphs and bullet points kept, not as HTML.
- Monitor mode for job alerts. With
onlyNewJobson, a scheduled run returns only jobs it has not delivered before for the same searches and filters. - Plain HTTP, 256 MB. No browser. Six job pages are read at a time.
How to use it
Basic: the newest jobs for one search
{"searchTerms": ["desenvolvedor"]}
Several searches with filters
{"searchTerms": ["analista de dados", "engenheiro de dados", "cientista de dados"],"state": "SP","workplaceTypes": ["hybrid", "remote"],"maxJobsPerSearch": 200}
A job that two searches find is returned once, under the first search that found it (search_term).
Daily alerts for new vagas
{"searchTerms": ["product manager", "gerente de produto"],"workplaceTypes": ["remote"],"onlyNewJobs": true,"maxJobsPerSearch": 100}
Save it as a task and schedule it daily (Console, this actor, Schedules). Each run returns and charges only jobs that were not delivered before, so you can send the dataset straight to email, Slack or a sheet.
Track who is hiring: competitors or prospects
{"companies": ["Grupo Boticário", "Localiza&Co", "Sicredi"],"maxJobsPerSearch": 500}
With no search term, each company search lists all of that company's open jobs on Gupy. Count jobs by city, job_type_label or workplace_type to see where and how a company is hiring, and read hiring_steps to see its process. Recruiting and HR tech teams use the same run to find employers that are hiring for a role right now.
Internships and trainee programs
{"jobTypes": ["vacancy_type_internship", "vacancy_type_trainee"],"state": "Minas Gerais","includeDetails": false,"maxJobsPerSearch": 300}
With includeDetails off a run reads only the search pages, which is much faster (10 jobs in 3.5 seconds in the test). Turn it on when you need the separate sections, the hiring stages or the company links.
Input parameters
| Parameter | Type | Default | What it does |
|---|---|---|---|
searchTerms | array of strings | none | Job titles or words to search, one per line. Empty lists every open job that matches the filters. |
maxJobsPerSearch | integer | 100 | Most jobs per search (each term, and each company when you name companies), 1 to 5,000. |
state | string | all of Brazil | One Brazilian state, by name (São Paulo) or code (SP). |
cities | array of strings | none | Cities as Gupy writes them, for example Campinas. Pick the state too. |
workplaceTypes | array | all | remote, hybrid, on-site (Portuguese remoto, híbrido, presencial also work). |
jobTypes | array | all | Gupy contract types: vacancy_type_effective (Efetivo), vacancy_type_internship (Estágio), vacancy_legal_entity (Pessoa Jurídica), vacancy_type_trainee, vacancy_type_apprentice (Aprendiz), vacancy_type_temporary, vacancy_type_freelancer, vacancy_type_autonomous, vacancy_type_associate, vacancy_type_outsource, vacancy_type_talent_pool, vacancy_type_volunteer, vacancy_type_parter (Sócio), vacancy_type_lecturer, vacancy_type_summer, vacancy_type_intermittent. |
companies | array of strings | none | Company names as on their Gupy career page. Each company runs as its own search with each term. |
pcdOnly | boolean | false | Gupy's own PcD filter, the "Afirmativas para PCD" toggle on portal.gupy.io. |
sortBy | string | newest | newest, oldest or relevance. |
includeDetails | boolean | true | Read each job's page for the sections, hiring stages, address and company links. Same price per job. |
onlyNewJobs | boolean | false | Monitor mode: skip jobs delivered in an earlier run with the same searches and filters. Skipped jobs are not charged. |
There is no proxy setting to choose. The actor always uses Apify's datacenter proxy, which is included in your Apify plan.
What data do you get?
One row per job.
The job: job_id, title, job_url (the job's page on the company site, https://<company>.gupy.io/jobs/<id>), apply_url (the link Gupy's portal gives), city, state, workplace_type (remote, hybrid or on-site), job_type (Gupy's code) and job_type_label (Gupy's Portuguese label, such as Efetivo, Estágio or Pessoa Jurídica), published_at, application_deadline, open_to_pcd (Gupy's flag that the job is open to people with disabilities), pcd_badge (whether the card shows Gupy's PcD badge), description (the full job text, every section run together).
The company: company (the name on its Gupy career page), company_logo, career_page_url, and with job pages on company_about, company_website, company_linkedin, company_instagram, company_facebook.
From the job page (with includeDetails on): about_the_job, responsibilities (Responsabilidades e atribuições), requirements (Requisitos e qualificações), additional_info (Informações adicionais, often the benefits), hiring_steps (each stage's order, name and category), skills, address, state_code, country, quick_apply, details_fetched, and details_error when a page could not be read.
The run: search_term and company_filter (the search that found the job), confidential, scraped_at.
Employers can hide their name on a job. Gupy's own portal then shows no company and no description, and this actor does the same: such rows have confidential: true, no company and no description, and their job page is not opened. Fields an employer leaves empty are left out of the row rather than filled with a guess. In the final test (20 remote jobs with job pages), city, state and state_code were empty because the jobs are remote, additional_info was on 15 rows, company_instagram on 17, company_facebook on 13 and skills on none; company_website and company_linkedin were on 18 and every other field on all 20.
Stable fields for automations
These fields were present in every job row of the test runs, and their names will not change:
| Field | What it holds |
|---|---|
job_id | Gupy's job id, the key to de-duplicate on |
title | Job title |
job_url | The job page on the company's Gupy site |
apply_url | The link Gupy's portal gives for the job |
workplace_type | remote, hybrid or on-site |
job_type | Gupy's contract type code |
job_type_label | The contract type in Portuguese |
published_at | When the job was published (UTC) |
application_deadline | Last day to apply, YYYY-MM-DD |
open_to_pcd | Gupy's flag for jobs open to people with disabilities |
confidential | True when the employer hid its name |
scraped_at | When the row was collected |
Output examples
Real rows from the test runs on 1 October 2026, with long texts trimmed (marked ...).
A remote developer job with its job page read:
{"job_id": 12649638,"title": "Desenvolvedor Frontend React Pleno","company": "Deliver IT","job_url": "https://deliverit.gupy.io/jobs/12649638","apply_url": "https://deliverit.gupy.io/job/eyJqb2JJZCI6MTI2NDk2MzgsInNvdXJjZSI6Imd1cHlfcG9ydGFsIn0=?jobBoardSource=gupy_portal","workplace_type": "remote","job_type": "vacancy_type_effective","job_type_label": "Efetivo","published_at": "2026-09-30T18:56:41.786Z","application_deadline": "2026-11-29","open_to_pcd": true,"pcd_badge": true,"description": "Você se considera uma pessoa que tem sede por aprendizado, gosta de trabalhar em equipe e curte compartilhar conhecimento? Então essa oportunidade é para você!...","confidential": false,"career_page_url": "https://deliverit.gupy.io/","search_term": "desenvolvedor","responsibilities": "Na sua rotina de trabalho, você vai se deparar com as seguintes atividades:\n\n• Desenvolver e manter interfaces web responsivas, escaláveis e com foco na experiência do usuário;\n• Atuar no desenvolvimento de aplicações utilizando R...","requirements": "Confere abaixo o que você vai precisar saber pra se dar bem nessa oportunidade!\n\nCONHECIMENTOS EXIGIDOS\n\n• Domínio de HTML5, CSS3, JavaScript e React...","hiring_steps": [{ "order": 0, "name": "Cadastro", "category": "registration" },{ "order": 2, "name": "Screening/Conversa com RH", "category": "screening" },{ "order": 3, "name": "Entrevista Técnica", "category": "evaluation" },{ "order": 4, "name": "Entrevista com o Cliente", "category": "interview" },{ "order": 5, "name": "Carta Oferta", "category": "interview" },{ "order": 100, "name": "Contratação", "category": "hiring" }],"address": "Brasil","country": "Brasil","quick_apply": false,"company_website": "http://www.deliverit.com.br","company_linkedin": "https://www.linkedin.com/company/deliver-it-servi%C3%A7os-de-tecnologia/about/","company_instagram": "https://www.instagram.com/deliverit.brasil/","details_fetched": true,"scraped_at": "2026-10-01T08:24:53.114Z"}
An internship in São Paulo, with job pages off (the fast mode):
{"job_id": 12650756,"title": "Estágio em Produção no Jornal da Gazeta","company": "Fundação Cásper Líbero","job_url": "https://fcl.gupy.io/jobs/12650756","city": "São Paulo","state": "São Paulo","workplace_type": "on-site","job_type": "vacancy_type_internship","job_type_label": "Estágio","published_at": "2026-09-30T20:13:59.980Z","application_deadline": "2026-10-31","open_to_pcd": true,"description": "Venha para o coração da comunicação na cidade de São Paulo.A Fundação Cásper Líbero, em seus 80 anos, moldou o cenário brasileiro e faz a história acontecer todos os dias...","confidential": false,"search_term": "estágio","scraped_at": "2026-10-01T08:24:15.184Z"}
A company search (companies: ["Sicredi"], no search term) returns that company's open jobs, each with company_filter: "Sicredi".
Pricing
You pay per job delivered to your dataset, plus a flat $0.005 per run whatever memory you choose. Reading the job pages costs nothing extra.
| Apify plan | Per 1,000 jobs |
|---|---|
| Free | $2.75 |
| Starter (Bronze) | $2.25 |
| Scale (Silver) | $1.75 |
| Business (Gold) and above | $1.25 |
Never charged: a job already delivered in the same run (found by a second search), jobs skipped in monitor mode, rows whose job page was asked for but could not be read (delivered free with details_fetched: false), searches with no jobs, and the info row a run writes when it delivers nothing. The run's summary record (OUTPUT in the key-value store) shows how many jobs were charged and how many were delivered free.
FAQ
What is Gupy?
Gupy is a Brazilian recruiting platform. Companies post their vagas on a career site at <company>.gupy.io, and portal.gupy.io lets job seekers search the open jobs of all those companies at once. This actor reads that public search and, if you want, each job's page on the company site.
How many jobs can I get?
Up to 5,000 per search and up to 50 searches per run. Search terms and companies combine, so 5 terms and 10 companies make 50 searches. A search stops at your number or when Gupy has no more jobs for it.
How fresh is the data?
Every run reads Gupy live. published_at is the date the employer published the job and application_deadline the last day to apply. Sorted newest first (the default), the first rows are the jobs published most recently.
Do I need a Gupy account or a candidate login?
No. The actor reads the same public pages any job seeker sees without logging in. It never applies to jobs and never opens candidate or company account pages.
Does it include salary?
Only when the employer writes it in the job text. Gupy has no separate salary field on its public job pages, so look in description, requirements or additional_info.
What does "open to PcD" mean?
PcD (pessoa com deficiência) is the Brazilian term for people with disabilities. open_to_pcd is Gupy's flag that a job accepts candidates with disabilities. pcdOnly sends Gupy's own PcD filter, the "Afirmativas para PCD" toggle on portal.gupy.io; in a test every job it returned had open_to_pcd: true.
What about jobs where the company is hidden?
Employers can post a job without their name. Gupy's own portal then shows no company and no description, and so does this actor: the row has confidential: true, no company and no description, and its job page is not opened.
Do I need my own proxy?
No. The actor always uses Apify's datacenter proxy, which is part of every Apify plan, and there is no proxy setting to change.
What export formats are there?
JSON, CSV, Excel, XML, RSS and HTML from the dataset's Export button or the API. Use JSON or Excel if you want hiring_steps kept as a list.
Can I run it on a schedule and get only new jobs?
Yes. Save your input as a task, add a daily schedule, and turn on onlyNewJobs. Each run then returns and charges only jobs not delivered before for those searches and filters.
Can I use it from Claude, ChatGPT or another AI assistant?
Yes. Through Apify's MCP server your assistant can call themineworks/gupy-vagas-scraper as a tool, or it can write the short API call shown in "Copy to your AI assistant" above.
Is it legal to scrape Gupy?
The actor reads public job ads that Gupy shows to anyone without logging in, only on paths Gupy's robots.txt allows, and returns job and company information, not candidate data. How you may use the data depends on your purpose, Gupy's terms and the law that applies to you, including Brazil's LGPD and other data protection law such as GDPR and CCPA. You are responsible for your use of the results.
Integrations
- Google Sheets: send each run's jobs to a sheet with Apify's Google Sheets integration.
- Make, Zapier and n8n: start a run and post new jobs to Slack, email or your ATS.
- Webhooks: get a call when a run finishes and fetch the dataset from the API.
- API and clients: run it from Python, JavaScript or plain HTTP with the Apify API.
- MCP clients: Claude Desktop, Cursor and other MCP clients can call it through Apify's MCP server.
More from The Mine Works
Jobs and hiring
- Foundit Monster India Jobs
- Hirist Jobs Scraper
- India Jobs MCP
- Naukri Jobs Scraper
- Shine.com Jobs Scraper
- Internshala Scraper
- Instahyre Jobs Scraper
- Indeed Jobs Scraper
- CutShort Jobs Scraper
- Apna Jobs Scraper
- LinkedIn Jobs Scraper
- Recruiting & Jobs MCP
Social media and video
Leads and business directories
Marketing, SEO and reviews
Real estate
Science, health and government data
E-commerce and marketplaces
Company and business data
Food and local services
Developer and AI tools
More tools
Support
Found a problem or need a field that is not here? Open an issue on the Issues tab and we will look at it. For a new source or a custom build, email dmineworks@gmail.com.
Gupy Vagas Scraper turns Gupy's public job search into clean rows with full job details, hiring stages and company links, and charges only for the jobs it delivers.

