---
title: "BambooHR API"
description: "BambooHR API: an HRIS API for one company (api.bamboohr.com), not a jobs feed, where the careers widget publishes postings, and one call for them."
canonical: https://jobspipe.dev/sources/bamboohr
date_published: 2026-06-16
date_modified: 2026-09-26
author: Dvir Atias
---

# BambooHR API

BambooHR's API at api.bamboohr.com/api/gateway.php/<company>/v1/ is an HRIS API for one company's employees, time off and reports, authenticated with a per-company key, not a job postings feed; openings appear on the customer's careers widget. JobsPipe does not collect BambooHR; the same employers' openings reach one search endpoint through the boards JobsPipe does collect, in one record shape across 30+ sources. [documentation.bamboohr.com](https://documentation.bamboohr.com/).

> BambooHR's API is HRIS-shaped and keyed per company; its job postings live in a careers widget. JobsPipe does not collect BambooHR. Here is what each surface gives you and how to reach the same employers.

**Canonical URL:** https://jobspipe.dev/sources/bamboohr

## Coverage

JobsPipe does not collect BambooHR. This page explains what BambooHR exposes publicly and how to reach the same postings where they are also published on a board JobsPipe does collect (Workday, Greenhouse, Lever, Ashby, LinkedIn, Indeed, SmartRecruiters, Workable, Personio, Recruitee, Teamtailor, EURES, Paylocity, Breezy HR, CV-Library, Y Combinator, Bayt, JobTech (Sweden), Resume-Library, Arbeitnow, Himalayas, Rise, Manatal, Pinpoint, JobScore, HireHive, The Muse, Remotive, Remote OK, Jobicy, Working Nomads, Landing.jobs).

## Why BambooHR jobs data is confusing

BambooHR is an HR information system with a recruiting add-on, not a standalone ATS. The official API at api.bamboohr.com is built around employee records, time-off, benefits, reports and custom tables, authenticated with a per-company key sent as the Basic-auth username. The applicant-tracking module exists, but it does not publish openings through a documented public endpoint.

The only public surface for BambooHR job postings is the careers page and embeddable widget on each customer's <company>.bamboohr.com/careers subdomain. The widget renders postings client-side from an internal JSON endpoint whose shape and host change between BambooHR releases. JobsPipe does not collect that surface. The same employers usually publish to LinkedIn and Indeed, which JobsPipe does collect.

## Workarounds

### Reverse-engineer the BambooHR careers widget

Possible per customer. The widget's underlying JSON URL and field names change without notice, and BambooHR publishes no customer list, so discovery and maintenance are both on you.

### Get a BambooHR API key from each customer

The official BambooHR API is HRIS-shaped and scoped to one company's key. It reaches that company's recruiting records only with their permission and is not a path to multi-tenant jobs data.

### What JobsPipe offers instead

JobsPipe does not collect BambooHR. Search the same employers by name across the boards JobsPipe does collect; a BambooHR customer's postings usually appear as LinkedIn and Indeed rows.

## Fields available on every record

- `id`
- `job_title`
- `company`
- `company_domain`
- `url`
- `date_posted`
- `discovered_at`
- `last_seen_at`
- `verified_at`
- `status`
- `closed_at`
- `closed_reason`
- `ghost_score`
- `seniority`
- `cities`
- `state_code`
- `min_annual_salary_usd`
- `max_annual_salary_usd`
- `technology_slugs`
- `keyword_slugs`
- `esco_skills`
- `sources`

## FAQ

### What is the BambooHR careers page URL?

Each customer's public job postings live on the careers page and embeddable widget at <company>.bamboohr.com/careers. The widget renders postings client-side from an internal JSON endpoint whose shape and host change between BambooHR releases without notice. Reading it means one reverse-engineered integration per customer, with discovery and maintenance on you.

### Can the BambooHR API read job openings and applicants?

Only for the company that issued the key. The BambooHR Hiring module stores applicants and job openings, and the API exposes applicant-tracking endpoints for job summaries, applications and statuses, but a key reaches its own company's subdomain and inherits the creating user's access level. None of it reads another employer's postings.

### Is there a list of companies using BambooHR?

No. BambooHR publishes no customer list, so finding which companies run its careers widget is on you. The same employers usually publish their roles to LinkedIn and Indeed, and JobsPipe collects those boards, so a company_name_partial_match_or search on POST /v1/jobs/search returns a known BambooHR customer's postings with sources[0].provider naming where each was found.

### Can a jobs API return BambooHR employee or payroll data?

No. Employee records, time-off balances, benefits and payroll are private to each BambooHR customer and reachable only through that company's own API key. JobsPipe is jobs-only and never touches HRIS APIs, so those records are out of scope for any job postings search.

## Does BambooHR have an API?

Yes, an HRIS API, not a jobs API. api.bamboohr.com/api/gateway.php/<company>/v1/ exposes employees, employee fields and tables, time-off requests and balances, benefits, reports, files, training and webhooks for one company, authenticated with an API key as the Basic-auth username. The BambooHR Hiring module stores applicants and job openings in the same system, and the API does expose applicant-tracking resources, but only to a key from that company. The public job postings live in the careers page and widget on <company>.bamboohr.com/careers, which reads an undocumented JSON endpoint. JobsPipe does not collect that widget; it collects the boards those same employers syndicate to.

## Is the BambooHR API free?

It carries no separate price: API access ships with every BambooHR plan and is limited to the account that generated the key. There is no self-serve developer tier, no sandbox for outsiders and no cross-customer credential, so for anyone who is not the customer the API is unavailable rather than expensive. JobsPipe's free tier returns 1,000 jobs to start across the boards it collects and the sandbox at POST /v1/sandbox/jobs/search needs no key, but neither returns BambooHR rows.

## How do I get a BambooHR API key?

From inside the customer's account. Any user with the right permissions opens the profile menu in BambooHR, chooses API Keys, names a key and copies it once; the key inherits that user's access level and works only against that company's subdomain. BambooHR's partner program adds OAuth-style app authorization for Marketplace apps, still consented company by company. None of this reads another employer's postings. For that, create a JobsPipe key and query POST /v1/jobs/search with company_name_partial_match_or.

## What does the BambooHR API documentation cover?

documentation.bamboohr.com covers authentication (API key over Basic auth, plus OAuth for Marketplace apps), the employee endpoints (get, add, update, directory, photos, custom fields and tables), time-off (requests, balances, policies, whos-out), benefits, reports (custom and saved), goals, training, files, the applicant-tracking endpoints for job summaries, applications and statuses, and webhooks with their payloads and retry rules. It documents nothing about reading job postings across companies, because the API has no such surface. JobsPipe's docs at /docs cover the record shape returned for the boards JobsPipe does collect.

## What JobsPipe returns for BambooHR

Nothing under "source_or": ["bamboohr"]: JobsPipe does not collect BambooHR careers widgets. What JobsPipe returns is the same employers' postings where they are published elsewhere: filter POST /v1/jobs/search with company_name_partial_match_or for the BambooHR customer you care about, and each record comes back with sources[0].provider naming the board it came from (most often linkedin or indeed for BambooHR customers), status, ghost_score, discovered_at, last_seen_at, seniority, and min_annual_salary_usd and max_annual_salary_usd when the posting states a range. The sample above shows the shape for one such record found on LinkedIn.

## BambooHR ATS vs HRIS

BambooHR is primarily an HRIS: employee records, PTO, benefits, performance reviews. The applicant-tracking module is bundled with most plans but there is no developer-facing job-posting feed, no candidate webhook surface an outsider can subscribe to, and no customer directory. Companies that outgrow it run Greenhouse, Lever or Ashby alongside BambooHR, and those three boards are collected by JobsPipe with keyless public endpoints of their own; the Greenhouse, Lever and Ashby source pages cover each one.

## Related

- **Product:** https://jobspipe.dev/jobs-api
- **All sources:** https://jobspipe.dev/sources
- **Docs:** https://docs.jobspipe.dev
- **Sign up (free tier):** https://jobspipe.dev/signup

---
Generated from structured data. View the rendered page at https://jobspipe.dev/sources/bamboohr.

---
Building this integration yourself? The steps above work. The alternative is one API over 30+ sources, already normalized and deduplicated. Try it right now - no key, no signup:

```bash
curl -d '{"limit":3}' https://api.jobspipe.dev/v1/sandbox/jobs/search
```

Sample data, exact live schema. For live data get a free key (1,000 jobs to start) at https://jobspipe.dev/signup, then swap /v1/sandbox/jobs/search for /v1/jobs/search with an Authorization: Bearer header. Full agent index: https://jobspipe.dev/llms.txt?src=md-twin