
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape gupy.io job listings in Brazil by keyword, state, city, remote/hybrid/on-site, job type or company, or from job, company and search URLs. Get the full description, requirements, benefits, address, hiring stages, deadlines and the employer's career page and social links.
Scrape job listings from Gupy (gupy.io), the Brazilian job board and career-page platform used by employers such as Stefanini, Moura and McDonald's (Arcos Dorados). Search by keyword, state, city, remote / hybrid / on-site, job type or company and get every job with its full description, requirements, benefits, address, hiring stages, deadlines and the employer's career page and social links. No login, no cookies, pay only for the jobs you get.
analista, desenvolvedor, vendedor) or paste Gupy URLs.| Field | What it does |
|---|---|
searchTerms | Keywords, one search each (e.g. analista, estágio). Empty = every job matching the filters. |
startUrls | Gupy job pages, company career pages (https://company.gupy.io/, every open job of that company) or portal search pages (their filters are kept). |
maxResults | Jobs per search term, company or URL (default 20, 0 = all). |
fetchDetails | Full job record (on by default, same price). |
state / cities | Brazilian state and city names as Gupy spells them. |
workplaceTypes | remote, hybrid, on-site. |
jobTypes | vacancy_type_effective (CLT), vacancy_type_internship, vacancy_legal_entity (PJ), vacancy_type_apprentice, ... |
companies | Employer names as shown on Gupy, or their career page address. |
postedWithinDays | Only jobs published in the last N days. |
pwdOnly / friendlyBadgeOnly | Only jobs open to PcD / only employers with the feedback badge. |
sortBy | newest, oldest or company. |
{
"searchTerms": ["analista de dados", "desenvolvedor"],
"state": "São Paulo",
"workplaceTypes": ["hybrid", "remote"],
"jobTypes": ["vacancy_type_effective"],
"postedWithinDays": 7,
"maxResults": 50
}
Remote jobs on Gupy carry no city or state, so leave state and cities empty when you want remote work.
One row per job. The main fields:
| Field | Description |
|---|---|
id, code, name, jobUrl | Job ID, employer's code, title and link |
description, descriptionPlainText, prerequisites, responsibilities, benefits | The job text (HTML, plus a clean text version of all sections) |
addressLine, addressDistrict, city, state, stateCode, country, countryCode | Location |
jobType, workplaceType, isRemoteWork, disabilities, quickApply | Contract, workplace and application details |
publishedDate, expiresAt, registerEndDate, applicationDeadline, expireDays | Dates |
jobSteps, jobRatingCriterias, applicationQuestions, requiredApplicationFields | Hiring stages, rated skills, screening questions, required documents |
companyId, companySubdomain, careerPageName, careerPageUrl, careerPageLogo, careerPageWebsite, careerPageAbout | Employer and career page |
companyLinkedin, companyInstagram, companyFacebook, companyGlassdoor, hasFriendlyBadge | Employer links and badge |
searchTerm, detailsFetched, scrapedAt | Which search found the job, whether the full record was added, and when |
Example (long texts shortened):
{
"id": 12612837,
"code": "1061-12612837",
"name": "Analista de Negócios",
"jobUrl": "https://redemoura.gupy.io/job/eyJqb2JJZCI6MTI2MTI4MzcsInNvdXJjZSI6Imd1cHlfcG9ydGFsIn0=?jobBoardSource=gupy_portal",
"description": "<p>Há mais de 65 anos a Moura contribuí com novas ideias e tecnologias para termos as melhores soluções em energia e mover o futuro.</p>…",
"descriptionPlainText": "Há mais de 65 anos a Moura contribuí com novas ideias e tecnologias para termos as melhores soluções em energia e mover o futuro.\n\nAqui, respeitamos e incentivamos a diversidade…",
"benefits": "<p><strong><em>O que ofertamos?</em></strong></p>…",
"addressLine": "Cais do Apolo, 222, Recife, Pernambuco, Brasil, 50030-230",
"addressComplements": "15 ANDAR",
"addressDistrict": "Recife",
"city": "Recife",
"state": "Pernambuco",
"stateCode": "PE",
"country": "Brasil",
"countryCode": "BR",
"jobType": "vacancy_type_effective",
"workplaceType": "on-site",
"isRemoteWork": false,
"disabilities": true,
"publishedDate": "2026-10-21T00:54:35.316Z",
"expiresAt": "2026-11-25",
"registerEndDate": "2026-11-27",
"applicationDeadline": "2026-11-27T00:00:00.000Z",
"quickApply": false,
"jobSteps": [
{ "id": 82218045, "name": "Cadastro", "order": 0, "type": "register", "category": "registration" },
{ "id": 82218046, "name": "Entrevista Inteligente", "order": 1, "type": "offline", "category": "evaluation" },
{ "id": 82218047, "name": "Bate-Papo com o Time de Seleção", "order": 2, "type": "offline", "category": "interview" }
],
"companyId": 1061,
"companySubdomain": "redemoura",
"careerPageId": 1588,
"careerPageName": "Baterias Moura",
"careerPageDisplayName": "Rede Moura",
"careerPageUrl": "https://redemoura.gupy.io",
"careerPageWebsite": "https://www.moura.com.br",
"hasFriendlyBadge": true,
"companyLinkedin": "https://www.linkedin.com/company/grupo-moura/",
"companyInstagram": "https://www.instagram.com/bateriasmoura/",
"searchTerm": "analista",
"detailsFetched": true,
"scrapedAt": "2026-10-21T05:34:36.748Z"
}
You pay $2.20 per 1,000 jobs ($0.0022 per job), full details included. Platform usage (compute and proxy) is billed on top and is tiny for this scraper: a typical run of 1,000 jobs uses well under one cent of usage, so 1,000 jobs ≈ $2.21. Rows the scraper cannot save are never charged, and you can cap any run with a maximum total charge.
Is it legal to scrape Gupy? The scraper only reads public job ads that Gupy publishes for anyone to see, without logging in. Make sure your use of the data complies with Brazil's LGPD and Gupy's terms, especially if you store or contact people.
Do I need a Gupy account or a proxy? No account, no cookies. The default datacenter proxy works well; switch to residential (Brazil) only if requests start failing.
How many jobs can I get?
As many as Gupy lists. One search can page through up to 10,000 jobs; bigger searches are read from both ends and state by state, so a run with maxResults set to 0 can collect tens of thousands of jobs (we tested 30,000 unique jobs in one run).
Why is a field empty? Each employer decides what to publish. Benefits, district, social links, screening questions and images are often missing on the site itself. Remote jobs have no city or state.
Can I schedule it or use it from my code? Yes. Schedule runs in the console (e.g. daily with "Posted within (days)" = 1) and read the dataset through the API or an integration.
What if a company name does not match?
Use the name exactly as it appears on the Gupy job card, or paste the company's career page address (e.g. redemoura.gupy.io). Unknown companies are listed in the run's status message.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchTermsarrayOptionalSearch terms
Job titles, skills or areas, one per line, as you would type them on portal.gupy.io (e.g. analista, desenvolvedor, vendedor, estágio). Each term is its own search. Leave empty to list every job that matches the filters below.
startUrlsarrayOptionalGupy URLs
Optional. Job pages (https://company.gupy.io/jobs/12345678 or the portal's /job/... links), company career pages (https://company.gupy.io/ — every open job of that company) or portal search pages (https://portal.gupy.io/job-search/term=analista&state=São Paulo — the URL's filters are kept).
maxResultsintegerOptionaldefault 20Max jobs per search
Maximum number of jobs to save for each search term, company or search URL. 0 means every job the search has (searches over 10,000 jobs are read from both ends and state by state).
fetchDetailsbooleanOptionaldefault trueFull job details
Add each job's full record: description, requirements, responsibilities and benefits (HTML and text), full address, hiring stages, skills, screening questions, deadlines and the employer's career page, website and social links. Included in the price; turn off only for the fastest card-only runs.
Gupy's own search filters. They apply to every search term and are added to search URLs.
stateenumOptionalState
Only jobs in this Brazilian state. Remote jobs carry no state, so a state filter leaves them out.
citiesarrayOptionalCities
Only jobs in these cities, spelled as on Gupy (e.g. São Paulo, Campinas, Belo Horizonte). Remote jobs carry no city.
workplaceTypesarrayOptionalWorkplace type
Only remote, hybrid or on-site jobs. Leave empty for all.
jobTypesarrayOptionalJob type
Only these contract types. Leave empty for all.
companiesarrayOptionalCompanies
Only jobs from these employers: the name shown on Gupy (e.g. Stefanini Latam, Baterias Moura) or the career page address (e.g. redemoura.gupy.io). Each company is searched on its own; close names are matched.
postedWithinDaysintegerOptionalPosted within (days)
Only jobs published in the last N days. Leave empty for any date.
pwdOnlybooleanOptionaldefault falseOnly jobs open to people with disabilities (PcD)
Only jobs the employer marks as open to candidates with disabilities.
friendlyBadgeOnlybooleanOptionaldefault falseOnly employers with the feedback badge
Only employers with Gupy's feedback badge (companies that answer most candidates).
sortByenumOptionaldefault "newest"Sort order
Order in which jobs are read. Newest first is best with 'Posted within (days)'.
Gupy's public endpoints work well over datacenter proxies; switch to residential only if requests start failing.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Proxy used for Gupy requests.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| code | string | null | |
| name | string | null | |
| jobUrl | string | null | |
| description | string | null | |
| descriptionPlainText | string | null | |
| prerequisites | string | null | |
| responsibilities | string | null | |
| benefits | string | null | |
| addressLine | string | null | |
| addressComplements | string | null | |
| addressDistrict | string | null | |
| city | string | null | |
| state | string | null | |
| stateCode | string | null | |
| country | string | null | |
| countryCode | string | null | |
| jobType | string | null | |
| workplaceType | string | null | |
| publicationType | string | null | |
| status | string | null | |
| reason | string | null | |
| jobLanguage | string | null | |
| publishedAt | string | null | |
| publishedDate | string | null | |
| expiresAt | string | null | |
| registerEndDate | string | null | |
| applicationDeadline | string | null | |
| companySubdomain | string | null | |
| companyTimezone | string | null | |
| companyLanguage | string | null | |
| careerPageName | string | null | |
| careerPageDisplayName | string | null | |
| careerPageUrl | string | null | |
| careerPageLogo | string | null | |
| careerPageWebsite | string | null | |
| careerPageAbout | string | null | |
| careerPageDescriptionTitle | string | null | |
| careerPageKnowMoreTitle | string | null | |
| careerPageVisibility | string | null | |
| careerPageMainImage | string | null | |
| careerPageSocialImage | string | null | |
| companyLinkedin | string | null | |
| companyFacebook | string | null | |
| companyTwitter | string | null | |
| companyInstagram | string | null | |
| companyGithub | string | null | |
| companyGlassdoor | string | null | |
| jobImage | string | null | |
| jobSocialImage | string | null | |
| jobSmartphoneImage | string | null | |
| videoUrl | string | null | |
| videoSectionTitle | string | null | |
| searchTerm | string | null | |
| scrapedAt | string | null | |
| id | number | null | |
| expireDays | number | null | |
| companyId | number | null | |
| careerPageId | number | null | |
| isRemoteWork | boolean | null | |
| handicapped | boolean | null | |
| disabilities | boolean | null | |
| isJobPostedOnGoogle | boolean | null | |
| quickApply | boolean | null | |
| hasFriendlyBadge | boolean | null | |
| badgeFriendly | boolean | null | |
| badgeIsPWD | boolean | null | |
| detailsFetched | boolean | null | |
| skills | any | |
| jobSteps | any | |
| jobRatingCriterias | any | |
| applicationQuestions | any | |
| requiredApplicationFields | any | |
| companyIntegrations | any |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Job | One saved Gupy job, full details included. | $0.0022 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('openrole/gupy-jobs-scraper').call({
"searchTerms": [
"analista"
],
"maxResults": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run openrole/gupy-jobs-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=openrole/gupy-jobs-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Remote-only search with full job records.
Keyword search in one Brazilian state.
Company filter by the name shown on Gupy; includes jobs outside Brazil.
Paste a company's gupy.io career page to list its open jobs.
Paste a portal.gupy.io search; its filters are kept.
Job type and PcD filters, no keyword needed.
Two keywords at once, search cards without the full record.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.