v1
latestOpenAPI 3.1.02026-07-26294215839.4 KBGet Data from Dataset (v1)
Deprecated. Use "Get Data from Dataset (v2)" instead.
Retrieves records from the specified dataset using the fields, filters, sorting, grouping, and aggregations supplied in the request body. Provide field names in the fields array; use "Get Fields from Dataset (v1.2)" to discover available names. The response contains paginated rows under data, an aggregations array (empty when none requested), and a pagination block with page navigation links. Results default to page 1 with 500 records per page (maximum 1000).
Use "Get Field Options (v1.2)" to retrieve valid filter values. Filter fields do not need to appear in the fields list. Future hires have a status of Inactive; include it in your status filter to retrieve them. For options-type fields using includes/does_not_include, pass the filter value as an array enclosed in square brackets, for example ["Full-Time", "Part-Time"].
When any requested fields are historical table fields, pass their entity names in showHistory; entity names are returned by "Get Fields from Dataset (v1.2)". Grouping (groupBy) currently supports only one field; when active, data becomes an object keyed by group value instead of an array. Sort priority follows the order of objects in sortBy. Aggregations accept a defaultAggregation applied to every field and/or per-field overridingAggregations.
Aggregations by field type: text: count; date: count, min, max; int: count, min, max, sum, avg; bool: count; options: count; govIdText: count.
Filter operators by field type: text: contains, does_not_contain, equal, not_equal, empty, not_empty; date: lt, lte, gt, gte (each accepts a YYYY-MM-DD date string or a relative object {"duration": "N", "unit": "days|weeks|months|years"} where duration is a number as a string — lt/lte are measured backward from today, gt/gte forward), equal, not_equal, empty, not_empty, last, next (relative object {"duration": "N", "unit": "days|weeks|months|years"}), range (object {"start": "YYYY-MM-DD", "end": "YYYY-MM-DD"}); int: equal, not_equal, gte, gt, lte, lt, empty, not_empty; bool: checked, not_checked; options: includes, does_not_include, empty, not_empty; govIdText: empty, not_empty.
OAuth Scopes: report
Path parameters
The machine-readable name of the dataset to query. Use "List Datasets (v1.2)" to discover available names.
Query parameters
The page number to retrieve. Defaults to 1.
The number of records to retrieve per page. Defaults to 500. Maximum is 1000.
Request body
Example request
{
"fields": [
"lastNameFirstName",
"firstName",
"employeeNumber",
"hireDate",
"ssn"
],
"aggregations": {
"defaultAggregation": "count",
"overridingAggregations": [
{
"hireDate": "count"
}
]
},
"sortBy": [
{
"field": "hireDate",
"sort": "desc",
"aggregationType": "count"
}
],
"filters": {
"match": "all",
"filters": [
{
"field": "firstName",
"operator": "equal",
"value": "Pudgy"
},
{
"field": "employee_state",
"operator": "includes",
"value": [
"CA",
"FL"
]
},
{
"field": "hireDate",
"operator": "gte",
"value": {
"duration": "5",
"unit": "years"
}
}
]
},
"groupBy": [
"hireDate"
],
"showHistory": [
"education"
]
}Response
Returns an object with data (array of record objects, or an object keyed by group value when groupBy is used), aggregations (array, empty when none requested), and pagination.
Example response
{
"data": [
{
"lastNameFirstName": "Panda, Pudgy",
"firstName": "Pudgy",
"employeeNumber": "123",
"middleName": "null",
"ssn": "123-45-6478"
}
],
"pagination": {
"next_page": "https://{companyDomain}.bamboohr.com/api/v1/{endpointPath}?page=3&page_size=1",
"prev_page": "https://{companyDomain}.bamboohr.com/api/v1/{endpointPath}?page=1&page_size=1"
}
}