Skip to content

ECOLAB INC.: filings

Every ECOLAB INC. annual and quarterly report in the SEC record with the published financial measures it tagged, 69 filings, each linked to its SEC index.

Filings with published measures

Each page shows what one filing reported, as tagged in that filing, with the periods it covered. Later filings can restate a value; the company overview shows the latest-filed value per period.

FormFiledFiscal periodMeasuresFactsSEC accession
10-Q2026-08-06fiscal Q2 2026491320001628280-26-053886
10-Q2026-05-07fiscal Q1 202648980001104659-26-056737
10-K2026-02-23fiscal FY 2025561450001104659-26-018357
10-Q2025-10-30fiscal Q3 2025481300001104659-25-104386
10-Q2025-08-07fiscal Q2 2025481300001558370-25-010768
10-Q2025-05-08fiscal Q1 202548980001558370-25-006969
10-K2025-02-21fiscal FY 2024552220001558370-25-001263
10-Q2024-10-31fiscal Q3 2024481300001558370-24-014051
10-Q2024-08-02fiscal Q2 2024481300001558370-24-010647
10-Q2024-05-02fiscal Q1 202448980001558370-24-006535
10-K2024-02-23fiscal FY 2023562250001558370-24-001581
10-Q2023-11-02fiscal Q3 2023491310001558370-23-017421
10-Q2023-08-03fiscal Q2 2023481300001558370-23-013204
10-Q2023-05-04fiscal Q1 202348980001558370-23-008089
10-K2023-02-24fiscal FY 2022562260001558370-23-001969
10-Q2022-11-04fiscal Q3 2022491310001558370-22-016340
10-Q2022-08-04fiscal Q2 2022481300001558370-22-012280
10-Q2022-05-05fiscal Q1 202248980001558370-22-007407
10-K2022-02-25fiscal FY 2021562300001558370-22-002059
10-Q2021-10-29fiscal Q3 2021491340001558370-21-013798
10-Q2021-08-05fiscal Q2 2021481300001558370-21-010420
10-Q2021-05-06fiscal Q1 2021481000001558370-21-006198
10-K2021-02-26fiscal FY 2020552220001558370-21-001916
10-Q2020-10-30fiscal Q3 2020491340001558370-20-012094
10-Q2020-08-06fiscal Q2 2020491340001558370-20-009506
10-Q2020-05-07fiscal Q1 2020491030001558370-20-005691
10-K2020-02-28fiscal FY 2019552280001558370-20-001788
10-Q2019-10-31fiscal Q3 2019501330001558370-19-009602
10-Q2019-08-01fiscal Q2 2019501330001558370-19-006736
10-Q2019-05-02fiscal Q1 2019501030001558370-19-003797
10-K2019-03-01fiscal FY 2018512230001558370-19-001379
10-Q2018-11-01fiscal Q3 2018471300001558370-18-008282
10-Q2018-08-02fiscal Q2 2018471300001558370-18-006163
10-Q2018-05-03fiscal Q1 2018471020001558370-18-003829
10-K2018-02-23fiscal FY 2017481990001558370-18-000999
10-Q2017-11-02fiscal Q3 2017441150001558370-17-008023
10-Q2017-08-03fiscal Q2 2017441150001558370-17-005778
10-Q2017-05-04fiscal Q1 201741850001558370-17-003539
10-K2017-02-24fiscal FY 2016441870001558370-17-000944
10-Q2016-11-03fiscal Q3 2016411090001558370-16-009235
10-Q2016-08-04fiscal Q2 2016411070001558370-16-007312
10-Q2016-05-05fiscal Q1 201641850001558370-16-005353
10-K2016-02-26fiscal FY 2015431850001558370-16-003581
10-Q2015-11-02fiscal Q3 2015401060001104659-15-074906
10-Q2015-08-06fiscal Q2 2015401060001104659-15-056831
10-Q2015-05-07fiscal Q1 201540820001104659-15-035223
10-K2015-02-27fiscal FY 2014431850001104659-15-014788
10-Q2014-10-30fiscal Q3 2014401060001104659-14-075274
10-Q2014-08-07fiscal Q2 2014401060001104659-14-057864
10-Q2014-05-08fiscal Q1 201440820001104659-14-036104
10-K2014-02-28fiscal FY 2013431840001104659-14-014489
10-Q2013-10-31fiscal Q3 2013401060001104659-13-079690
10-Q2013-08-01fiscal Q2 2013401060001104659-13-058639
10-Q2013-05-02fiscal Q1 201340820001104659-13-036197
10-K2013-02-26fiscal FY 2012441880001104659-13-014387
10-Q2012-10-30fiscal Q3 2012401060001104659-12-072308
10-Q2012-08-02fiscal Q2 2012401060001104659-12-053471
10-Q2012-05-03fiscal Q1 201240820001104659-12-032271
10-K2012-02-28fiscal FY 2011421830001104659-12-014104
10-Q2011-10-31fiscal Q3 2011381000001104659-11-059014
10-Q2011-08-04fiscal Q2 2011411060001104659-11-043737
10-Q2011-05-05fiscal Q1 201141840001104659-11-025984
10-K2011-02-25fiscal FY 2010451910001104659-11-010321
10-Q2010-11-04fiscal Q3 2010411060001104659-10-056085
10-Q2010-08-05fiscal Q2 2010411070001104659-10-042034
10-Q2010-05-06fiscal Q1 201037760001104659-10-025985
10-K2010-02-26fiscal FY 200937980001104659-10-010302
10-Q2009-11-06fiscal Q3 200937940001104659-09-063126
10-Q2009-08-07fiscal Q2 200937940001104659-09-047977

Inspect the source

Entity
ECOLAB INC. / CIK 0000031462
Captured
2026-09-19T14:46:19.817Z
SEC response SHA-256
d1bde94130ee5039309a29a510152a8ae865bac9075851449780c3c9fcd6c135

Current SEC company facts · Download the original response snapshot (gzip) · Download the selected JSON

Every published concept a filing tagged, with the periods it covered, as reported in that filing at capture time. Forms 10-K, 10-K/A, 10-Q, 10-Q/A, 20-F, 20-F/A, 40-F, 40-F/A. A filing page needs at least 8 published concepts. Later filings can restate these values; the company history pages show the latest-filed value per period.

Public company accounting reference, not market prices, returns, an investment recommendation, or ALPHAC performance. Validate a separately constructed return series with the validation API; accounting values are not returns.

Use this in research

A financial period ends before its results become public. Use the filing date as a minimum availability boundary, inspect amendments, and retain the original filing vintage when testing historical signals. This latest-filed selection can contain information unavailable at the time.

These pages do not supply prices, total-return histories, corporate-action adjustments or a tradable universe. Build those inputs separately before evaluating a strategy. A profitable backtest can still reflect selection bias or costs that were left out.

Research methodology · Execution and cost assumptions · Check backtest overfitting

Build with the open-source tools

Use these accounting records as inspectable inputs. When you have constructed a return series, the validation tools can help test its statistical evidence and preserve the result with its limitations.

Read the published dataset with Python
import json
from urllib.request import urlopen

with urlopen("https://canlicapital.com/company-data/0000031462.json") as response:
    record = json.load(response)
print(record["fetched_at"])
print(record["policy"])
for concept in record["concepts"]:
    print(concept["tag"], next(iter(concept["observations"])))