Beta

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
Payment Terms
Payment Methods
Viewers
General Ledger Transactions
Async Tasks
Employees
Bank Feed Transactions
Bank Feed Accounts
Job Postings
Scopes
Field Mappings

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.

No items found.

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.

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

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