Get on Board Jobs Scraper — LATAM Tech Jobs with Salaries
The board's own public API. Salaries in USD, measured over the whole board.
Open tech jobs from Get on Board, the Latin American tech job board, read through the board's own documented public API rather than from its HTML. Each row carries the salary range normalised to USD per month, remote eligibility, seniority, skill tags, perks, the full job text and the hiring company — or one row per hiring company instead.
oswaldocarabano/getonbrd-jobs-scraper
{
"searchQueries": ["react"],
"remoteOnly": true,
"seniority": ["senior", "expert"],
"withSalaryOnly": true,
"includeJobDetails": true,
"maxResults": 200
}- Version
- v0.1.2
- Memory
- 512 MB
- Browser
- none
- Proxy
- None needed (measured); optional fallback
Short answer
The Get on Board Jobs Scraper reads getonbrd.com through the public API that Get on Board documents for exactly this use, with no login, cookies or browser. Measured over the whole board on 23 September 2026 — 934 open jobs in 18 categories, not a sample — skill tags were on 100% of jobs and a salary range on 41.2%. Get on Board normalises every salary to a gross monthly USD figure rounded to 100, so the field is named `salary_min_usd_month`; an optional job-page read adds the salary exactly as posted. Pricing is $0.45 per 1,000 jobs, $0.90 per 1,000 companies, and $2 per 1,000 job-page reads when that option is on.
Key points
- The Get on Board Jobs Scraper uses the board's documented public API, which Get on Board describes as open to anyone with no authentication required.
- Fill rates were measured over the whole board on 23 September 2026: 934 open jobs across 18 categories, so they are a census rather than a sample.
- Get on Board publishes a salary range on 41.2% of 934 jobs: 54.5% of jobs from non-Chilean companies and 37.1% from Chilean ones.
- Salaries arrive normalised to gross USD per month and rounded to 100, so a job posted at USD 85,000 a year arrives as 7,100 to 9,600.
- The optional job-page read recovered where remote candidates must live on 8 of 24 measured pages, against 0 of 24 in the API.
- Get on Board jobs are always posted by a company: 0 of 934 measured jobs lacked one, and applicant data is never read.
What it does
Open tech jobs from Get on Board, the Latin American tech job board, read through the board's own documented public API rather than from its HTML. Each row carries the salary range normalised to USD per month, remote eligibility, seniority, skill tags, perks, the full job text and the hiring company — or one row per hiring company instead.
{
"_type": "job",
"job_id": "principal-engineer-cocoon-remote",
"title": "Principal Engineer",
"company_name": "Cocoon",
"company_country": "US",
"category_name": "Programming",
"seniority": "Expert",
"modality": "Full time",
"remote": true,
"remote_modality": "remote_local",
"salary_min_usd_month": 7100,
"salary_max_usd_month": 9600,
"salary_min_usd_year": 85200,
"job_language": "en",
"tags": ["Java", "PostgreSQL", "CI/CD", "Spring Boot", "AWS"],
"perk_names": ["Equity offered", "Paid sick days"],
"applications_count": 78,
"salary_original_min": 85000,
"salary_original_max": 115000,
"salary_original_period": "YEAR",
"remote_zone_text": "Position is 100% remote, but candidates must reside in South America and Central America.",
"equity_offered": true
}Why this one
A documented API, not a parsed page
Get on Board publishes an OpenAPI description whose public half is open to anyone and needs no authentication. The Get on Board Jobs Scraper reads that half and never the private half, which carries company accounts, applications and candidates. A URL guard makes the private job endpoint unreachable from the code, so the boundary is enforced rather than promised.
The salary field says what unit it is in
The API returns a salary that has already been converted to a monthly USD figure and rounded to 100, without saying so. That was discovered by comparing 14 salaried job pages against the API, and it is why the field is called `salary_min_usd_month` and has a yearly sibling. The original amount, period and currency come from the job page when you turn that read on.
Fill rates from the whole board
The board had 934 open jobs on the day of measurement, and every one was counted. There is no sampling error to state because there was no sample: the published 41.2% salary rate is the board's rate that day, which will move as postings change.
Companies as a row type
Setting `outputType` to `companies` returns one row per company hiring in scope — 228 on 23 September 2026 — with open job counts, titles, categories, remote job count and the salary range across its jobs. A directory mode lists every company profile on the board, about 17,000, without job aggregates.
Use cases
- Benchmark tech salaries in Latin America by seniority, category and country from the monthly USD ranges.
- Build a remote-jobs feed with the countries and regions each remote job accepts.
- Track skills demand: every job carries skill tags, 7.7 per job on average according to the README.
- List the companies hiring right now, with their reply times and the salary range across their open roles.
- Pull the entire board in one daily run: about 1,000 jobs in roughly 20 API pages.
Input
Every field has a default, and the defaults are deliberately small so a first run is cheap enough to inspect before you commit to a sweep. This table mirrors the Actor's own input schema field for field.
| Field | Default | What it does |
|---|---|---|
outputTypeenum | jobs | Output type`jobs` for one row per posting with its company, or `companies` for one row per company with its open roles aggregated. |
companySourceenum | hiring | Companies: which onesOnly with `companies`. `hiring` respects your filters; `directory` lists every company profile on the board without job aggregates. |
searchQueriesstring[] | [] | Search queriesFull-text searches. Jobs matching any query or any category are returned once each. Empty with no category returns the whole board. |
categoriesstring[] | [] | CategoriesAny of Get on Board's 18 categories, combined with the queries as an OR. |
companiesstring[] | [] | CompaniesCompany slugs or Get on Board company URLs. With queries, only matches from those companies. |
countryCodeenum | "" | CountryJobs offered in a country, remote jobs open to it included. Measured: Chile narrows 306 developer jobs to 192. |
remoteOnlyboolean | false | Remote jobs onlyFully remote or remote within a zone. |
remoteModalitystring[] | [] | Work arrangementKeep only these arrangements: fully remote, remote in zone, hybrid, on-site. |
senioritystring[] | [] | SeniorityKeep only these levels. |
withSalaryOnlyboolean | false | Only jobs with a salary41.2% of jobs publish a range. |
minSalaryUsdinteger | 0 | Minimum salary (USD per month)Monthly gross USD. Jobs without a salary are dropped when this is set. |
publishedWithinDaysinteger | 0 | Published in the last N days0 means any date. |
maxResultsinteger | 50 | Maximum resultsRows to deliver. The whole board is about 1,000 jobs. |
includeJobDetailsboolean | false | Add job-page detailspersonal dataReads each job's public page for the salary as posted, residence zone, offices, reply time and equity. One extra page and one extra event per job. |
languageenum | en | Language`en`, `es` or `pt` for category, country and perk names. Job texts stay as written. |
maxConcurrencyinteger | 3 | Parallel job pagesJob pages read at once when details are on. Get on Board rate-limits bursts. |
proxyConfigurationobject | none | ProxyOptional. Get on Board answered without a proxy in every measured run; the proxy is a fallback. |
Output and fill rates
A field being in the schema is not the same as it having a value. The percentages below were counted on real runs; the sample sizes are in Measurements. Anything not listed here is not promised.
| Field | Filled | Meaning |
|---|---|---|
titlestring | 100% | With `job_id`, `url`, `category_name`, `seniority`, `modality` and `published_at`. |
company_namestring | 100% | With `company_country`, `company_website`, `company_logo` and `company_description`. |
tagsstring[] | 100% | Skill tags as Get on Board assigns them. |
remoteboolean | 100% | With `remote_modality` and `countries`. |
description_textstring | 100% | The full job text, with `description_html`, `projects_text` and `functions_text`. |
applications_countinteger | 100% | Applications received, as the API reports it. |
company_response_time_min_daysinteger | 87.2% | With the max: how fast the company replies to applicants. |
benefits_textstring | 85.1% | Job perks in the company's words. |
perk_namesstring[] | 56.3% | Structured perks such as health coverage or flexible hours. |
salary_min_usd_monthnumber | 41.2% | With `salary_max_usd_month` and yearly equivalents. Gross monthly USD, normalised and rounded to 100 by Get on Board. |
requires_englishboolean | 39% | With `job_language`. |
eligible_countriesstring[] | 22.2% | Who may apply to a remote job. 49.5% of remote jobs. |
salary_original_minnumber | not measured | Job-page read only: the salary as posted, with period, currency and text. 14 of 14 salaried pages in a 24-page check. |
remote_zone_textstring | not measured | Job-page read only: where remote candidates must reside. 8 of 24 pages measured, against 0 of 24 in the API. |
Every key is always present. A field that exists but is empty comes back as explicit null, so a parser never has to guess.
Datasets
Different record types go to different datasets, so the main table never carries columns that are blank on most rows.
defaultOne row per job, or one row per company with `outputType: companies`.billedError rowsBad input or a search with no matches, with an explanation. Never charged.never billed
Pricing
Pay per delivered result. Charges are applied as each row is produced rather than in a lump at the end, so an aborted run bills only for what it actually gave you.
| Event | Price | Notes |
|---|---|---|
apify-actor-startActor start | $0.00001 | Platform minimum, one event per GB of memory. |
jobJob | $0.00045 | One job row with salary range in USD, remote eligibility, seniority, skills, perks, full text and the hiring company. $0.45 per 1,000. |
companyCompany | $0.0009 | One company row with profile, website, socials and, for hiring companies, open roles and salary range. |
job-detailsJob-page details | $0.002 | Adds the job page: salary as posted, residence zone, offices, reply time, last checked, equity and employment type. Only when turned on. |
Measurements
Each figure is shown with the method that produced it. A benchmark without a method is a marketing claim wearing a number's clothes.
Fill-rate census
934 open jobs, 18 categories
The whole board on 23 September 2026, read through the public API. Every rate on this page is over those 934 jobs unless stated.
Salary published
41.2% of 934 jobs
54.5% for non-Chilean companies, 37.1% for Chilean ones and 52.4% for remote jobs, all within the same 934.
Salary normalisation
14 of 14 salaried job pages
The API value matched the posted salary converted to monthly USD and rounded to 100 on every one of the 14 salaried pages in a 24-page check.
Residence zone
8 of 24 job pages, 0 of 24 in the API
Same 24 jobs read both ways on 23 September 2026.
Burst rate limit
20 of 40 concurrent requests returned 429
40 requests at 46.3 per second. 15 sequential and 30 in bursts of about six all returned 200.
Platform runs
31 runs, 0 failed
Build 0.1.2 on Apify at 512 MB; peak memory 88 MB across 20 measured runs; 0 retries and 0 errors with no proxy.
What it will not do
Stated plainly so you can judge fit before spending anything.
- Salary is present on 41.2% of 934 jobs. `withSalaryOnly` and `minSalaryUsd` filter to the ones that have it.
- The API's salary is a rounded monthly USD conversion. The amount, period and currency as posted need `includeJobDetails`, which costs $0.002 per job.
- `eligible_countries` is filled on 22.2% of all jobs and 49.5% of remote jobs. The free-text residence requirement was on 8 of 24 job pages and 0 of 24 API rows, so it needs the job-page read.
- The board is small — 934 open jobs on 23 September 2026 — so this is a deep source for Latin American tech roles, not a broad one.
- Get on Board rate-limits bursts: 40 concurrent requests returned 20 HTTP 429 responses in the Actor's own test, so job-page reads default to 3 in parallel.
Privacy
- Every row describes a job or a company. 0 of 934 measured jobs were posted without a company.
- Applicant and candidate data is never read: the private API that carries it is unreachable from the code.
- Social-profile fields that contained an email address are discarded rather than delivered.
- Removal requests: privacy@actorstack.dev
See also the data removal process.
Frequently asked questions
Does Get on Board have an API?
Why are salaries monthly and in USD?
How many jobs have a salary?
How much does the whole board cost?
Do I need a proxy?
Guides for this Actor
- Tech job postings datasetGet on Board, Torre, LinkedIn, Hacker News and elempleo.com publish job postings in five different shapes. What each source gives you, what it leaves out, and what each one says about being read by a machine.
- Get on Board APIGet on Board documents a public API that needs no key. What it returns, how it pages, and why its salary is a monthly USD conversion rather than the number the company posted.