Water Utility Rate Lookup (SF, NYC, Austin)
Pricing
$50.00 / 1,000 rate row delivereds
Water Utility Rate Lookup (SF, NYC, Austin)
Current water rate schedules for San Francisco, New York City and Austin, normalized from three differently structured tariff PDFs into one schema. Charged only per rate row delivered.
Pricing
$50.00 / 1,000 rate row delivereds
Rating
0.0
(0)
Developer
Kevin
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Water Utility Rate Lookup (San Francisco, New York City, Austin)
An independent tool. It is not affiliated with, endorsed by, or operated by the San Francisco Public Utilities Commission, the New York City Water Board, or the City of Austin Water Utility. All three publish their tariffs as public rate schedules. This Actor reads each utility's own current tariff document and reports what it says, normalized into one schema.
A periodically refreshed snapshot, not a live fetch per run. A water
rate typically changes once or twice a year, on a fiscal-year boundary that
differs by utility — re-parsing three differently-laid-out government PDFs
on every customer request would trade real fragility for no real freshness
benefit. SUMMARY.json in the run's key-value store reports the snapshot
actually served; each row carries its own effective_date and source_url
so you can verify it against the utility's current tariff yourself.
Why this exists
Water utility rates in the US are not centrally published. Bluefield Research's free index covers only the ~30-50 largest cities and gates utility-level detail behind contact-sales; the AWWA/Raftelis Rate Survey (~500 utilities) is itself a paid subscription report, not a queryable feed. Thousands of small and mid-size municipal and co-op utilities publish only their own PDF ordinance or tariff document, each laid out differently. This Actor reads three of them today — San Francisco, New York City and Austin — and reconciles genuinely different rate-schedule shapes (meter-size-keyed fixed charges, tier-keyed fixed charges, flat no-tier rates) into one row format, instead of leaving you to open three different PDFs by hand.
What you get per row
| Field | Meaning |
|---|---|
utility | The full utility name |
state | Two-letter state code |
service_type | single_family_residential, multi_family_residential, commercial_industrial, or all_metered_premises (NYC, which does not split by class in its base metered rate) |
rate_component | fixed_monthly_charge, fixed_daily_minimum (NYC only), or usage_rate |
meter_size | The meter size this fixed charge applies to (San Francisco only) — null where the source does not key its charge to meter size |
tier, tier_label | The usage tier's number and the tariff's own wording for it — null for a flat, untiered rate |
tier_min_units, tier_max_units | The tier's usage bounds, in the source's own unit — null where not applicable |
usage_unit | ccf (100 cubic feet, San Francisco and NYC) or kgal (1,000 gallons, Austin) — never converted between utilities, so you always know exactly what you are comparing |
amount_usd | The dollar amount |
effective_date | When this rate took effect |
source_url | A direct link to the utility's own tariff document, to verify |
charged | Whether this row cost you anything |
not_charged_reason | Why it did not, in plain English |
The billing rule, stated plainly
One event: rate row delivered, charged once per row in the result. A row
that appears again on a later run because the tariff has not changed since
your last request is charged again — you are paying for the answer, not
for a change having happened, the same convention puc-rate-case-tracker
uses for a docket that reappears unchanged.
Coverage — read this before you rely on it
v1 covers three utilities: San Francisco (all three residential/
commercial service classes), New York City (its single flat metered rate),
and Austin (single-family residential only — Multifamily, Commercial, Large
Volume and the CAP low-income tariff all exist in Austin's own source and
are not yet covered). SUMMARY.json reports exactly which utilities were
requested and how many rows were found for each.
Input
{"utilities": ["sfpuc_ca", "nyc_ny", "austin_tx"]}
Leave utilities empty to look up all three. Invalid or unsupported slugs
are ignored; if nothing valid is given, all three supported utilities are
returned.
Output
{"utility": "San Francisco Public Utilities Commission","state": "CA","service_type": "single_family_residential","rate_component": "usage_rate","meter_size": null,"tier": 1,"tier_label": "First 4 units per month","tier_min_units": 0,"tier_max_units": 4,"usage_unit": "ccf","amount_usd": 12.2,"effective_date": "2026-07-01","source_url": "https://www.sfpuc.gov/sites/default/files/accounts-and-services/Rates_Schedule_Water_Sewer_2026-7.pdf","charged": true,"not_charged_reason": ""}
A SUMMARY.json lands in the key-value store with which utilities were
requested, how many rows were found, and a breakdown of charged vs. free
rows.