Labor Market (Snapshot)
curl --request GET \
--url https://api.financialdatasets.ai/macro/labor/snapshot \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.financialdatasets.ai/macro/labor/snapshot"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.financialdatasets.ai/macro/labor/snapshot', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.financialdatasets.ai/macro/labor/snapshot",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.financialdatasets.ai/macro/labor/snapshot"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.financialdatasets.ai/macro/labor/snapshot")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.financialdatasets.ai/macro/labor/snapshot")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"labor": [
{
"series": "<string>",
"date": "<string>",
"value": 123,
"change_prior": 123,
"change_year": 123,
"change_year_pct": 123
}
]
}{
"error": "Bad Request",
"message": "Invalid request parameters"
}{
"error": "Unauthorized",
"message": "Invalid API key provided"
}{
"error": "Payment Required",
"message": "This endpoint requires a paid subscription. Please upgrade your plan."
}{
"error": "Not Found",
"message": "Ticker XXXX not found"
}Labor Market
Snapshot
Get the latest print of every US labor market series: nonfarm payrolls, the unemployment rate, participation, hourly earnings, job openings, hires, quits, and weekly jobless claims, with the change from the prior period and from a year earlier.
GET
/
macro
/
labor
/
snapshot
Labor Market (Snapshot)
curl --request GET \
--url https://api.financialdatasets.ai/macro/labor/snapshot \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.financialdatasets.ai/macro/labor/snapshot"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.financialdatasets.ai/macro/labor/snapshot', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.financialdatasets.ai/macro/labor/snapshot",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.financialdatasets.ai/macro/labor/snapshot"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.financialdatasets.ai/macro/labor/snapshot")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.financialdatasets.ai/macro/labor/snapshot")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"labor": [
{
"series": "<string>",
"date": "<string>",
"value": 123,
"change_prior": 123,
"change_year": 123,
"change_year_pct": 123
}
]
}{
"error": "Bad Request",
"message": "Invalid request parameters"
}{
"error": "Unauthorized",
"message": "Invalid API key provided"
}{
"error": "Payment Required",
"message": "This endpoint requires a paid subscription. Please upgrade your plan."
}{
"error": "Not Found",
"message": "Ticker XXXX not found"
}Overview
The Labor Market Snapshot API returns the most recent print of every labor market series we track: the jobs report (nonfarm payrolls, the unemployment rate, participation, hourly earnings), JOLTS job openings, hires, and quits, and weekly jobless claims. That is 24 rows, each with the change from the prior period and from a year earlier computed for you. Monthly series show their latest month and weekly series their latest week. Passseries to get one row.
We source the data directly from authoritative government sources. The snapshot refreshes the morning each monthly or weekly figure is published.
To get started, please create an account and grab your API key at financialdatasets.ai.
You will use the API key to authenticate your API requests.
Coverage
| History | Series | Updated |
|---|---|---|
| Latest period | 24 | Monthly and weekly |
Series
Monthly:payrolls, unemployment_rate, unemployment_rate_u6, participation_rate, hourly_earnings, job_openings, hires, quits. Weekly: initial_claims, initial_claims_4_week, continued_claims, continued_claims_4_week, insured_unemployment_rate. Each is seasonally adjusted (_sa) and, except the 4-week averages, not seasonally adjusted (_nsa). The full list is one free GET request away:
https://api.financialdatasets.ai/macro/labor/series/
Reading the fields
dateis the reference period, not the release date: the first day of the month for monthly series, the week-ending Saturday for weekly series.valueis the published figure in the series’ units (thousands of persons, percent, dollars per hour, persons).change_priorandchange_yeararevalueminus the prior period’s value and minus the value one year earlier, in the same units.change_year_pctis the year change as a percent, rounded to one decimal;nullfor series measured in percent, whose change is stated in points.- A change is
nullwhen the comparison period was not published. The newest week of a weekly series is the advance figure, replaced by the final figure when published.
Getting Started
There are only 2 steps for making a successful API call:- Add your API key to the header of the request as
X-API-KEY. - Execute the API request. Add
seriesto get one series instead of all 24.
Example
Labor Market Snapshot
import requests
# add your API key to the headers
headers = {
"X-API-KEY": "your_api_key_here"
}
# create the URL
url = 'https://api.financialdatasets.ai/macro/labor/snapshot'
# make API request
response = requests.get(url, headers=headers)
# parse the latest prints from the response
labor = response.json().get('labor')
Example Response
{
"labor": [
{
"series": "payrolls_sa",
"date": "2026-08-01",
"value": 159075,
"change_prior": 162,
"change_year": 603,
"change_year_pct": 0.4
},
{
"series": "initial_claims_sa",
"date": "2026-09-19",
"value": 197000,
"change_prior": -1000,
"change_year": -22000,
"change_year_pct": -10.0
}
]
}