Overview
Lightcast Global Postings APIs help you access, analyze, and explore job posting data across global labor markets. They allow you to retrieve total postings, posting trends over time, rank demand across dimensions, access individual posting records, and understand how postings are distributed across dimensions, enabling consistent, reliable insights into employer demand worldwide.
Explore the use cases below to understand how the Global Postings API can be applied in real-world scenarios.
Retrieve Total Postings
Tracking job demand across global labor markets requires a reliable way to aggregate posting activity over defined time periods and skill sets. Without a consistent method for filtering and summarizing posting data, it is difficult to measure hiring trends, assess skill demand, or benchmark posting activity across international markets.
This API enables you to retrieve aggregate job posting metrics filtered by date range and specific skills. It returns summarized figures such as unique posting counts and median posting duration, giving you a concise, high-level view of job demand for a defined skill set across global labor markets.
See the Global Postings Totals API reference for full request parameters and response details.
When to Use
- You want to measure total job posting volume for a specific skill over a defined time period
- You are benchmarking posting activity for a skill set across different time windows
- You want a high-level summary of job market activity before conducting deeper analysis
Endpoint
https://api.lightcast.io/global-postings/totalsSample Request
curl --request POST \
--url https://api.lightcast.io/global-postings/totals \
--header 'accept: application/json' \
--header 'authorization: Bearer XXXXX ' \
--header 'content-type: application/json' \
--data '
{
"filter": {
"when": {
"start": "2019-03",
"end": "2019-06"
},
"skills": [
"KS123X777H5WFNXQ6BPM"
]
},
"metrics": [
"unique_postings",
"median_posting_duration"
]
}
'Sample Response
{
"data": {
"totals": {
"median_posting_duration": null,
"unique_postings": 17
}
}
}Posting Trends Over Time
Measuring job demand at a single point in time does not reveal how hiring activity is shifting across global labor markets. Without a time-based view of posting activity, it is difficult to identify emerging trends, seasonal patterns, or periods of significant change in employer demand.
This API enables you to track job posting activity over time by returning monthly unique posting counts across a defined date range. It breaks down posting volume month by month alongside a cumulative total, giving you a structured view of how job demand has evolved across global labor markets.
See the Global Postings Timeseries API reference for full request parameters and response details.
When to Use
- You want to track how job posting volume changes month over month across global labor markets
- You need to identify hiring trends or seasonal patterns within a defined time window
- You want to compare posting activity across different time periods to surface growth or decline in hiring
Endpoint
https://api.lightcast.io/global-postings/timeseriesSample Request
curl --request POST \
--url https://api.lightcast.io/global-postings/timeseries \
--header 'accept: application/json' \
--header 'authorization: Bearer XXXXX' \
--header 'content-type: application/json' \
--data '
{
"filter": {
"when": {
"start": "2019-05",
"end": "2019-06",
"type": "posted"
}
},
"metrics": [
"unique_postings"
]
}
'Sample Response
{
"data": {
"timeseries": {
"month": [
"2019-05",
"2019-06"
],
"unique_postings": [
0,
100
]
},
"totals": {
"unique_postings": 100
}
}
}Rank Postings by Dimensions
Identifying where job demand is concentrated across global labor markets requires the ability to slice posting activity by different dimensions. Without a flexible way to rank postings across dimensions such as company, occupation, or region, it is difficult to surface meaningful patterns or compare hiring activity across different segments of the labor market.
This API enables you to rank job posting activity across any supported dimension by returning a structured list of top results based on unique posting volume. Each result includes posting counts and median posting duration, giving you a consistent and comparable view of where hiring demand is strongest across whichever dimension is most relevant to your analysis.
See the Global Postings Rankings API reference for full request parameters and response details.
When to Use
- You want to rank job posting activity across a specific dimension, such as company, occupation, or region
- You need to identify which segments are driving the most hiring demand over a defined time period
- You are comparing posting volume and duration across different facets to surface labor market patterns
- You want a flexible, reusable way to analyze global job posting activity across multiple dimensions
Endpoint
https://api.lightcast.io/global-postings/rankings/{rankingFacet}Sample Request
curl --request POST \
--url https://api.lightcast.io/global-postings/rankings/anz_sco_1 \
--header 'accept: application/json' \
--header 'authorization: Bearer XXXXX' \
--header 'content-type: application/json' \
--data '
{
"filter": {
"when": {
"start": "2019-03",
"end": "2019-06",
"type": "expired"
}
},
"rank": {
"by": "unique_postings",
"limit": 10,
"extra_metrics": [
"median_posting_duration"
]
}
}
'Sample Response
{
"data": {
"ranking": {
"buckets": [
{
"median_posting_duration": 31,
"name": "2",
"unique_postings": 144622
},
{
"median_posting_duration": 31,
"name": "5",
"unique_postings": 56311
},
{
"median_posting_duration": 31,
"name": "1",
"unique_postings": 53979
},
{
"median_posting_duration": 31,
"name": "3",
"unique_postings": 42213
},
{
"median_posting_duration": 31,
"name": "6",
"unique_postings": 32078
},
{
"median_posting_duration": 31,
"name": "4",
"unique_postings": 23835
},
{
"median_posting_duration": 31,
"name": "8",
"unique_postings": 23529
},
{
"median_posting_duration": 31,
"name": "7",
"unique_postings": 15945
}
],
"facet": "anz_sco_1",
"limit": 10,
"rank_by": "unique_postings"
},
"totals": {
"median_posting_duration": 26,
"unique_postings": 26412385
}
}
}Retrieve Individual Job Postings
Analyzing labor market demand often requires access to the underlying posting records, not just aggregated summaries. Without a way to retrieve and filter individual job postings, it is difficult to review posting content, validate classification data, or build workflows that depend on the details of specific roles across global labor markets.
This API enables you to retrieve individual job posting records filtered by date range and activity status. It returns paginated results with selected fields such as job title, company name, city, posting and expiration dates, and relevance score, giving you direct access to the underlying posting data across global labor markets.
See the Global Postings API reference for full request parameters and response details.
When to Use
- You want to retrieve and review individual job posting records across global labor markets
- You need to access raw posting content to validate classification or enrichment data
- You are building a workflow or application that depends on the details of specific job postings
Endpoint
https://api.lightcast.io/global-postings/postingsSample Request
curl --request POST \
--url https://api.lightcast.io/global-postings/postings \
--header 'accept: application/json' \
--header 'authorization: Bearer XXXXX' \
--header 'content-type: application/json' \
--data '
{
"filter": {
"when": {
"start": "2019-01",
"end": "2020-04",
"type": "active"
}
},
"fields": [
"id",
"posted",
"expired",
"body",
"city_name",
"company_name",
"title_raw",
"score"
],
"order": [
"score"
],
"limit": 2
}
'Sample Response
{
"data": {
"limit": 2,
"page": 1,
"pages_available": 5,
"postings": [
{
"body": "<!--id: 2d84d38afa26df51799f1963125fa4-->Workplace Engineer (m/w/d)",
"city_name": "[Unknown City], ",
"company_name": "Tennet Tso Gmbh",
"expired": null,
"id": "2d84d38afa26df51799f1963125fa4",
"posted": "2024-07-12",
"score": 1,
"title_raw": "Workplace Engineer (m/w/d)"
},
{
"body": "<!--id: 466189d1440003b478a508a067a0e5-->Order to Invoice Specialist (OTI) with Polish & English (Warsaw)",
"city_name": "Warsaw, Warszawa",
"company_name": "Diebold Nixdorf",
"expired": null,
"id": "466189d1440003b478a508a067a0e5",
"posted": "2024-07-30",
"score": 1,
"title_raw": "Order to Invoice Specialist (OTI) with Polish & English (Warsaw)"
}
],
"unique_postings": 6795,
"viewable_postings": 6795
}
}Posting Distributions by Dimensions
Understanding how job postings are spread across experience requirements requires more than aggregate counts. Without a structured view of how postings are distributed across maximum years of experience thresholds, it is difficult to assess where employer demand is concentrated, identify experience gaps, or compare posting density across experience levels in global labor markets.
This API enables you to analyze how job postings are distributed across experience requirement ranges by returning data broken down into histogram buckets. Each bucket represents a percentile range and includes unique and duplicate posting counts, giving you a clear picture of where posting volume is concentrated across experience thresholds in global labor markets.
See the Global Postings Distributions API reference for full request parameters and response details.
When to Use
- You want to understand how job postings are distributed across maximum years of experience requirements in global labor markets
- You need to identify which experience thresholds have the highest or lowest posting density
- You are analyzing employer demand patterns across experience levels for workforce planning or talent strategy
Endpoints
https://api.lightcast.io/global-postings/distributions/{distributionFacet}Sample Request
curl --request POST \
--url https://api.lightcast.io/global-postings/distributions/max_years_experience \
--header 'accept: application/json' \
--header 'authorization: Bearer XXXXX' \
--header 'content-type: application/json' \
--data '
{
"distribution": {
"type": "histogram"
}
}
'Sample Response
{
"data": {
"distribution": {
"buckets": [
{
"duplicate_postings": 422706,
"key": 25,
"unique_postings": 126445,
"value": 38178
},
{
"duplicate_postings": 868120,
"key": 50,
"unique_postings": 257335,
"value": 52000
},
{
"duplicate_postings": 1231723,
"key": 75,
"unique_postings": 381181,
"value": 90000
}
],
"domain": {
"max": 500000,
"min": 24980
},
"facet": "salary",
"interval": null,
"type": "percentile"
},
"totals": {
"duplicate_postings": 3874932,
"unique_postings": 1445428
}
}
}
