Labour Productivity
GDP per hour worked is a measure of labour productivity. It measures how efficiently labour input is combined with other factors of production and used in the production process. Labour input is defined as total hours worked of all persons engaged in production. Labour productivity only partially reflects the productivity of labour in terms of the personal capacities of workers or the intensity of their effort.
The ratio between the output measure and the labour input depends to a large degree on the presence and/or use of other inputs (e.g. capital, intermediate inputs, technical, organisational and efficiency change, economies of scale).
The level is reported in US dollars per hour worked at constant prices (currently referenced to 2020), converted with Purchasing Power Parities (PPPs) so that it is comparable across countries, for the total economy and on an annual basis. It is a level rather than an index, so a value of 61.36 means 61.36 PPP-converted US dollars of GDP produced per hour worked.
The level is the OECD’s own figure (the source’s calculation).
The formula is as follows:
\[\text{Labour Productivity} = \text{Real GDP} (\text{constant prices},\; \text{PPP-converted US dollars}) / \text{Total Hours Worked by all persons engaged in production}\]See definition: https://data.oecd.org/lprdty/gdp-per-hour-worked.htm
Also known as: labor productivity, output per worker.
Labour Productivity in Python or via the MCP
Install the Finance Toolkit with:
pip install financetoolkit -U
Then call get_labour_productivity as shown below.
from financetoolkit import Economics
economics = Economics(end_date="2025-12-31")
economics.get_labour_productivity(countries=['Bulgaria', 'Croatia', 'Spain'])
Or, after setting up the Finance Toolkit MCP, ask:
How much GDP per hour worked did Bulgaria, Croatia and Spain produce from 2016 to 2025?
Which returns:
| Bulgaria | Croatia | Spain | |
|---|---|---|---|
| 2016 | 28.0515 | 37.5651 | 60.3429 |
| 2017 | 28.3199 | 37.9134 | 60.7889 |
| 2018 | 28.9871 | 38.9686 | 60.7456 |
| 2019 | 30.5046 | 39.5761 | 60.8858 |
| 2020 | 30.7971 | 37.1191 | 60.9134 |
| 2021 | 32.9483 | 41.2317 | 60.6022 |
| 2022 | 33.9708 | 43.6926 | 61.3551 |
| 2023 | 33.3439 | 44.313 | 61.2281 |
| 2024 | 34.8229 | 43.9879 | 61.9601 |
| 2025 | nan | 45.0352 | 62.42 |
Parameters
get_labour_productivity accepts the following parameters.
| Parameter | Type | Description | Example |
|---|---|---|---|
countries | list[str] | str | None | The countries to include in the data. Defaults to None. | ["United States", "Germany"] |
rolling | int | The rolling window size to use for smoothing the data (simple moving average). Defaults to None. | 4 |
trailing | int | The trailing window size to use for summing the data over trailing periods (e.g. a trailing-4-quarter sum). Defaults to None. | 4 |
growth | bool | Whether to return the growth data or the actual data. Defaults to False. | True |
lag | int | The number of periods to lag the data by. Defaults to 1. | 4 |
standardize | bool | Whether to standardize (Z-Score) the result. When combined with growth=True, standardizes the growth values instead of the raw values. Defaults to False. | True |
rounding | int | None | The number of decimals to round the results to. Defaults to None. | 2 |