Skip to main content

thameswaterapi

pip install thameswaterapi

A Python client for retrieving meter data from Thames Water.

This is a fork of thameswaterclient by Ayrton Bourn.

Python API

from thameswaterapi import ThamesWater

email = "myname@provider.com"
password = "**********"

thames_water = ThamesWater(email=email, password=password)

If you have multiple accounts, you can specify which one to use:

thames_water = ThamesWater(email=email, password=password, account_number=123456789)

Listing accounts and meters

thames_water.get_account_numbers()  # [123456789011, 123456789012]
thames_water.get_meter_numbers()  # ['123456789']

Daily usage

from thameswaterapi import lines_to_timeseries

meters = thames_water.get_meters()
readings = lines_to_timeseries(meters.Lines)
for r in readings:
    print(r.start, r.usage, r.total)

Hourly usage

import datetime
from thameswaterapi import meter_usage_lines_to_timeseries

meter = thames_water.get_meter_numbers()[0]
start = datetime.date(2024, 10, 1)
end = datetime.date(2024, 10, 31)

meter_usage = thames_water.get_meter_usage(meter, start, end)
readings = meter_usage_lines_to_timeseries(start, meter_usage.Lines)
for r in readings:
    print(r.hour_start, r.usage, r.total)

A window of any width works. Hourly labels are clock times that repeat every day, so meter_usage_lines_to_timeseries takes the hour from the label and the day from a cursor that advances at every 0:00. A window ending today is truncated at a whole-day boundary rather than padded, so the days that have not been published yet are simply absent from the result.

Tariff

Thames Water has no tariff API — metered charges are a fixed annual "Scheme of Charges" published per region (identical for every customer), so the figures are scraped from Thames Water's public metered-customers help page and need no authentication:

from thameswaterapi import get_tariff

tariff = get_tariff()
tariff.clean_water_rate_per_m3  # 2.7346
tariff.wastewater_rate_per_m3  # 1.4721
tariff.water_fixed_per_year  # 66.87
tariff.wastewater_fixed_per_year  # 128.13  (standard rate, not the rebate)
tariff.effective_date  # datetime.date(2026, 4, 1)

tariff.volumetric_rate_per_m3  # combined GBP/m3
tariff.unit_rate_per_litre  # combined GBP/L
tariff.standing_charge_per_day  # combined fixed charge GBP/day

ThamesWater.get_tariff() is also available on an authenticated client (it reuses the session).

Command line

python -m thameswaterapi EMAIL PASSWORD [options]

Options:

  • --account-number N — use a specific contract account number (defaults to the account default)
  • --list-accounts — list available contract account numbers and exit
  • --list-meters — list meter serial numbers and exit
  • --meter M — query a specific meter (defaults to first meter)

Examples:

# Show daily and hourly readings for the default account and first meter
python -m thameswaterapi myname@provider.com mypassword

# List available account numbers
python -m thameswaterapi myname@provider.com mypassword --list-accounts

# List meters on a specific account
python -m thameswaterapi myname@provider.com mypassword --account-number 123456789012 --list-meters

# Query a specific meter
python -m thameswaterapi myname@provider.com mypassword --meter 123456789

Release files for thameswaterapi 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for thameswaterapi 0.5.0
File Size Uploaded
thameswaterapi-0.5.0.tar.gz 13.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for thameswaterapi 0.5.0
File Interpreter ABI Platform
thameswaterapi-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 25.7 kB

Release files / thameswaterapi-0.5.0.tar.gz

Download URL thameswaterapi-0.5.0.tar.gz
Size 13.2 kB
Tags Source
SHA-256 checksum
How to use checksums
4f7e25d5ab3d551b642073c0a1162b8b26aebf518dc0359964515f38b793ec93
BLAKE2b-256 checksum
How to use checksums
d8d19fb5c21b835c2be02906dd105f3dbf2aebb5e2b8a396890526287847ae36
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / thameswaterapi-0.5.0-py3-none-any.whl

Download URL thameswaterapi-0.5.0-py3-none-any.whl
Size 12.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
77eec0a467d95daa3dec36ea918f0c07dc8c16522b236bc81f3e55d9640f4547
BLAKE2b-256 checksum
How to use checksums
f5e3ccccc77c81c47ae427f006bb1cb5982680d3947ad712efa7b9b35fe6fcc3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release history Release notifications | RSS feed

0.6.0

2 release files

This release

0.5.0 This release

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page