BambooHR Jobs & Careers Scraper avatar

BambooHR Jobs & Careers Scraper

Pricing

from $6.80 / 1,000 results

Go to Apify Store
BambooHR Jobs & Careers Scraper

BambooHR Jobs & Careers Scraper

Scrape open jobs from any company career board hosted on BambooHR. Get job title, department, location, employment type, status, posting date, apply link and the full description for each role. Export to JSON, CSV or Excel.

Pricing

from $6.80 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

20 days ago

Last modified

Share

BambooHR Jobs & Careers Scraper

BambooHR Jobs & Careers Scraper

Here is one real result, with every field the actor returns (the description is truncated here for readability):

{
"id": "21",
"title": "Paid Marketing Specialist",
"company": "lendio",
"department": "Marketing",
"departmentId": "18256",
"category": null,
"employmentType": "Full-Time",
"jobOpeningStatus": "Open",
"city": "Vancouver",
"state": "British Columbia",
"postalCode": "V6Z 1E4",
"country": "Canada",
"isRemote": null,
"locationType": "0",
"minimumExperience": "Manager/Supervisor",
"compensation": "$130,000",
"salaryMin": 130000,
"salaryMax": 130000,
"salaryCurrency": "USD",
"salaryPeriod": "yearly",
"postedDate": "2026-04-07",
"description": "About Us\n\nOur mission is simple: we want to set people free to do meaningful work...",
"applyUrl": "https://lendio.bamboohr.com/careers/21",
"careerBoardUrl": "https://lendio.bamboohr.com/careers",
"source": "BambooHR",
"observedAt": "2026-08-10T14:28:40.330Z"
}

The most complete BambooHR careers scraper available. It returns every field a BambooHR job posting exposes, including department, employment type, full location, published salary, and the complete job description, plus optional AI summary, skills, and salary-estimate add-ons and a contact-email finder, and gives you eight filters to target exactly the jobs you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor reads the public BambooHR careers board of any company hosted at company.bamboohr.com/careers and writes one normalized record per job opening. Give it one or more company subdomains (just the subdomain, for example lendio, or the full URL). With withDetails on (the default) each job is opened to add the full description, posting date, published salary and compensation, location type, and country. Post-filters narrow by keyword, remote-only, employment type, department, location, posted-after date, and salary band. Missing source values are returned as null.

Optional paid add-ons enrich each record: an AI job-description summary, structured skills, technologies and seniority tags, a market salary estimate for jobs without a published salary, and a contact-email finder. Each add-on is billed only for the work it does.

Quickstart

Open the actor, paste this into the input, and press Run. It returns up to 10 jobs from the Lendio careers board with full details.

{
"companies": ["lendio"],
"maxJobs": 10,
"withDetails": true
}

Add more subdomains to scrape several boards in one run. Use searchQuery, remoteOnly, department, or the salary filters to narrow the results. Turn withDetails off for a faster listing-only run.

Input reference

FieldTypeRequiredDefaultDescription
companiesstring[]no(empty)BambooHR company subdomains. For company.bamboohr.com/careers enter company. Full URLs are accepted too.
maxJobsintegerno10Maximum jobs to collect across all boards (1 to 1000000).
withDetailsbooleannotrueAlso fetch each job's full description, posting date, salary, and country. Turn off for a faster listing-only run.
searchQuerystringno(empty)Keep only jobs whose title, department, or description contains this text, for example engineer, remote, sales.
remoteOnlybooleannofalseKeep only jobs flagged as remote.
employmentTypestringno(any)Keep only jobs whose employment type contains this text (case-insensitive), for example full, part, contract, intern.
departmentstringno(any)Keep only jobs whose department contains this text (case-insensitive).
locationstringno(any)Keep only jobs whose city, state, or country contains this text (case-insensitive).
postedAfterstringno(any)Keep only jobs posted on or after this ISO date, for example 2026-01-31.
minSalaryintegerno(none)Keep only jobs whose published salary maximum is at least this amount. Jobs without a published salary are kept.
maxSalaryintegerno(none)Keep only jobs whose published salary minimum is at most this amount. Jobs without a published salary are kept.
withJdSummarybooleannofalsePaid add-on. Concise 2 to 3 sentence summary of each job description. Requires a paid Apify plan. Billed only when a summary is produced.
withSkillsbooleannofalsePaid add-on. Structured required skills, technologies/tools, and a seniority level from each description. Requires a paid Apify plan. Billed only when tags are produced.
withSalaryEstimatebooleannofalsePaid add-on. Market salary range for jobs without a published salary, from title, location, and description. Requires a paid Apify plan. Billed only when an estimate is produced.
enrichContactsbooleannofalsePaid add-on. For each result without an email, attempt to find a public business email and contact name. Billed per attempt, plus extra only when an email is found.
enrichContactsMaxintegerno50Cap how many results the contact add-on tries to enrich. Free Apify accounts are capped at 3.

Filters combine with logical AND.

Output reference

One dataset item per job. Types: string, integer, boolean, string[], or null when the source value is absent.

FieldTypeDescription
idstringJob opening ID within the board.
titlestringJob title.
companystringCompany subdomain the job came from.
departmentstringDepartment name.
departmentIdstringDepartment ID.
categorystringJob category when present, else null.
employmentTypestringEmployment type, for example Full-Time.
jobOpeningStatusstringOpening status, for example Open.
citystringCity of the job.
statestringState/province of the job.
postalCodestringPostal code of the job.
countrystringCountry of the job (detail only).
isRemotebooleanWhether the job is flagged remote, or null when not stated.
locationTypestringBambooHR location-type code.
minimumExperiencestringMinimum experience level as posted.
compensationstringCompensation text as published (detail only).
salaryMinintegerParsed minimum salary (detail only), or null.
salaryMaxintegerParsed maximum salary (detail only), or null.
salaryCurrencystringSalary currency code (detail only), or null.
salaryPeriodstringSalary period, for example yearly (detail only).
postedDatestringPosting date YYYY-MM-DD (detail only).
descriptionstringFull job description text (detail only).
applyUrlstringDirect URL to apply to the job.
careerBoardUrlstringURL of the company's BambooHR careers board.
sourcestringData source label. Always BambooHR.
observedAtstringISO 8601 timestamp of collection.
aiJdSummarystringJob-description summary. Populated only when the AI summary add-on is on, else absent.
aiSkillsstring[]Required skills from the AI skills add-on, else absent.
aiTechnologiesstring[]Technologies/tools from the AI skills add-on, else absent.
aiSenioritystringSeniority level from the AI skills add-on, else absent.
aiSalaryEstimateMinintegerEstimated minimum salary from the salary-estimate add-on, else absent.
aiSalaryEstimateMaxintegerEstimated maximum salary from the salary-estimate add-on, else absent.
aiSalaryEstimateCurrencystringEstimated salary currency, else absent.
aiSalaryEstimateBasisstringannual or hourly basis of the estimate, else absent.
aiSalaryEstimateConfidencestringlow, medium, or high confidence of the estimate, else absent.
enrichedEmailstringPublic business email found by the contact add-on, or null.
enrichedContactNamestringContact person name found by the add-on, or null.
enrichedJobTitlestringContact person job title from the add-on, or null.
enrichedEmailStatusstringverified, likely, guessed, or not_found from the add-on.
enrichedSourcestringWhere the enriched email was found, or null.
enrichedConfidencenumberConfidence score for the enriched email, or null.

AI and contact-enrichment fields are only present when their add-on is on. A failed run writes a single item with an error field and is not charged.

Example output record

Real record from a live run (input {"companies":["lendio"],"maxJobs":10,"withDetails":true}), description truncated:

{
"id": "21",
"title": "Paid Marketing Specialist",
"company": "lendio",
"department": "Marketing",
"departmentId": "18256",
"category": null,
"employmentType": "Full-Time",
"jobOpeningStatus": "Open",
"city": "Vancouver",
"state": "British Columbia",
"postalCode": "V6Z 1E4",
"country": "Canada",
"isRemote": null,
"locationType": "0",
"minimumExperience": "Manager/Supervisor",
"compensation": "$130,000",
"salaryMin": 130000,
"salaryMax": 130000,
"salaryCurrency": "USD",
"salaryPeriod": "yearly",
"postedDate": "2026-04-07",
"description": "About Us\n\nOur mission is simple: we want to set people free to do meaningful work...",
"applyUrl": "https://lendio.bamboohr.com/careers/21",
"careerBoardUrl": "https://lendio.bamboohr.com/careers",
"source": "BambooHR",
"observedAt": "2026-08-10T14:28:40.330Z"
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~bamboohr-jobs-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"companies":["lendio"],"searchQuery":"marketing","withDetails":true,"maxJobs":25}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~bamboohr-jobs-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"companies":["lendio","neon"],"remoteOnly":true,"maxJobs":100}'

Apify CLI:

apify call scrapers_lat/bamboohr-jobs-scraper \
--input '{"companies":["lendio"],"department":"Engineering"}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per job returned (result event). See the pricing tab for the current per-result price.
  • Add-ons billed separately. Detail fetching (details), AI summary (ai_jd_summary), AI skills (ai_skills), AI salary estimate (ai_salary_estimate), and contact enrichment (contact-search-attempt per attempt, plus contact-email-found only when an email is found) are billed only for the work they do.
  • No charge on failure. If a run errors, the actor writes a single item with an error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 records per run, 3 contact-enrichment attempts, and cannot use the AI add-ons. Upgrade for higher maxJobs and enrichment.

FAQ and troubleshooting

A run returned 0 records. Why? The subdomain has no open jobs, or your filters were too strict. Check the subdomain (open company.bamboohr.com/careers in a browser), loosen filters, or remove remoteOnly. Zero-result runs are not charged.

Which company do I enter? Just the BambooHR subdomain. For a board at lendio.bamboohr.com/careers, enter lendio. You can also paste the full URL.

Why are description, salaryMin, or country missing? Those come from each job's detail page, which is only fetched when withDetails is on. With it off, only listing-level fields are returned.

Why is salaryMin/salaryMax null? The employer did not publish a salary. Turn on withSalaryEstimate (paid) to add a market estimate for those jobs.

Why are the AI or enriched fields absent? Those add-ons are off by default and (for AI) require a paid Apify plan. Turn on withJdSummary, withSkills, withSalaryEstimate, or enrichContacts to populate them.

Is this an official BambooHR tool? No. This actor is independent and has no affiliation with BambooHR. It reads only job data that companies publish on their public BambooHR careers boards. Use it in accordance with the source terms of use.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with BambooHR. Accesses only publicly available careers-board data. Use in accordance with the source terms of use.