Bayou returns customer utility bills, usage, and account data instantly with 95%+ reliability across every major US utility. Integrate our API in hours.
Get startedContact Bayou

Michael French
Executive Director, Technology & Business Operations at Nautilus Solar Energy
For Nautilus, Bayou-connected customers convert 2x as often, have 50% larger subscriptions, and onboard 80% faster than bill-upload customers.
Read the customer story
Owen Quinlan
Head of Data at Arbor
"Bayou has been a strong partner for Arbor. Since integrating their API, we've seen an improvement in customer onboarding, helping more households reduce their electricity costs. Their platform handles MFA effectively across utilities we support. Their team has been responsive and easy to work with throughout the process."
Read the customer story
Maddi Eckert
Head of Product at Elephant Energy
"Our platform makes it easy to upgrade and manage a climate-friendly home. When we needed a partner to fetch customers' utility bills, Bayou was the obvious choice - it's been incredibly easy to set up and it delivers the one-click utility account connection experience our customers expect."
Your customers reliably connect their utility account in one click and you get their accurate data, delivered instantly
Get startedContact Bayou# Manage your API keys at https://bayou.energy/dashboard/keys
bayou_api_key = "live_1_13a720.....3cc858f1c673c48d"
customer = requests.post(f"https://bayou.energy/api/v2/customers", json={
"utility": "speculoos_power",
}, auth=(bayou_api_key, '')).json()bayou_api_key = "live_1_13a720.....3cc858f1c673c48d"
uri = URI("https://bayou.energy/api/v2/customers")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.path, 'Content-Type' => 'application/json')
request.basic_auth(bayou_api_key, '')
request.body = { "utility" => "speculoos_power" }.to_json
customer = JSON.parse(http.request(request).body)const bayouApiKey = "live_1_13a720.....3cc858f1c673c48d";
const response = await fetch("https://bayou.energy/api/v2/customers", {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Basic ${btoa(`${bayou_api_key}:`)}`,
},
body: JSON.stringify({ utility: "speculoos_power" })
});
const customer = await response.json();string bayouApiKey = "live_1_13a720.....3cc858f1c673c48d";
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(bayouApiKey + ":")));
string jsonInputString = "{\"utility\":\"speculoos_power\"}";
HttpResponseMessage response = await client.PostAsync("https://bayou.energy/api/v2/customers", new StringContent(jsonInputString, Encoding.UTF8, "application/json"));
dynamic customer = Newtonsoft.Json.JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync());
}print(f"Fill the customer credentials using the following link: {customer['onboarding_link']}")
# Email: iamvalid@bayou.energy
# Password: validpasswordputs "Fill the customer credentials using the following link: #{customer['onboarding_link']}"
# Email: iamvalid@bayou.energy
# Password: validpasswordconsole.log(`Fill the customer credentials using the following link: ${customer.onboarding_link}`);
// Email: iamvalid@bayou.energy
// Password: validpasswordConsole.WriteLine($"Fill the customer credentials using the following link: {customer.onboarding_link}");
// Email: iamvalid@bayou.energy
// Password: validpasswordbills = requests.get(f"https://bayou.energy/api/v2/customers/{customer['id']}/bills", auth=(bayou_api_key, '')).json()
intervals = requests.get(f"https://bayou.energy/api/v2/customers/{customer['id']}/intervals", auth=(bayou_api_key, '')).json()
bills_uri = URI("https://bayou.energy/api/v2/customers/#{customer_id}/bills")
# ... fetch bills and intervalsconst billsResponse = await fetch(`https://bayou.energy/api/v2/customers/${customer.id}/bills`, {
headers: { 'Authorization': `Basic ${btoa(`${bayou_api_key}:`)}` }
})
const bills = billsResponse.json();using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(bayouApiKey + ":")));
var bills = await client.GetStringAsync($"https://bayou.energy/api/v2/customers/{customer.id}/bills");
var intervals = await client.GetStringAsync($"https://bayou.energy/api/v2/customers/{customer.id}/intervals");
}You get data instantly from 0 utilities today and from 0% of US utility customers in the coming months. Bayou can add new utilities within one week.

Instant access with pay-as-you-go pricing—no setup, sales calls, or hidden fees
Includes customer bill, interval and account data with unlimited API calls
Get 12 months of historical data or 12 months of ongoing data access for $24

Read the docs, or create an account and get utility data instantly. You can also contact us to discuss your deployment.
Get startedContact Bayou