Onespaworld Holdings (OSW) Operating Income (2018 - 2026)
Onespaworld Holdings (OSW) posted Operating Income of $24.51 million for Q2 2026, up 10.8% from $22.13 million a year earlier and up 7.2% from the prior quarter.
Onespaworld Holdings (OSW) Operating Income (2018 - 2026) Analysis & Trends
For the trailing twelve months through Jun 30, 2026, Operating Income at Onespaworld Holdings was $90.05 million, up 10.9% year-over-year; for FY2025, it was $81.64 million, up 4.6% from FY2024.
- Annual Operating Income has increased for three consecutive years.
- In prior years, Onespaworld Holdings' Operating Income was $78.06 million in FY2024 (+44.1%), $54.17 million in FY2023 (+257.9%), $15.14 million in FY2022 and -$52.06 million in FY2021.
- Quarterly Operating Income has run from a low of -$12.16 million in Q3 2021 to a high of $26.3 million in Q3 2025 over five years.
- On a year-over-year basis, Operating Income increased in six of the last eight quarters, with growth averaging 18.4%.
- The strongest year-over-year quarter for Operating Income in the past five years was Q3 2023, with growth of 72.5%; the weakest was Q4 2025, with a decline of 5.0%.
- According to Business Quant data, Operating Income for the three prior quarters was $22.87 million (Q1 2026), $16.37 million (Q4 2025) and $26.3 million (Q3 2025).
Peer Comparison
| # | Company | Market Cap | Enterprise Value | Gross Profit (Qtr) | Op. Inc (Qtr) |
|---|---|---|---|---|---|
| 1 | Service Corp International | 11.15 Bn | 10.15 Bn | 273.50 Mn | 231.59 Mn |
| 2 | New Oriental Education & Technology | 9.53 Bn | -1.61 Bn | 5,600.00 | 85.80 Mn |
| 3 | TAL Education | 7.16 Bn | -5.83 Bn | 438.20 Mn | 137.20 Mn |
| 4 | Laureate Education | 5.43 Bn | 4.73 Bn | 237.67 Mn | 223.42 Mn |
| 5 | Graham Holdings | 5.11 Bn | 202.28 Mn | 392.03 Mn | 83.63 Mn |
| 6 | Covista | 4.47 Bn | 3.59 Bn | 284.63 Mn | 95.44 Mn |
| 7 | Valvoline | 4.04 Bn | 3.75 Bn | 214.90 Mn | 112.20 Mn |
| 8 | Bright Horizons Family Solutions | 3.63 Bn | 3.07 Bn | 188.96 Mn | 79.82 Mn |
| 9 | Stride | 3.55 Bn | 446.85 Mn | 217.28 Mn | 105.85 Mn |
| 10 | Onespaworld Holdings | 2.43 Bn | 2.33 Bn | 44.57 Mn | 24.51 Mn |
Historic Data
| Date | Value |
|---|---|
| Jun 30, 2026 | 24.51 Mn |
| Mar 31, 2026 | 22.87 Mn |
| Dec 31, 2025 | 16.37 Mn |
| Sep 30, 2025 | 26.30 Mn |
| Jun 30, 2025 | 22.13 Mn |
| Mar 31, 2025 | 16.84 Mn |
| Dec 31, 2024 | 17.23 Mn |
| Sep 30, 2024 | 25.01 Mn |
| Jun 30, 2024 | 18.84 Mn |
| Mar 31, 2024 | 16.98 Mn |
| Dec 31, 2023 | 12.62 Mn |
| Sep 30, 2023 | 16.95 Mn |
| Jun 30, 2023 | 13.44 Mn |
| Mar 31, 2023 | 11.17 Mn |
| Dec 31, 2022 | 10.71 Mn |
| Sep 30, 2022 | 9.83 Mn |
| Jun 30, 2022 | 1.02 Mn |
| Mar 31, 2022 | -6.42 Mn |
| Dec 31, 2021 | -4.04 Mn |
| Sep 30, 2021 | -12.16 Mn |
Onespaworld Holdings Operating Income API
Pull this series into your own models, spreadsheets and apps with the Business Quant
Historical Metrics API. The request below matches the chart above — change the
frequency, period or values and it follows. Swap YOUR_API_KEY for your own key.
https://data.businessquant.com/historic?slug=operating-income&ticker=OSW&period=max&api_key=YOUR_API_KEY
import requests
url = "https://data.businessquant.com/historic"
params = {"slug": "operating-income", "ticker": "OSW", "period": "max", "api_key": "YOUR_API_KEY"}
data = requests.get(url, params=params).json()
const res = await fetch("https://data.businessquant.com/historic?slug=operating-income&ticker=OSW&period=max&api_key=YOUR_API_KEY");
const data = await res.json();