Gupy Jobs Scraper / Vagas por Empresa e Termo avatar

Gupy Jobs Scraper / Vagas por Empresa e Termo

Pricing

from $1.70 / 1,000 job listing delivereds

Go to Apify Store
Gupy Jobs Scraper / Vagas por Empresa e Termo

Gupy Jobs Scraper / Vagas por Empresa e Termo

Get open jobs from Gupy careers pages in Brazil by company and search term: job title, city, work model (remote, hybrid, on-site), contract type, publication date and apply URL. Filter by term, city or remote only. Only-new-jobs mode for schedules. No login. Failed items are free.

Pricing

from $1.70 / 1,000 job listing delivereds

Rating

0.0

(0)

Developer

Scrapewise Data

Scrapewise Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 hours ago

Last modified

Categories

Share

Gupy Jobs Scraper: Open Jobs by Company, Term and City

Returns every open job on any company's Gupy careers page: the job title (vaga), the company subdomain (empresa), the city (cidade), the work model (modelo: on-site, hybrid or remote), the contract type (tipo), the job id and the direct job URL, filtered by search term, city and remote only.

Gupy is the applicant tracking system used by most large Brazilian companies. Each company has its own careers page at <company>.gupy.io (for example ambev.gupy.io), and this Actor turns that page's whole job list into a dataset.

For recruiters watching target companies, job boards and aggregators that need a feed per company, labor market researchers benchmarking hiring in Brazil, and anyone building a candidate alert. AI agents can call it through the Apify MCP server.

Gupy jobs scraper pricing at a glance

Apify planPer 1,000 jobs
FreeUS$ 2.00
BronzeUS$ 1.90
SilverUS$ 1.80
Gold and aboveUS$ 1.70

One charge per job delivered, plus an Actor start charge of US$ 0.01 per run from October 29, 2026. No monthly fee, compute included. Not charged: jobs removed by termo, cidade or remoto, duplicate job ids, anything above maximo or maxItems, jobs skipped by onlyNewJobs, and a run that finds nothing. One company at the default caps costs US$ 0.06; ten companies with 100 jobs each, US$ 2.00.

What it fixes

  • The documented Gupy jobs API is gone. /api/v1/jobs answers 404; the complete job list is embedded in each careers page. The Actor reads that list with one HTTP request per company, no browser, and applies your filters locally.
  • No silent empty runs. A subdomain that does not exist, a layout change or filters that remove everything make the run fail with a message saying what to fix, instead of finishing "successful" with an empty dataset that breaks a scheduled pipeline.
  • Exact daily alerts. onlyNewJobs compares by Gupy's own job id, which is stable, so a renamed job is not delivered twice.

Gupy jobs scraper input

The input form describes each field. Minimal input (also what an empty API call runs):

{ "empresas": ["ambev"] }

Several companies, only remote roles whose title contains a term, higher caps:

{
"empresas": ["ambev", "localiza", "magazineluiza"],
"termo": "desenvolvedor",
"remoto": true,
"maximo": 200,
"maxItems": 500
}

A daily job alert: save this as a Task and attach a daily Schedule.

{
"empresas": ["ambev", "localiza"],
"termo": "dados",
"onlyNewJobs": true,
"maximo": 200,
"maxItems": 400
}

The first run delivers the matching jobs up to the caps and marks the company's whole current list as seen, so older openings do not come in later as new. Later runs deliver, and charge, only jobs posted since. A day with nothing new ends with "No new job since the last run" and costs nothing. A new job cut by a cap is not marked as seen and comes in the next run. The memory is the Key-Value Store gupy-vagas-only-new-jobs in your account; delete it to start over.

Video guides from Apify: how to schedule an Actor and how to connect it to other apps.

To find a company's subdomain, open its careers page from its website: if it uses Gupy, the link goes to <something>.gupy.io, and <something> goes in empresas.

What data the Gupy jobs scraper returns

A real row from run 0V4ewPzQpq7gRlqtC (input {"empresas": ["ambev"], "maxItems": 50}, 2026-09-10, 50 jobs in 5.0 seconds):

{
"id": 11851251,
"vaga": "Ajudante de Armazém (Transportadora Piracicaba/SP) ",
"empresa": "ambev",
"cidade": "Piracicaba",
"modelo": "on-site",
"tipo": "vacancy_type_talent_pool",
"publicada_em": null,
"url": "https://ambev.gupy.io/jobs/11851251",
"coletado_em": "2026-09-10T21:27:33.728876+00:00",
"url_origem": "https://ambev.gupy.io/jobs/11851251"
}

Gupy job fields

Field names are in Portuguese because the source is Brazilian. Fill rates from the 50 rows of the run above.

FieldWhat it holdsFilled
idGupy's own job id, unique per job100%
vagajob title100%
empresathe Gupy subdomain you asked for100%
cidadecity of the workplace100%
modeloremoto for remote jobs, otherwise Gupy's value, in practice on-site or hybrid100%
tipocontract type as Gupy codes it: vacancy_type_effective (permanent role) or vacancy_type_talent_pool (standing talent pool)100%
publicada_empublish date; the embedded job list does not carry it, so always null0%
url, url_origemthe job's application page100%
coletado_emISO 8601 UTC collection time100%

Rows are deduplicated by id inside a run. To know when a job appeared, run on a schedule and record the first coletado_em of each id.

What you can do with Gupy job data

  • Watch target companies. Put every employer you care about in empresas, set termo to the role you hire for, turn on onlyNewJobs and schedule it daily.
  • Map who is hiring, and where. Run without termo for a set of large employers and group by empresa, cidade and modelo: open roles per company and per city, and the share of remote, hybrid and on-site work.
  • Feed a job board or newsletter. vaga, empresa, cidade and url are everything a listing needs, and url sends the candidate straight to the application form. remoto: true builds a remote-only board.
  • Answer questions from an AI agent. "Which remote developer jobs are open at these three companies right now?" is one call with three fields.

Gupy scraper speed and reliability

Three measured runs of 50 jobs from ambev on Apify took 4.6 to 5.5 seconds, all succeeded, and every field except publicada_em was filled on every row. One request per company, so a company with hundreds of open jobs is still one page load. No proxy is needed: the careers page is public HTTPS.

Use it from code and AI agents

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("scrapewise/gupy-vagas").call(run_input={"empresas": ["ambev", "localiza"], "termo": "analista"})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["empresa"], job["vaga"], job["cidade"], job["url"])

The same works from Node.js, the HTTP API (run-sync-get-dataset-items, add &format=csv for a spreadsheet), n8n, Make and Zapier. For AI agents: https://mcp.apify.com/?tools=scrapewise/gupy-vagas; the agent sends empresas plus an optional termo, cidade or remoto and can cite each row's url.

Gupy jobs scraper FAQ

Can I search all companies on Gupy at once? No. It works per company subdomain, where the complete list lives. Pass as many subdomains as you want in one run.

Is there an official Gupy API? Gupy's API is for client companies managing their own hiring, with a token from that company's account; it does not list other companies' openings, and the old public jobs endpoint /api/v1/jobs answers 404. This Actor reads each public careers page, needs no token and returns every open job of any company that uses Gupy.

Does it return salary, description or requirements? No. Those live on each job's own page, which this Actor does not open; use url to fetch it.

Does it collect personal data? No. Only job titles, cities, work models, company names and links from a public page. No candidate data.

I am not in Brazil. What is it good for? Benchmarking which functions large Brazilian employers hire for and in which cities, sizing talent competition before opening an office, and tracking a competitor's Brazilian expansion.

Gupy jobs scraper limitations

  • One company subdomain at a time; you need the subdomain, not the legal name.
  • publicada_em is always null, and rows follow the careers page order, so maximo gives the first N jobs in that order, not necessarily the newest.
  • No salary, description, requirements, department or seniority field.
  • termo and cidade are literal, case insensitive substring matches on title and city: no synonyms, plurals or missing accents. A city name that exists in two states returns both.
  • remoto: true keeps remote only, not hybrid.

Gupy jobs scraper errors

  • Subdomain does not exist: the run fails naming the company and the URL. Nothing is charged.
  • Filters removed every job: the run fails and suggests loosening them.
  • Careers page layout changed: the run fails with an explicit message until the Actor is updated.
  • Something broke or a field is missing? Open an issue on the Issues tab.

Changelog

  • 2026-10-04: onlyNewJobs for scheduled job alerts.
  • 2026-09-14: empresas got a default, so an empty input from the API, a schedule or an MCP client runs instead of failing.
  • 2026-09-13: discounts by plan.