BambooHR Jobs: Career Pages & Salaries avatar

BambooHR Jobs: Career Pages & Salaries

Pricing

from $0.39 / 1,000 jobs

Go to Apify Store
BambooHR Jobs: Career Pages & Salaries

BambooHR Jobs: Career Pages & Salaries

BambooHR jobs scraper: every open job from any company's BambooHR careers page (acme.bamboohr.com) with the pay as published and as numbers, experience level, job type, address, company logo, full description as text or Markdown and the apply link. Subdomains or URLs. No login.

Pricing

from $0.39 / 1,000 jobs

Rating

0.0

(0)

Developer

DeepMine

DeepMine

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Paste BambooHR careers pages (https://acme.bamboohr.com/careers) or just their subdomains (acme), and get every open job as one clean row each: title, location and full address, remote or hybrid, department, job type and the company's own employment status, minimum experience level, posting date, the pay as the company wrote it and as numbers (min, max, currency, period), the company logo, the full description as text and Markdown, and the job link.

๐Ÿ’ผ Title๐Ÿข Company๐Ÿ“ Location๐Ÿ’ฐ Salary๐ŸŽ“ Experience๐Ÿ•’ Job Type๐Ÿ“… Posted
EstimatorTri-M GroupKennett Square, Pennsylvania, United States$85K-$88K dependent upon experienceExperiencedFull-time2026-10-23
Lineperson 1st Class (LH)Tri-M GroupLock Haven, Pennsylvania, United States$46-$61 per hour dependent upon experienceExperiencedFull-time2026-10-20
Civil Project Superintendent | Fraser ValleyEmil Anderson GroupAbbotsford, British Columbia, Canada$120,000-$160,000Manager/SupervisorFull-time2026-09-22

$0.49 per 1,000 jobs on the Starter plan ($0.59 Free, $0.44 Scale, $0.39 Business). The prefilled run (50 jobs: 25 from each of 2 companies) costs about $0.02.

It reads BambooHR's public careers API, the one each company's careers page uses, live on every run. No browser and no login. Descriptions, Markdown and every pay field are included at the same price.

What you can do with it

  • Pay you can sort and chart: BambooHR's pay field is free text ("$46-$61 per hour dependent upon experience", "Up to ยฃ71,800 FTE", "$40 per hour + $2,000 signing bonus", "JPY 5M-9M"). salary keeps the company's words; salaryMin, salaryMax, salaryCurrency and salaryPeriod read it: "up to" is the top of the range, a bonus after a + is not, $ on a Canadian job is CAD unless the line says US$. When the pay field is empty but the description states a range, the salary comes from there and salarySource says description.
  • Filter by pay and seniority before you pay: a minimum yearly pay (hourly pay counts 2,080 hours), only jobs with published pay, BambooHR's experience levels (Entry-level to Executive), plus title words, department, job type, location (whole words or country codes), remote only, posted in the last N days or on or after a date. Jobs your filters drop cost nothing.
  • Feed LLMs and AI agents: descriptionMarkdown keeps headings, lists, bold and links; description is plain text.
  • Monitor hiring at target accounts: schedule a daily run with ๐Ÿ“… Posted within 1.
  • Build lead lists of companies hiring on BambooHR: each row carries the company name and logo as its careers page shows them, and the job's full address.

What to paste

  • A careers page URL, e.g. https://trimgroup.bamboohr.com/careers, or a job URL from it (https://trimgroup.bamboohr.com/careers/507).
  • The subdomain alone, e.g. trimgroup: the part before .bamboohr.com.
  • Greenhouse, Lever, Ashby and Workday board URLs work in the same run (greenhouse:airbnb for a board name on another job board), with the same columns.

Input

{
"companies": ["https://trimgroup.bamboohr.com/careers", "emilanderson"],
"titleKeywords": ["technician", "estimator"],
"experienceLevels": ["Mid-level", "Experienced"],
"minSalary": 50000,
"locations": ["US"],
"postedWithinDays": 30,
"maxJobsPerCompany": 100,
"maxResults": 1000,
"includeMarkdown": true,
"includeAllFields": true
}
FieldWhat it does
companiesBambooHR careers page URLs or subdomains, one per line. Other job board URLs work too.
maxJobsPerCompanyEach company's newest jobs, up to this many (default 100), so one big company can't take all of maxResults. 0 = every job. You pay per job, so this caps the cost per company.
maxResultsStop after this many jobs in total, which caps the run's cost.
includeDescriptionReads each job's own page (on by default): the description, pay, posting date and experience level. BambooHR's job list shows none of these, so with it off the rows are shorter and the run faster.
titleKeywordsKeep jobs whose title contains any of these (not case-sensitive).
departmentsKeep jobs whose department contains any of these (not case-sensitive).
employmentTypesKeep only these job types: Full-time, Part-time, Contract, Internship, Temporary.
experienceLevelsKeep only these minimum experience levels: Entry-level, Mid-level, Experienced, Manager/Supervisor, Senior Manager/Supervisor, Executive.
locationsKeep jobs whose location contains any of these as whole words (India doesn't match Indiana). Two letters are a country code and match only the job's countries: US, GB (or UK), DE, CA (Canada, not California).
remoteOnlyKeep only jobs marked remote.
postedWithinDaysKeep only jobs posted in the last N days (0 = any date).
postedAfterKeep only jobs posted on or after this day, e.g. 2026-10-01 (empty = any date).
minSalaryKeep jobs whose published pay reaches this much a year, in the job's own currency (an hourly rate times 2,080; a monthly one times 12). Jobs without pay are left out.
onlyWithSalaryKeep only jobs whose pay field or description states an amount.
includeMarkdownAdds descriptionMarkdown (on by default).
includeHtmlAdds descriptionHtml, the company's own formatting.
includeAllFieldsReads the pay line as numbers with the rules above and takes the description's range when the pay field has none; adds salarySource, experienceLevel, employmentStatus, isRemote, address, postalCode, globalId, inputOrder and the company logo (on by default).
includeRawJsonAdds raw: BambooHR's own records for the job, verbatim, for your own parsing. Needs includeAllFields.

Output

One row per job. Rows come in the order of your companies list, each company's jobs newest first.

Two datasets, both with the same rows:

  • ๐Ÿ’ผ All Jobs (default dataset). Views: ๐Ÿ“Š Overview (๐Ÿ–ผ๏ธ Logo, ๐Ÿ’ผ Title, ๐Ÿข Company, ๐Ÿ“ Location, ๐Ÿ  Workplace, ๐Ÿ•’ Job Type, ๐Ÿ—‚๏ธ Department, ๐Ÿ’ฐ Salary, ๐ŸŽ“ Experience, ๐Ÿ“… Posted, ๐Ÿ”— Job Page) and ๐Ÿ“ Details (๐Ÿ’ผ Title, ๐Ÿข Company, ๐Ÿท๏ธ Employment Status, ๐ŸŽ“ Experience, ๐Ÿ—‚๏ธ Department, ๐Ÿ—บ๏ธ All Locations, ๐ŸŒ Country, ๐Ÿ“ฎ Address, ๐Ÿ“‹ Job Board, ๐Ÿ†” Job ID, ๐Ÿ”— Job Page).
  • ๐Ÿ’ฐ With Salary: the delivered jobs with a pay amount, in the same order, at no extra charge. View: ๐Ÿ–ผ๏ธ Logo, ๐Ÿ’ผ Title, ๐Ÿข Company, ๐Ÿ“ Location, ๐Ÿ’ฐ Salary, ๐Ÿ’ฐ Salary Min, ๐Ÿ’ฐ Salary Max, ๐Ÿ’ฑ Currency, โฑ๏ธ Pay Period, ๐Ÿ”Ž Pay Source, ๐Ÿ“… Posted, ๐Ÿ”— Job Page.

Output fields

In row order:

  • companyLogo: the company logo from its BambooHR careers page. A stable image link.
  • title: job title.
  • company: company name as its careers page shows it.
  • location: city, state or province and country.
  • workplaceType: Remote, Hybrid or On-site from the company's own setting.
  • employmentType: Full-time, Part-time, Contract, Internship, Temporary or Other, read from the company's employment status.
  • department: the department the company files the job under.
  • salary: the pay as the company wrote it, e.g. $46-$61 per hour dependent upon experience, or the range the description states.
  • salaryMin: the lowest pay, as a number.
  • salaryMax: the highest pay, as a number.
  • salaryCurrency: ISO currency code, e.g. USD, CAD, GBP.
  • salaryPeriod: year, month, week, day or hour.
  • postedAt: the date BambooHR shows for the job (2026-10-23).
  • jobUrl: the job's page on the careers site, where you apply too.
  • applyUrl: where to apply. On BambooHR that is the job page itself, so it equals jobUrl.
  • locations: every place the job is offered, as a list.
  • countryCode: ISO code of the job's country.
  • salarySource: where the salary comes from: compensation (the pay field) or description (a range written in the job description, when the pay field has none).
  • experienceLevel: the minimum experience the company asks for: Entry-level, Mid-level, Experienced, Manager/Supervisor, Senior Manager/Supervisor or Executive.
  • employmentStatus: the company's own employment status label, e.g. Regular Full-Time or Craft.
  • isRemote: true for a remote job, false for an on-site or hybrid one, empty when the company doesn't say.
  • address: the job's address on one line, e.g. Abbotsford, British Columbia V2T 1N3, Canada (each part only where the company publishes it).
  • postalCode: the postal code, where the company publishes one.
  • globalId: a key unique across companies and runs, bamboohr:<subdomain>:<job id>: use it to find jobs new since your last run.
  • inputOrder: the company's place in your companies list (0 = first).
  • description: the full job description as plain text. Only with includeDescription (on by default).
  • descriptionHtml: the description with the company's formatting. Only with includeHtml.
  • descriptionMarkdown: the description as Markdown. Only with includeMarkdown (on by default).
  • raw: BambooHR's own records for the job, verbatim (list and detail). Only with includeRawJson.
  • ats: BambooHR (or the other job board's name).
  • boardUrl: the careers page the job was read from.
  • jobId: the job's id on BambooHR.
  • companyInput: the entry of your companies list that led to this job.
  • scrapedAt: when this run read the job (UTC).

Example row (description shortened):

{
"companyLogo": "https://images3.bamboohr.com/478787/logos/cropped.jpg?v=42",
"title": "Civil Project Superintendent | Fraser Valley",
"company": "Emil Anderson Group",
"location": "Abbotsford, British Columbia, Canada",
"workplaceType": "On-site",
"employmentType": "Full-time",
"department": "EAC",
"salary": "$120,000-$160,000",
"salaryMin": 120000,
"salaryMax": 160000,
"salaryCurrency": "CAD",
"salaryPeriod": "year",
"postedAt": "2026-09-22",
"jobUrl": "https://emilanderson.bamboohr.com/careers/319",
"applyUrl": "https://emilanderson.bamboohr.com/careers/319",
"locations": ["Abbotsford, British Columbia, Canada"],
"countryCode": "CA",
"salarySource": "compensation",
"experienceLevel": "Manager/Supervisor",
"employmentStatus": "Full Time Staff",
"isRemote": false,
"address": "Abbotsford, British Columbia V2T 1N3, Canada",
"postalCode": "V2T 1N3",
"globalId": "bamboohr:emilanderson:319",
"inputOrder": 1,
"description": "Division: Emil Anderson Construction\n\nDepartment: EAC\n\nAbout Emil Anderson Construction...",
"descriptionMarkdown": "Division: Emil Anderson Construction\n\nDepartment: EAC\n\nAbout Emil Anderson Construction...",
"ats": "BambooHR",
"boardUrl": "https://emilanderson.bamboohr.com/careers",
"jobId": "319",
"companyInput": "https://emilanderson.bamboohr.com/careers",
"scrapedAt": "2026-10-23T21:58:12Z"
}

The run's ๐Ÿงพ Run summary (the OUTPUT record in the key-value store) shows, per company, which careers page was read, how many jobs it lists, how many matched your filters and how many were delivered, plus any error.

When something goes wrong

  • A subdomain that isn't a BambooHR careers page (BambooHR sends unknown ones to its own website) is listed in the run summary and the status message as not found. The run still delivers everything else.
  • A job taken down between the list and its own page is skipped and counted in the run summary; it isn't charged.
  • If a careers page can't be read after several retries on fresh IPs, the run ends as failed with the reason, so you notice. The jobs that were read are still in the dataset.
  • When maxResults is reached, the companies after that point get nothing; the run summary marks them as skipped.

Pricing

You pay per job delivered: $0.59 per 1,000 jobs on the Free plan, $0.49 on Starter, $0.44 on Scale and $0.39 on Business. Descriptions, Markdown and every pay field are included at the same price. Companies that aren't found, jobs removed by your filters, jobs taken down and the ๐Ÿ’ฐ With Salary list cost nothing.

Examples on Starter: the prefilled run (50 jobs) about $0.02; the default maxResults of 1,000 jobs $0.49.

FAQ

Why do some jobs have no salary? The company decides whether to fill in BambooHR's pay field. When it is empty, the row takes the range the description states, if it states one (salarySource: description). A job with neither has no salary.

Why isn't every job newest first by the minute? BambooHR shows a posting date, not a time, so jobs posted the same day keep the company's order.

Can it find every company on BambooHR? No: BambooHR has no public list of its customers. Paste the companies you care about; a careers page URL or the subdomain is enough.

Do I need a proxy? The default Apify datacenter proxy is all BambooHR's careers API needs.

How fresh is the data? Each run reads the careers pages live; nothing comes from a cache or a database.

Feedback

Missing a field or a company it can't read? Open an issue on the Issues tab and we'll look at it. If the data helped you, a short review on this page helps other people find it.