BambooHR Jobs API.
A developer’s reference. BambooHR is HR-first, ATS-second - the official API is HRIS-shaped and does not document a jobs surface. The only public job-posting surface is the careers widget. Here is what the actual data path looks like and when a unified jobs API saves you weeks of widget reverse- engineering.
On this page
The short answer
BambooHR’s API is real, well-documented, and not what most developers searching for “BambooHR jobs API” are actually looking for. It is an HRIS API - employees, time-off, benefits, payroll-adjacent data - scoped per customer with a customer-issued API key. It is not a jobs API.
The recruiting/ATS module bundled with BambooHR doesn’t ship a developer-facing job-postings endpoint. The only public surface for BambooHR-hosted job openings is an embeddable careers widget. Anyone consuming BambooHR postings programmatically is either reverse-engineering the widget (brittle, ongoing maintenance) or scraping the rendered HTML.
For cross-tenant BambooHR job data - aggregators, sourcing tools, hiring-signal intent products - the practical path is a unified jobs API that handles the widget integration centrally.
HRIS API vs ATS API
BambooHR’s product is built around the HR department: employee records, time-off, benefits, performance, payroll-adjacent data. The applicant- tracking module is part of the same database but the developer surface treats it as part of the HRIS shape. You can read recruiting records through the same API with a per-customer key, but there is no separate multi-tenant Jobs API the way Greenhouse and Lever ship one.
Customers who need a proper recruiting platform typically run Greenhouse, Lever, or Ashby alongside or instead of BambooHR’s recruiting module - those products are built API-first for recruiting workflows, where BambooHR is built API-first for HRIS.
The careers widget is the surface
BambooHR customers running the recruiting module publish job openings through an embeddable careers widget - a small JavaScript bundle they drop into their own marketing site or careers page. The widget fetches postings from an internal JSON endpoint hosted by BambooHR, renders them client-side, and handles application submission.
The internal endpoint is reachable by a JSON fetch rather than HTML scraping (which is cleaner than the Paycom-style HTML rendering). But the endpoint is not documented, the shape changes between BambooHR releases, and field names occasionally rename without notice. Each customer that runs the widget is a separate config to track.
Why widget reverse-engineering breaks
Discovery. BambooHR doesn’t publish a list of customers running the recruiting module. You discover them by inspecting careers pages that load the BambooHR widget. Maintenance of the discovered list is ongoing.
Shape drift. The widget’s JSON endpoint changes between BambooHR releases. Field renames, response-shape adjustments, and host changes all happen without developer notice because the endpoint is technically internal. Expect to maintain the integration indefinitely.
Coverage cap. The widget only exposes jobs the customer has chosen to publish externally. Internal-only postings, draft postings, and stage- gated postings are not visible - same as every public-careers-page surface.
When to use a unified API instead
If you have a BambooHR-customer relationship and need that one customer’s recruiting data including pipeline state - request a per-customer API key and use the HRIS API.
If you need cross-tenant BambooHR job postings - JobsPipe indexes every public BambooHR careers site at scale, tracks the widget’s shape changes on our side, and exposes a stable schema alongside Workday, Greenhouse, Lever, Paycom, Paylocity, and 30+ other sources. Free tier covers 5,000 requests/month.
FAQ
Does BambooHR have a public jobs API?+
No. BambooHR's documented API is HRIS-shaped - employees, time-off, benefits, custom fields, webhooks. It does not expose job postings through a documented public endpoint. The recruiting/ATS module exists in the product but does not have a developer-facing API surface for jobs, and any access still requires a per-customer API key.
What is the actual BambooHR API?+
BambooHR's documentation at documentation.bamboohr.com covers the HRIS surface: employees (records, custom fields, photos), time-off (requests, balances, policies), benefits (enrollment, plans), reports, and webhooks for downstream automation. The applicant-tracking module's data is reachable through the same HRIS API but only with a per-customer API key - it is not a multi-tenant jobs API.
How are BambooHR job postings actually published?+
Through an embeddable careers widget that customers drop into their own marketing site. Under the hood the widget calls an internal JSON endpoint whose shape and host change between BambooHR releases. The widget is the only public surface for BambooHR-hosted postings.
Can I reverse-engineer the BambooHR careers widget?+
Yes, but the underlying JSON URL and field names change without notice. Each customer's widget is a separate config, and ongoing maintenance is required as BambooHR ships updates. For one-off research it is fine; for production aggregation it is brittle.
How does JobsPipe handle BambooHR?+
JobsPipe indexes every public BambooHR careers site, tracks widget shape changes centrally, and exposes the data alongside Workday, Greenhouse, Lever, Paycom, and 30+ other sources in one normalized JSON schema. Free tier covers 5,000 requests/month with no per-customer credentials and no widget-reverse-engineering work on your side.
Is BambooHR an ATS?+
Sort of. BambooHR is primarily an HRIS - the applicant-tracking module is bundled with most plans but it is not Greenhouse or Lever in feature depth. Customers who need a proper ATS often run Greenhouse or Lever alongside or instead of BambooHR's recruiting module. For consuming public job postings from BambooHR customers, the careers widget is the practical surface.
Can JobsPipe pull BambooHR employee or HR data?+
No. JobsPipe is jobs-only. Employee records, time-off balances, benefits enrollment, payroll, performance reviews - none of that is in scope and we don't have access to it. The HRIS API is gated per-customer and not what JobsPipe consumes.
How fresh is BambooHR data on JobsPipe?+
Every public BambooHR career site is re-crawled at least every 24 hours. New postings appear within that window, and removed postings are dropped on the next cycle.
Every public BambooHR careers site, one endpoint. No widget maintenance.
Get a free API key