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

Scrape job listings from Bumeran, Laborum, Multitrabajos, Konzerta and ZonaJobs across Argentina, Chile, Ecuador, Mexico, Panama, Peru and Venezuela by keyword, location and filters, or from job, company and search links. Get full descriptions, salary, requirements and company details.
Scrape job listings from the whole Bumeran network: Bumeran (Argentina, Mexico, Peru, Venezuela), Laborum (Chile), Multitrabajos (Ecuador), Konzerta (Panama) and ZonaJobs (Argentina). Search by keyword, province or city and the site's own filters, or paste job, company and search links, and get clean rows with the full description, salary when published, requirements and employer details. No login, no browser: 1,000 jobs with full details take about 25 seconds.
ventas, desarrollador, contador) and pick the country.Córdoba, Capital Federal, Lima, Jalisco) and filters (posted within, modality, job type, seniority, contract type, area).| Field | What it does |
|---|---|
searchQueries | Keywords, one per line. Each is searched in every location. Empty = all jobs matching the location and filters. |
country | AR, CL, EC, MX, PA, PE or VE. Pasted links always use their own site. |
locations | Provinces, regions or cities of that country. Accents and case do not matter. |
startUrls | Search, company or job links from bumeran.com.ar/.mx/.pe/.ve, laborum.cl, multitrabajos.com, konzerta.com or zonajobs.com.ar. |
maxResults | Jobs per search term x location (or per link). 0 = all. |
includeDetails | Full job records (on by default). Off = search-card fields only, faster. |
postedWithin, workModality, jobType, seniority, contractType, area, disabilityFriendly, quickApplyOnly | The site's own filters. |
sortBy | Most relevant or newest first. |
onlyNewJobs, stateKey | Save only new or changed jobs on repeated runs. |
{
"searchQueries": ["ventas", "administrativo"],
"country": "AR",
"locations": ["Córdoba", "Capital Federal"],
"workModality": "presencial",
"postedWithin": "7",
"maxResults": 100
}
Each row is one job. The main fields:
| Field | Example |
|---|---|
title, url, jobId | Job title, job page and id |
company, companyId, companyUrl, companyLogo | Employer (empty when the job is confidential) |
location, city, province, country, countryCode | Where the job is |
description, descriptionHtml, descriptionMarkdown | Full description in three formats |
salaryText, salaryMin, salaryMax, salaryCurrency, salaryPeriod, salaryType | Salary when the employer publishes it |
employmentType, contractType, workModality, seniorityLevel | Full-time / part-time, contract, on-site / remote / hybrid, level |
jobArea, jobSubArea, vacancies | Area, sub-area, number of openings |
educationLevel, minExperienceMonths, minAge, maxAge, languages, skills | Requirements |
companyIndustry, companySize, companyEmployees, companyDescription | Employer profile |
postedAt, updatedAt, expiresDate | Dates (site's local time) |
extractedEmails, extractedPhones, extractedUrls | Contacts found in the description text |
portal, sourceDomain, searchQuery, detailFetched, scrapedAt | Where and how the row was scraped |
Example (from a test run, description shortened):
{
"jobId": "1118489566",
"url": "https://www.laborum.cl/empleos/vendedor-full-time-tiendas-sector-oriente-froens-1118489566.html",
"title": "Vendedor Full Time Tiendas Sector Oriente",
"company": "Froens",
"companyId": "13131187",
"companyUrl": "https://www.laborum.cl/perfiles/empresa_froens_13131187.html",
"location": "Las Condes, Región Metropolitana",
"city": "Las Condes",
"province": "Región Metropolitana",
"country": "Chile",
"countryCode": "CL",
"description": "En Froens creemos que una buena tienda empieza con un buen equipo por eso estamos en busca de los mejores vendedores para nuestras tiendas del Sector Oriente...",
"salaryText": null,
"employmentType": "Full-time",
"contractType": "Temporal",
"workModality": "Presencial",
"seniorityLevel": "Semi Sr",
"jobArea": "Comercial, Ventas y Negocios",
"jobSubArea": "Ventas",
"vacancies": 1,
"educationLevel": "Secundario",
"minExperienceMonths": 12,
"minAge": 25,
"maxAge": 38,
"companyIndustry": "Comercio",
"companySize": "Entre 51 y 150",
"postedAt": "2026-10-21T05:54:12",
"expiresDate": "2027-01-19",
"portal": "Laborum",
"detailFetched": true
}
$0.80 per 1,000 jobs ($0.0008 per saved job), pay per result. Platform usage (compute and proxy) is paid separately and is small: we measured about $0.006 per 1,000 jobs with full details. So 1,000 jobs ≈ $0.81 and 10,000 jobs ≈ $8.05. You are only charged for jobs that are saved; a run that finds nothing costs only its few seconds of usage. Set a maximum charge per run and the scraper stops cleanly when it is reached.
Is it legal to scrape Bumeran? The scraper reads only public job listings that anyone can see without an account. Check the sites' terms and the data-protection rules that apply to you, especially if you store contact details found in descriptions.
Do I need an account, cookies or a proxy? No account and no cookies. The default datacenter proxy works; if the site refuses requests, the run moves to residential exits in the job site's country by itself.
How many jobs can I get?
As many as the search has: set maxResults to 0. Peru alone lists more than 35,000 jobs. To list every job of a country, leave the search terms empty and set a location or a filter such as Posted within: Last 30 days (a run with no search term, location, filter or link is refused, so nothing is scraped by accident). Every search, location and link is capped separately, and jobs found by several searches are saved once.
Why are some fields empty?
Employers fill different parts of the form. Salary is published on a minority of jobs, and confidential jobs hide the employer. Missing values are null (or an empty list), never guessed.
Can I monitor new jobs?
Yes. Schedule the actor and turn on Only new or changed jobs: each run then saves only jobs it has not seen before (or whose content changed), marked NEW or UPDATED.
Can I use it through the API or with integrations? Yes. Start runs and read datasets through the Scrapely API, schedule runs, or send results to webhooks and other tools.
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.
searchQueriesarrayOptionalSearch terms
Job titles or keywords, one per line, e.g. 'ventas', 'desarrollador', 'contador'. Each term is searched in every location below. Leave empty to browse all jobs that match the location and filters.
countryenumOptionaldefault "AR"Country
Which market to search. Links you paste below always use their own site.
locationsarrayOptionalLocations
Provinces, regions or cities of the chosen country, one per line: Buenos Aires, Córdoba, Capital Federal, Lima, Arequipa, Región Metropolitana, Jalisco ... Accents and case do not matter. Leave empty for the whole country.
startUrlsarrayOptionalJob, company or search URLs
Paste links from any Bumeran-network site: search result pages with their filters (https://www.bumeran.com.ar/empleos-busqueda-desarrollador.html), company pages (https://www.bumeran.com.pe/perfiles/empresa_..._12345.html) or single job pages (https://www.laborum.cl/empleos/...-1118489566.html). Every search and company link is its own search, and job links are scraped directly.
maxResultsintegerOptionaldefault 20Max jobs per search
How many jobs to save for each search term x location, search URL or company URL. 0 = every job the search has.
includeDetailsbooleanOptionaldefault trueFull job details
Load each job's full record: the whole description (text, HTML and Markdown), salary when published, contract type, seniority, requirements (education, experience, languages, skills), expiry date and company industry, size and description. Turn off for search-card fields only, which is faster.
Narrow the search. Every filter is applied by the site itself.
postedWithinenumOptionaldefault "any"Posted within
Only jobs published within this period.
workModalityenumOptionaldefault "any"Work modality
On-site, remote or hybrid jobs.
jobTypeenumOptionaldefault "any"Job type
Working time.
seniorityenumOptionaldefault "any"Seniority
Job level as the employer set it.
contractTypeenumOptionaldefault "any"Contract type
Type of hiring.
areaenumOptionaldefault "any"Area
Job area (the site's categories).
disabilityFriendlybooleanOptionaldefault falseOpen to candidates with disabilities
Only jobs marked as suitable for candidates with disabilities.
quickApplyOnlybooleanOptionaldefault falseQuick apply only
Only jobs with one-click application.
sortByenumOptionaldefault "relevance"Sort by
Order of the results. Search links keep their own order.
onlyNewJobsbooleanOptionaldefault falseOnly new or changed jobs
For scheduled runs: save only jobs that are new or changed since the previous run of the same search (the same inputs, or the same state key). Each saved job gets changeType NEW or UPDATED. The first run saves everything.
stateKeystringOptionalState key
Optional name for the tracked search when 'Only new or changed jobs' is on, e.g. 'ar-ventas'. Leave empty to derive it from the inputs.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy
Datacenter proxies work for these sites. If requests are refused, the run moves to residential exits in the job site's country by itself.
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 |
|---|---|---|
| jobId | string | null | Job id on the site |
| jobKey | string | null | Job id (same as jobId) |
| url | string | null | Job page |
| canonicalUrl | string | null | Job page (same as url) |
| applyUrl | string | null | Where to apply (the employer's own page when the job redirects there, otherwise the job page) |
| title | string | null | Job title |
| company | string | null | Employer name (empty for confidential employers) |
| companyId | string | null | Employer id |
| companyUrl | string | null | Employer profile with all its jobs |
| companyLogo | string | null | Employer logo URL |
| isConfidential | boolean | null | Employer is hidden (confidential job) |
| location | string | null | Location as shown on the site |
| city | string | null | City |
| province | string | null | Province, state or region |
| country | string | null | Country |
| countryCode | string | null | Country code (AR, CL, EC, MX, PA, PE, VE) |
| description | string | null | Full description as plain text (short card text when full details are off) |
| descriptionHtml | string | null | Full description HTML (full details) |
| descriptionMarkdown | string | null | Full description as Markdown (full details) |
| descriptionLength | number | string | null | Characters in the description |
| salaryText | string | null | Published salary as text |
| salaryMin | number | string | null | Salary from |
| salaryMax | number | string | null | Salary to |
| salaryCurrency | string | null | Salary currency |
| salaryPeriod | string | null | Salary period, e.g. por Mes |
| salaryType | string | null | gross or net |
| employmentType | string | null | Full-time, Part-time, ... |
| contractType | string | null | Contract type (full details) |
| workModality | string | null | Presencial, Remoto or Híbrido |
| seniorityLevel | string | null | Job level (full details) |
| jobArea | string | null | Area (full details) |
| jobSubArea | string | null | Sub-area (full details) |
| position | string | null | Standard position name, when the site maps one |
| vacancies | number | string | null | Number of openings |
| isDisabilityFriendly | boolean | null | Open to candidates with disabilities |
| quickApply | boolean | null | One-click application |
| hasScreeningQuestions | boolean | null | The application asks screening questions |
| educationLevel | string | null | Required education |
| educationStatus | string | null | Required education status |
| minExperienceMonths | number | string | null | Minimum experience in months |
| minAge | number | string | null | Minimum age |
| maxAge | number | string | null | Maximum age |
| gender | string | null | Gender preference set by the employer |
| residence | string | null | Residence requirement |
| languages | array | null | Required languages with level |
| skills | array | null | Required skills with level |
| benefits | array | null | Benefits listed by the employer |
| companyIndustry | string | null | Employer industry (full details) |
| companySize | string | null | Employer size range (full details) |
| companyEmployees | number | string | null | Employer headcount |
| companyDescription | string | null | Employer description (full details) |
| companyCity | string | null | Employer city |
| companyProvince | string | null | Employer province |
| companyVerified | boolean | null | Employer verified by the site |
| companyIsPro | boolean | null | Employer has a Pro profile |
| companyVideoUrl | string | null | Employer video |
| postedAt | string | null | Published at (local time) |
| postedDate | string | null | Published on |
| updatedAt | string | null | Last changed (local time) |
| expiresDate | string | null | Listing ends on (full details) |
| status | string | null | Listing status (full details) |
| listingPlan | string | null | Listing plan |
| listingType | string | null | Listing type |
| isSponsored | boolean | null | Featured listing |
| extractedEmails | array | null | Emails found in the description |
| extractedPhones | array | null | Phone numbers found in the description |
| extractedUrls | array | null | Links found in the description |
| sourceDomain | string | null | Site the job came from |
| portal | string | null | Brand (Bumeran, Laborum, Multitrabajos, Konzerta, ZonaJobs) |
| searchQuery | string | null | Search term that found the job |
| detailFetched | boolean | null | Full job record loaded |
| changeType | string | null | NEW or UPDATED (only new or changed jobs mode) |
| scrapedAt | string | null | Scraped at (UTC) |
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 job listing. | $0.0008 |
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/bumeran-scraper').call({
"searchQueries": [
"ventas"
],
"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/bumeran-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/bumeran-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.
Latest 'ventas' jobs on bumeran.com.pe with description, requirements and employer.
Keyword in one Argentine province without full job records.
Paste a Bumeran search URL; its province and area are kept.
Paste a company profile link to list its open jobs.
Browse by filters only: remote work modality and posting date.
Search laborum.cl with a job-type filter.
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.