Gupy Jobs Scraper avatar

Gupy Jobs Scraper

Pricing

from $3.00 / 1,000 validated gupy job scrapeds

Go to Apify Store
Gupy Jobs Scraper

Gupy Jobs Scraper

Scrape public Gupy Brazil job listings from company career pages (*.gupy.io) and the employability portal JSON API. Returns title, company, location, employment type, workplace type, department, description, and job URL for recruiting and labor-market research.

Pricing

from $3.00 / 1,000 validated gupy job scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

8 days ago

Last modified

Share

Gupy Jobs Scraper — Brazil Career Pages & Portal Search

Use this Apify Actor to extract public Gupy Brazil job listings from company career pages (*.gupy.io) and keyword search on the employability portal API. Recruiters, job-board operators, and hiring-intel agents get a structured dataset of flat rows with title, company, location, workplace type, department, description, and apply URL — cookieless, no login, MCP-ready.

Use this Actor when you need live public Gupy openings for Brazilian employers into JSON. When the next step is Indeed or multi-ATS boards, continue with a sibling jobs Actor instead.

Best fit for this Actor

  • You need public Gupy Brazil jobs from a career page URL/subdomain (for example https://ambev.gupy.io/) or portal keywords such as desenvolvedor.
  • You want flat fields (title, companyName, location, workplaceType, jobUrl, descriptionText) plus optional portal description enrich.
  • You want one MCP-ready tool with terminal OUTPUT.outcome and Pay per event billing.
  • For Indeed, LinkedIn, or multi-ATS (Greenhouse/Lever/Ashby) boards, route to a sibling jobs Actor.

Use case: Ambev career monitoring sheet

A Brazil recruiting analyst schedules this Actor daily with careerPageUrls: ["https://ambev.gupy.io/"] and maxResults: 50. Each row has title, department, location, workplaceType, and jobUrl. They dedupe on jobId, flag new openings, then turn on a portal keyword follow-up for remote desenvolvedor roles when the team needs market-wide tech sourcing.

Quick start input

{
"careerPageUrls": ["https://ambev.gupy.io/"],
"searchKeywords": [],
"maxResults": 25,
"city": "",
"state": "",
"titleIncludes": "",
"departmentIncludes": "",
"workplaceType": "any",
"remoteOnly": false,
"includeTalentPool": false,
"includeDescriptions": true
}

Portal discovery example:

{
"searchKeywords": ["desenvolvedor"],
"maxResults": 20,
"remoteOnly": true,
"includeDescriptions": true
}

Supply at least one of careerPageUrls or searchKeywords. Prefill keeps quality tests at five Ambev jobs.

What data you receive

One dataset row per unique public Gupy job.

{
"jobId": "11445944",
"title": "Afirmativa PCD - Vendedor(a) Externo - Representante de Vendas (Maceió/AL)",
"companyName": "Ambev",
"companyId": "119",
"careerPageSubdomain": "ambev",
"location": "Maceió, Alagoas, Brasil",
"city": "Maceió",
"state": "Alagoas",
"country": "Brasil",
"department": "Sales",
"employmentType": "effective",
"workplaceType": "on-site",
"isRemote": false,
"jobUrl": "https://ambev.gupy.io/job/eyJqb2JJZCI6MTE0NDU5NDQsInNvdXJjZSI6Imd1cHlfcG9ydGFsIn0=?jobBoardSource=gupy_portal",
"careerPageUrl": "https://ambev.gupy.io/",
"sourceApiUrl": "https://employability-portal.gupy.io/api/v1/jobs?companyId=119&limit=100&offset=0",
"sourceMode": "company_career",
"scrapedAt": "2026-09-21T12:11:11.614Z"
}
FieldDescription
title, companyName, departmentPublic role and employer data
location, city, state, country, isRemote, workplaceTypePublic location and work arrangement
employmentType, publishedAt, applicationDeadlineJob type and dates when Gupy exposes them
descriptionText, descriptionHtmlPublic description when portal enrich is available
jobUrl, careerPageUrl, jobIdCanonical public URLs and stable id
sourceApiUrl, sourceMode, scrapedAtProvenance and retrieval timestamp

You can download the dataset as JSON, HTML, CSV, or Excel from the Apify Console Output tab.

Pricing

Startup billing and empty runs

The apify-actor-start event costs $0.00005 per startup unit. Apify charges one startup unit per GB of allocated memory, with a minimum of one unit, so a 2 GB run incurs two units. This startup charge still applies when input is invalid, no results are found, or an upstream request fails. Statements about free, unbilled, or skipped results refer only to the corresponding result event; they do not waive the startup charge. Apify platform usage is included in the event prices and is not passed through as an additional customer charge. Check the live Pricing tab for current events, tiers, and rates. Result limits cap result events, not the entire run cost.

Pay per event with Apify platform usage included (isPPEPlatformUsagePaidByUser: false). Open the live Pricing tab in Apify Console for the current source of truth.

EventWhenPrice
apify-actor-startEvery Actor start$0.00005
job-scrapedEach accepted validated job row$0.003

A 25-job sample is about $0.07505 in events plus platform compute. Invalid input and valid-empty searches leave job-scraped events unbilled.

How it works

  1. Career pages: read public HTML __NEXT_DATA__ listing cards (including department).
  2. Portal enrich / search: page employability-portal.gupy.io/api/v1/jobs until an empty page or maxResults.
  3. Each accepted row is charged then pushed (Actor.charge → pushData).
  4. Terminal OUTPUT / RUN_SUMMARY use COMPLETE, PARTIAL, VALID_EMPTY, INVALID_INPUT, UPSTREAM_FAILED, or CONFIG_ERROR.

Honest contract and best results

  • Public candidate-facing career pages and portal JSON only. No Gupy admin login or api.gupy.io company token.
  • Keep maxResults small while testing; raise it after a career page or keyword returns useful rows.
  • Prefer a known *.gupy.io URL for employer monitoring; use searchKeywords for Brazil-wide discovery.
  • Leave includeTalentPool false for active openings; set it true only when banco-de-talentos rows matter.
  • Leave includeDescriptions true so career-page cards get portal description enrich when companyId is known.
  • Combine city, state, remoteOnly, or workplaceType before writing rows so filters apply before billing.

Why agents choose this Actor

  • One tool for company career pages and portal keyword search.
  • Predictable PPE with platform usage included and a hard maxResults ceiling (up to 1,000 jobs per Actor start).
  • Flat fields stay inside a small token budget for MCP clients.
  • Terminal OUTPUT.outcome makes empty, upstream-outage, and invalid-input states machine-readable.

Agent checklist

  1. Supply careerPageUrls and/or searchKeywords.
  2. Cap maxResults to the budget you can spend at $0.003 per job.
  3. After completion, read OUTPUT.outcome, then the dataset.
  4. Zero rows with VALID_EMPTY means sources responded but filters matched nothing public — change keyword, city, or employer URL.
  5. When OUTPUT.outcome is UPSTREAM_FAILED, retry once with a fresh session before escalating.

Use through the API

curl "https://api.apify.com/v2/acts/khadinakbar~gupy-jobs-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"careerPageUrls": ["https://ambev.gupy.io/"],
"maxResults": 25,
"includeTalentPool": false,
"includeDescriptions": true
}'

When the Actor completes, read dataset items from the default dataset and the OUTPUT record from the default key-value store.

Use with AI agents through Apify MCP

Fetch public Gupy Brazil jobs for Ambev from https://ambev.gupy.io/. Return up to 25 rows with title, company, location, workplace type, and jobUrl. Keep talent-pool rows excluded. Stay on public career-page and portal fields only.

Point the MCP client at https://mcp.apify.com?tools=khadinakbar/gupy-jobs-scraper, call khadinakbar/gupy-jobs-scraper, then read the dataset and OUTPUT.outcome.

Builder's note

I built this Actor on Gupy's public career __NEXT_DATA__ payload and the employability portal JSON after finding that career listings alone omit long descriptions. In my testing, portal enrich by companyId fills descriptionText when Gupy exposes it, and portal pagination.total can under-count so the Actor pages until an empty page. My goal is truthful billing: only validated public jobs with a job ID, title, company, and public URL receive the job-scraped event.

Connect the workflow

When the next board is Indeed, continue with Indeed Job Scraper for listing-level Indeed research after Gupy discovery.

For Ashby-hosted career sites after a Gupy employer scan, use Ashby Jobs Scraper.

When you need a multi-ATS hub (Greenhouse, Lever, Ashby, and more) instead of Gupy-only, start with ATS Jobs Scraper.

FAQ and responsible use

Is this affiliated with Gupy? Gupy is a trademark of its owner. This independent Actor is not affiliated with, associated with, or endorsed by Gupy.

What inputs are supported? Public *.gupy.io career URLs/subdomains and portal search keywords. LinkedIn, Indeed, or Gupy admin URLs belong in other Actors.

Why was my result empty? A valid keyword or career page with zero public matches finishes SUCCEEDED / VALID_EMPTY. Missing career pages and keywords finishes INVALID_INPUT. When every source is unavailable the outcome is UPSTREAM_FAILED.

Why is description empty? Career-page HTML cards are short. Keep includeDescriptions enabled so the Actor enriches via the portal API when the company ID is known.

Does it apply for jobs or collect candidates? No. It only reads public postings and returns the public jobUrl.

Open the Actor Issues tab for bugs. This Actor is independent research tooling, not legal, recruiting, or employment advice. Use the data in accordance with Gupy's policies, applicable law, and your own compliance rules.