Integrate BambooHR with your product—along with any other
ATS
HR & payroll
 application

Connect your product to all the applications your customers use via Merge's Unified API to close more deals, retain customers, and expand to new markets

Get a demo

Sync BambooHR data

Applications

The Application Object is used to represent a candidate's journey through a particular Job's recruiting process. If a Candidate applies for multiple Jobs, there will be a separate Application for each Job if the third-party integration allows it.

No items found.

Attachments

The Attachment object is used to represent a file attached to a candidate.

No items found.

Candidates

The Candidate object is used to represent profile information about a given Candidate. Because it is specific to a Candidate, this information stays constant across applications.

No items found.

Departments

The Department object is used to represent a department within a company.

No items found.

Jobs

The Job object can be used to track any jobs that are currently or will be open/closed for applications.

No items found.

Job Interview Stages

The JobInterviewStage object is used to represent a particular recruiting stage for an Application. A given Application typically has the JobInterviewStage object represented in the current_stage field.

No items found.

Offices

The Office object is used to represent an office within a company. A given Job has the Office ID in its offices field.

No items found.

Users

The RemoteUser object is used to represent a user with a login to the ATS system.

No items found.

Screening Questions

The ScreeningQuestion object is used to represent questions asked to screen candidates for a job.

No items found.

Benefits

The Benefit object is used to represent a benefit that an employee has enrolled in.

Get
Post
Patch
Put

Dependents

The Dependent object is used to represent a dependent (e.g. child, spouse, domestic partner, etc) of an Employee

No items found.

Employees

The Employee object is used to represent any person who has been employed by a company. By default, it returns all employees. To filter for only active employees, set the employment_status query parameter to ACTIVE.

No items found.

Employments

The Employment object is used to represent a job position at a company. If an integration supports historical tracking of employments, it will be reflected in the data. If not, a new Employment object will be created whenever there is a change in job title or pay. The effective_date field should be used to order Employment objects, with the most recent date corresponding to the latest employment record for an employee.

No items found.

Groups

The Group object is used to represent any subset of employees across, for example, DEPARTMENT or TEAM. Employees can be in multiple Groups.

No items found.

Locations

The Location object is used to represent an address that can be associated with an employee.

No items found.

Teams

The Team object is used to represent a subdivision of the company, usually a department. Each employee will be grouped into one specific Team.

No items found.

Time Off

The TimeOff object is used to represent all employees' Time Off entries.

No items found.

Time Off Balances

The TimeOffBalance object is used to represent current balances for an employee's Time Off plan.

No items found.

Timesheet Entries

The Timesheet Entry object is used to track coverage for hours worked by an 'Employee'.

No items found.

FAQ on integrating with BambooHR API

What BambooHR endpoints does Merge interact with?

Merge interacts with several BambooHR endpoints, including Employee Data, Employment Information, Groups, and more, to pull and sync relevant data. You can also leverage Merge’s Authenticated Passthrough Request feature for endpoints that fall outside of Merge’s scope.

Learn more about the endpoints Merge supports.

How often does Merge sync data with BambooHR?

Merge can sync BambooHR data at various intervals, depending on your plan and the Common Model you’re interested in. That said, Merge typically supports hourly to daily syncs for BambooHR.

If you need to sync data outside of these schedules, you can trigger immediate syncs using the Force Resync endpoint, or set up webhooks for real-time updates.

Learn more about Merge’s sync frequencies for BambooHR.

What customers use Merge’s BambooHR integration?

Countless customers use the integration. This includes Ramp, 15Five, BILL, Bonusly, and Electric.

You can learn about how they use Merge’s BambooHR integration—and several other HRIS integrations—by visiting this page

Can I map custom BambooHR fields?

Yes, with Merge's Field Mapping feature you can map custom BambooHR fields to Merge's Common Models, ensuring flexible data syncs between customers' instances of BambooHR and your product​​.

Can I retrieve raw BambooHR data?

Yes, Merge allows you to access raw data through the Remote Data feature, which retrieves data from BambooHR in its original format as provided by the API​​.

Is Merge Single-Tenant or Multi-Tenant?

Merge offers both Multi-Tenant and Single-Tenant environments. The Multi-Tenant option is the default for most customers and is hosted on AWS servers, while the Single-Tenant environment is available for purchase as part of the Enterprise plan. Single-tenant environments offer dedicated infrastructure for additional security and customization​​.

How much does it cost to integrate with BambooHR using Merge?

It depends on the pricing plan you choose. Merge offers a Launch Plan, which is free for the first 3 production-linked accounts. If you need more, the cost is $650/month for up to 10 linked accounts, and $65 per account after that. Larger-scale users can explore the Professional or Enterprise plans, which offer additional features and support. 

For more details, visit Merge's pricing page.

Is BambooHR a Merge customer?

Yes, Merge works with BambooHR and many other enterprise companies, including Remote, Ramp, Korn Ferry, Handshake, Brex, and Drata.

How can I use a BambooHR integration?

The use cases largely depend on the product you offer. That said, it can help you auto-provision users in your product; streamline gifting workflows; analyze employee compensation; assign trainings to employees on time, and more.

Learn more about how you can use the BambooHR integration here.

Are there any days you’ll be closed for the holidays in 2024?

Trusted to power integrations at

Logotype of HandshakeLogotype of RampLogotype of BrexLogotype of NavanLogotype of TaxBit
Logotype of HandshakeLogotype of RampLogotype of BrexLogotype of NavanLogotype of TaxBit
Logotype of HandshakeLogotype of RampLogotype of BrexLogotype of NavanLogotype of TaxBit
Logotype of HandshakeLogotype of RampLogotype of BrexLogotype of NavanLogotype of TaxBit

Make integrations your competitive advantage

More sales, less code, fewer headaches

Focus on your core product

Stop diverting your engineers to yet another integration and let them get back to work.

Give customer success a break

Manage your simplified integration issues in a single pane. No therapist required.

Stop losing sales due to integrations

Launch integrations in days, not quarters. Your sales team will thank you.

Seamless account linking

Integration authentication that feels like magic

Merge seamlessly manages authentication and authorization on behalf of your customers.
Offer account linking and permission controls to your users with Link for a customizable frontend or with Magic Link for URL-based authorization

View Docs
APIs made simple

The toolkit for all your integration needs

We make integrations painless with accessible API design, dead-simple SDKs, and beautiful documentation that we agonize over.

View Docs
Get Employee Data
1from merge import Merge
2
3client = Merge(
4    account_token="YOUR_ACCOUNT_TOKEN",
5    api_key="YOUR_API_KEY",
6)
7client.hris.employees.list()
import { MergeClient, Merge } from '@mergeapi/merge-node-client';
const merge = new MergeClient({
  apiKey: 'YOUR_API_KEY',
  accountToken: 'YOUR_ACCOUNT_TOKEN',
});
employee = await merge.hris.employees.list()
ApiClient.instance.authentications.tokenAuth = {
  type: 'bearer',
  accessToken: 'API_KEY',
};
new EmployeesApi().employeesList('ACCOUNT_TOKEN', {}, (data) => {
  console.log(data);
});
import (
  "context"
  "fmt"
  merge "github.com/fern-api/merge-go"
  mergeclient "github.com/fern-api/merge-go/client"
  "github.com/fern-api/merge-go/hris"
)

client := mergeclient.NewClient(
  mergeclient.ClientWithAuthApiKey("<YOUR_API_KEY>"),
1ApiClient client = Configuration.getDefaultApiClient();
2client.setBasePath('https://api.merge.dev/api/ats/v1');
3ApiKeyAuth tokenAuth = client.getAuthentication('tokenAuth');
4tokenAuth.setApiKey('API_KEY');
5CandidatesApi apiInstance = new CandidatesApi(client);
6apiInstance.candidatesList('ACCOUNT_TOKEN');
import com.merge.api.MergeApiClient;
import com.merge.api.resources.hris.employees.requests.EmployeesRetrieveRequest;
import com.merge.api.resources.hris.types.Employee;
MergeApiClient mergeClient = MergeApiClient.builder()
    .accountToken("ACCOUNT_TOKEN")
    .apiKey("API_KEY")
    .build();
Employee employee = mergeClient.hris().employees().list(
    EmployeesRetrieveRequest.builder()
        .includeRemoteData(true)

> {  

"id": "0958cbc6-6040-430a-848e-aafacbadf4ae",
"remote_id": "19202938",
"employee_number": "2",
"company": "8d9fd929-436c-4fd4-a48b-0c61f68d6178",
"first_name": "Dirna",
"last_name": "Emanuel",
"display_full_name": "Dirna Emanuel",
    "username": "dirnaemanuel",
    "groups": [

Meta endpoint

Programmatically access required schemas

Third-party providers require specific (and often different) fields to write data to their APIs, making your code a mess.

Dynamically fetch required data schemas from Merge’s /meta endpoint to make POST or PATCH requests that just work.

View Docs
Beyond building

Rely on the best integration observability system

Let our logs, issue detection, and automated alerts save your customer success team time, money, and headaches.

Forget maintenance - let your developers focus on building!

Start for free

Case study

How Drata increases customer value and spends 80% less time managing integrations

View case study

​​Working with Merge’s Unified API and beautiful React component took less than a sprint to integrate, test, and release.

Daniel Marashlian
Co-Founder & CTO, Drata
Integrate once

Supported ATS platforms

Supported HRIS platforms

Abstract away API complexity with Merge
7shifts
ADP DECIDIUM
ADP Next Gen
ADP RUN
ADP Workforce Now
AllianceHCM
Altera Payroll
ApplicantStack
Ashby
Avature
Breathe
Breezy
Bullhorn
CATS
Cezanne HR
Charlie
ChartHop
ClayHR
Clockwork
Comeet
CoolCare
Cornerstone TalentLink
Crelate
CyberArk
Darwinbox
Dayforce
Deel
Easycruit
Employment Hero
EngageATS
Eploy
Factorial
Flatchr
Folks HR
Fountain
Freshteam
Gem
Google Workspace
Greenhouse
Greenhouse Job Board API
Gusto
HR Cloud
HR Partner
HRWorks
Hailey HR
Harbour ATS
Hibob
Homerun
Humaans
Humi
IRIS Cascade
ISolved
Infinite BrassRing
Insperity Premier
IntelliHR
JazzHR
JobAdder
JobDiva
JobScore
Jobsoid
Jobvite
Join
JumpCloud
Justworks
Kallidus
Keka
Kenjo
Lano
Lattice HRIS
Leapsome
Lever
Lucca
Manatal
Microsoft Entra ID
Namely
Nmbrs
Occupop
Officient
Okta
OneLogin
Onlyfy
Oracle Cloud Human Capital Management (HCM)
Oracle Fusion - Recruiting Cloud
Oracle Taleo
OysterHR
PayCaptain
PayFit
Paychex
Paycom
Paycor
Paylocity
PeopleHR
Personio
Personio Recruiting
PingOne
Pinpoint
Planday
Polymer
Proliant
Recruiterflow

Read more about building and maintaining multiple integrations

A guide to maintaining your product integrations

Blog

A guide to integrating multiple APIs

Blog

The top challenges of normalizing multiple API integrations

Blog

Make integrations your competitive advantage

Stay in touch to learn how Merge can unlock hundreds of integrations in days, not years

Get a demo