Gupy Vagas Scraper: Brazil Jobs, Companies & Hiring Stages avatar

Gupy Vagas Scraper: Brazil Jobs, Companies & Hiring Stages

Pricing

from $1.25 / 1,000 jobs

Go to Apify Store
Gupy Vagas Scraper: Brazil Jobs, Companies & Hiring Stages

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

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

16 days ago

Last modified

Share

20 Gupy jobs with full details in 13 seconds

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.

Run it on Apify

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 onlyNewJobs on, 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

{
"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

ParameterTypeDefaultWhat it does
searchTermsarray of stringsnoneJob titles or words to search, one per line. Empty lists every open job that matches the filters.
maxJobsPerSearchinteger100Most jobs per search (each term, and each company when you name companies), 1 to 5,000.
statestringall of BrazilOne Brazilian state, by name (São Paulo) or code (SP).
citiesarray of stringsnoneCities as Gupy writes them, for example Campinas. Pick the state too.
workplaceTypesarrayallremote, hybrid, on-site (Portuguese remoto, híbrido, presencial also work).
jobTypesarrayallGupy 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.
companiesarray of stringsnoneCompany names as on their Gupy career page. Each company runs as its own search with each term.
pcdOnlybooleanfalseGupy's own PcD filter, the "Afirmativas para PCD" toggle on portal.gupy.io.
sortBystringnewestnewest, oldest or relevance.
includeDetailsbooleantrueRead each job's page for the sections, hiring stages, address and company links. Same price per job.
onlyNewJobsbooleanfalseMonitor 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:

FieldWhat it holds
job_idGupy's job id, the key to de-duplicate on
titleJob title
job_urlThe job page on the company's Gupy site
apply_urlThe link Gupy's portal gives for the job
workplace_typeremote, hybrid or on-site
job_typeGupy's contract type code
job_type_labelThe contract type in Portuguese
published_atWhen the job was published (UTC)
application_deadlineLast day to apply, YYYY-MM-DD
open_to_pcdGupy's flag for jobs open to people with disabilities
confidentialTrue when the employer hid its name
scraped_atWhen 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 planPer 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.

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

Social media and video

Leads and business directories

Marketing, SEO and reviews

LinkedIn

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.