Introduction
The Talent Benchmark API is a RESTful service that provides access to key indicators used to benchmark talent across locations in the United States. It delivers insights into supply, demand, diversity, and compensation for any job title and city, helping organizations evaluate and compare labor market dynamics.
This API aggregates data from several Lightcast datasets, including US Job Postings, US Profiles, and US Diversity, as well as Lightcast’s Compensation Model. Together, these sources provide a comprehensive view of the labor market, supporting data-driven benchmarking and workforce analysis.
Note: By default, all clients are allowed a maximum of** 5 requests per second.** Contact us if you require higher limits.
API Endpoint
There are multiple endpoints within this category. Refer to individual API docs under the Talent Benchmark section.
Request Headers
(*) Indicates the action is required
All requests must include the following headers:
| Header Key | Value | Description |
|---|---|---|
| *Authorization | Bearer <ACCESS_TOKEN> | This is the token obtained from the Authentication API. Include it in this header to authorize the request. (Required for all authenticated requests) |
| Content-Type | application/json | Required for endpoints that accept a request body. Specifies that the body is in JSON format. |
Authentication
All endpoints in this category require an OAuth 2.0 Bearer Token for authentication. Tokens are granted through Lightcast’s Authentication API and are valid for 1 hour.
To access the Talent Benchmark API, the token must include the following scope:
benchmark(for expanded access)
Sample Request
curl --request POST \
--url https://auth.emsicloud.com/connect/token \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data 'client_id=<CLIENT_ID>' \
--data 'client_secret=<CLIENT_SECRET>' \
--data grant_type=client_credentials \
--data scope=benchmarkRequest Parameters
| Parameter | Type | Description |
|---|---|---|
| client_id | string | The client ID provided by Lightcast. |
| client_secret | string | The client secret associated with your client ID. |
| grant_type | string | Must be set to client_credentials. |
| scope | string | Use benchmark based on your access. |
Sample Response
{
"access_token": "<ACCESS_TOKEN>",
"expires_in": 3600,
"token_type": "Bearer"
}Note that the Tokens expire after 3600 seconds. To maintain uninterrupted access, refresh the token before it expires. To know more about this, refer to the Authentication guide.
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| access_token | string | The token used to authorize the API requests. |
| expires_in | integer | Number of seconds before the token expires. |
| token_type | string | Indicates the type of token. (Always Bearer) |
Methodology
Inputs are normalized to their respective taxonomies:
- Titles→ normalized to SOC codes and skills
- Cities→ normalized to MSAs; if an MSA is not available, the corresponding county is used
Note: Diversity data does not include skills and therefore cannot be filtered by them. See the diversity endpoint for more information.
Advanced Filtering
For more granular benchmarking, the API supports an advanced filtering option. This allows direct filtering using your own occupation, skill, or location identifiers.
Unlike standard parameters, advanced filter values are not normalized by the API and are applied exactly as provided.
Note that,
- The
advancedfilter cannot be used together withtitleorcityfilters.- When using the
advancedfilter,searchParams.areain the response will return a list of area objects instead of a single object.- Metrics such as
supplyRating,demandRating, andwageRatingare not returned for advanced filters, as these require an MSA for calculation.- To access advanced filtering, please contact your Lightcast representative.
Version information for advanced filters is available through the [/meta](https://docs.lightcast.dev/apis/talent-benchmark#meta) endpoint.
Advanced Filtering Details
Sample Request
{
"advanced": {
"occupations": [
"15-1252"
],
"skills": [
"KS125716TLTGH6SDHJD1",
"KS1219W70LY1GXZDSKW5"
],
"counties": [
"16001",
"16003"
]
}
}Request Parameters
| Property | Type | Description |
|---|---|---|
| advanced | object | Add advanced filters for benchmark metrics |
| advanced.occupations | array (strings) | List of 5-digit SOC codes to filter |
| advanced.skills | array (strings) | List of skill IDs to filter |
| advanced.counties | array (strings) | List of county FIPS codes to filter |
Status Code Summary
| Code | Meaning | Description |
|---|---|---|
| 200 | OK | Request was successful. |
| 400 | Bad Request | The request was unacceptable, often due to missing a required parameter. |
| 401 | Unauthorized | Authentication error. |
| 404 | Not Found | Resource not found. |
