USGS Water Services
Science & Math
Water quality and level info for rivers and lakes
Auth
No Auth
HTTPS
Yes
CORS
No
Common Use Cases
- •Integrate this API into your web or mobile application
- •Build data-driven dashboards and visualization tools
- •Create automated workflows using the API endpoints
Integration Guide
Review the API Documentation
Visit the official USGS Water Services documentation to understand available endpoints, request formats, and response structures. Familiarize yourself with the API's rate limits and usage policies before integration.
No Authentication Required
Good news — USGS Water Services does not require any authentication. You can start making API requests directly without registering for an API key or setting up OAuth credentials.
Use HTTPS for Secure Requests
USGS Water Services supports HTTPS, ensuring encrypted communication. Always use HTTPS endpoints in production to protect data in transit and comply with modern web security standards.
No CORS — Use a Backend Proxy
USGS Water Services does not support CORS. To use it in a browser-based app, set up a backend proxy server that forwards requests to the API and returns the response with appropriate CORS headers.
Implement and Test
Write your API integration code, start with a simple test request to verify connectivity. Implement proper error handling for network failures, rate limits, and invalid responses. Monitor your API usage to stay within any limits.
Code Examples
JavaScript / Fetch API:
// JavaScript example
fetch("https://waterservices.usgs.gov/")
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
})
.then(data => {
console.log("API response:", data);
})
.catch(error => {
console.error("Error fetching from USGS Water Services:", error);
});Python / Requests:
# Python example
import requests
response = requests.get("https://waterservices.usgs.gov/")
if response.status_code == 200:
data = response.json()
print("API response:", data)
else:
print(f"Error: {response.status_code}")