gwlevels: Get groundwater level data

API: usgs.gov:usgs-water-services
Endpoint: /nwis/gwlevels
Response format: text/html
Charset: utf-8
Auth: unknown
Method: GET
Last Status: 200
Latency: 1296ms

Description

Retrieve historical manually-recorded groundwater levels from wells. This is distinct from automated real-time data available via the Instantaneous Values service.

Parameters (19)

agencyCd (string, query, optional)

Agency code

aquiferCd (string, query, optional)

National aquifer codes (10 characters, up to 1000 values)

bBox (string, query, optional)

Bounding box as west,south,east,north

countyCd (string, query, optional)

5-digit FIPS county codes (1-20 values)

endDT (string, query, optional)

End date in ISO-8601 format

format (string, query, optional, default: json)

Output format

Constraints: {'enum': ['json', 'rdb', 'waterml']}

holeDepthMax (number, query, optional)

Maximum hole depth in feet

holeDepthMin (number, query, optional)

Minimum hole depth in feet

huc (string, query, optional)

Hydrologic Unit Code(s) (1-10 values)

localAquiferCd (string, query, optional)

State-local aquifer codes (format: ST:AAAAAAA, up to 1000 values)

parameterCd (string, query, optional)

USGS parameter codes (e.g., 72019=depth to water level, 62610=level above NGVD)

period (string, query, optional)

ISO-8601 duration for data range

siteStatus (string, query, optional, default: all)

Filter by site status

Constraints: {'enum': ['all', 'active', 'inactive']}

siteType (string, query, optional)

Site type codes (e.g., GW, GW-MW)

sites (string, query, optional)

Comma-separated site numbers (1-100 values)

startDT (string, query, optional)

Start date in ISO-8601 format

stateCd (string, query, optional)

Two-letter US state code

Constraints: {'minLength': 2, 'maxLength': 2}

wellDepthMax (number, query, optional)

Maximum well depth in feet

wellDepthMin (number, query, optional)

Minimum well depth in feet

Examples (1)

Get groundwater level data openapi-spec
curl 'https://waterservices.usgs.gov/nwis/gwlevels?sites=375907091432201&period=P1Y'
import requests

resp = requests.get(
    "https://waterservices.usgs.gov/nwis/gwlevels",
    params={
        'sites': '375907091432201',
        'period': 'P1Y',
    },
)
data = resp.json()
import zingu_apis

api = zingu_apis.api("usgs-water-services")
result = api.fetch("nwis/gwlevels", sites=375907091432201, period="P1Y")

for item in result:
    print(item)
const resp = await fetch("https://waterservices.usgs.gov/nwis/gwlevels?sites=375907091432201&period=P1Y");
const data = await resp.json();

Probe History

Latency

Status Codes

TimeStatusLatencySize
2026-04-16 16:50:47.817755 200 1296ms
2026-04-16 04:16:33.427522 200 1595ms
2026-04-15 02:00:06.588425 200 1447ms
2026-04-14 02:25:38.030356 200 1360ms
2026-04-12 15:41:31.300250 200 1599ms
2026-04-10 02:43:19.350977 200 1440ms
2026-04-09 01:54:08.571531 200 1704ms
2026-03-23 10:40:55.935109 400 613ms