Grow your energy product's revenue. With utility data you can trust.

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
Nautilus Solar
Arbor
CleanChoice Energy
Sunscription
Sealed
Elephant Energy
WattBot
Solstice

Customer Stories

img

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
img

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
img

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."

Win more customers

Your customers reliably connect their utility account in one click and you get their accurate data, delivered instantly

Get startedContact Bayou

Be live with customer utility data by

# 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: validpassword
puts "Fill the customer credentials using the following link: #{customer['onboarding_link']}" # Email: iamvalid@bayou.energy # Password: validpassword
console.log(`Fill the customer credentials using the following link: ${customer.onboarding_link}`); // Email: iamvalid@bayou.energy // Password: validpassword
Console.WriteLine($"Fill the customer credentials using the following link: {customer.onboarding_link}"); // Email: iamvalid@bayou.energy // Password: validpassword
bills = 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 intervals
const 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"); }

Rapidly expanding utility support

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.

0 utilities (0% population)
With instant support
Beta icon0 utilities (0% population)
With beta support
Utilities with instant support Beta utilities

Pricing

img

$24

per meter per year

Get Started

First 10 unique meters are free

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

img

Ready to get started?

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

Get startedContact Bayou