Labour Statistics by Country: Unemployment, Employment, Wages and More (ILOSTAT)
ilostat/indicator-data
Annual and monthly labour market statistics from ILOSTAT, the International Labour Organization's database, for one indicator id and one to five countries: unemployment, employment, wages, working poverty, labour force participation and hundreds more, broken down by sex and age. Look up the indicator id with ilostat/search-indicators first. Filter by sex, age or other classification code, a year range, or ask for only the latest year of each series. Returns one row per country, breakdown and year, with codes (or labels). An unfiltered call can return hundreds of KB, so filter by sex, classification or years. A filter that matches nothing returns an empty list. ILOSTAT data, CC BY 4.0, source: ILO, ILOSTAT; not endorsed by the ILO; served by Eden Engine.
Price
$0.0026 per call
You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $5.
Data source
International Labour Organization (ILO), ILOSTAT
Source: ILO, ILOSTAT (ilostat.ilo.org), licensed CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Passed through unmodified; any adaptation is not endorsed by the ILO. Served by Eden Engine; not an official ILO product.
Use it
Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.
Connect once and your AI can find and run this tool, and any other it needs.
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "ilostat/indicator-data" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "ilostat/indicator-data" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "ilostat/indicator-data", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "ilostat/indicator-data", input: { /* ... */ } })
// 5. settle: the call is charged when it finishes, nothing to doNot connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.
Pricing
Every charge this tool can incur.
| Charge | Price |
|---|---|
Per call | $0.0026 |
- Updated
- Oct 20, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"id",
"ref_area"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[A-Z0-9_]{5,80}$",
"description": "ILOSTAT indicator id with its frequency suffix, uppercase, for example UNE_TUNE_SEX_AGE_NB_A (unemployment by sex and age, annual) or SDG_0852_SEX_AGE_RT_A. Find ids with ilostat/search-indicators."
},
"sex": {
"type": "string",
"pattern": "^SEX_[A-Z]$",
"description": "Sex code to keep: SEX_T total, SEX_M male, SEX_F female. Leave out for all."
},
"labels": {
"enum": [
"label",
"both"
],
"type": "string",
"description": "Leave out for codes only. `label` returns text labels instead of codes, `both` returns codes and labels."
},
"time_to": {
"type": "string",
"pattern": "^[0-9]{4}$",
"description": "Last year to include, four digits, for example 2024."
},
"classif1": {
"type": "string",
"pattern": "^[A-Za-z0-9_.-]{3,60}$",
"description": "First classification code to keep, usually an age band such as AGE_YTHADULT_Y15-24 (youth 15 to 24) or AGE_YTHADULT_YGE15 (15 and over). Leave out for all. ilostat/code-dictionary with var classif1 lists them."
},
"ref_area": {
"type": "string",
"pattern": "^[A-Z0-9]{3}(\\+[A-Z0-9]{3}){0,4}$",
"description": "One to five ISO 3 letter country codes (or ILO area codes such as X01) joined by a plus sign with no spaces, for example FRA or FRA+USA+DEU. ilostat/code-dictionary with var ref_area lists them."
},
"time_from": {
"type": "string",
"pattern": "^[0-9]{4}$",
"description": "First year to include, four digits, for example 2015."
},
"latest_year": {
"type": "boolean",
"description": "True to return only the most recent year available for each country and breakdown. It overrides time_from and time_to."
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"required": [
"results"
],
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"sex": {
"type": "string",
"description": "Sex code."
},
"time": {
"type": "string",
"description": "Year, or period such as 2024M03 for monthly series. A string."
},
"source": {
"type": "string",
"description": "Source code of the underlying survey or record."
},
"classif1": {
"type": "string",
"description": "First classification code (usually age)."
},
"classif2": {
"type": "string",
"description": "Second classification code, when the indicator has one."
},
"ref_area": {
"type": "string",
"description": "Country or area code."
},
"indicator": {
"type": "string",
"description": "Indicator code without the frequency suffix."
},
"obs_value": {
"type": [
"number",
"string",
"null"
],
"description": "The observed value; its unit is in the indicator's title."
},
"obs_status": {
"type": "string",
"description": "Observation status flag, when set."
},
"note_source": {
"type": "string",
"description": "Source note code."
}
},
"additionalProperties": true
},
"description": "Statistic rows, one per country, breakdown and period. With `labels` the code fields are replaced or joined by `<field>.label` fields. Empty when the filters match nothing."
}
},
"additionalProperties": true
}