Overview
PVWatts is a widely recognized tool for estimating the energy production of photovoltaic (PV) systems. Developed and maintained by the U.S. Department of Energy's National Renewable Energy Laboratory (NREL), it offers both a public web application and a programmatic API for developers. The service has been available since 1999 and has undergone several iterations, with the current API being version 8. Its primary function is to provide hourly, daily, monthly, or annual AC energy production estimates for grid-connected PV systems based on location, system size, array type, and other user-defined parameters.
The PVWatts API is designed for developers who need to integrate solar energy production estimates into their applications, platforms, or analysis tools. It is particularly useful for:
- Preliminary Solar Feasibility Studies: Quickly assessing the potential energy output and financial viability of proposed solar projects without requiring detailed engineering.
- Residential Solar System Sizing: Helping homeowners and installers determine appropriate system sizes based on electricity consumption and available roof space.
- Commercial Project Initial Assessments: Providing foundational data for commercial enterprises evaluating large-scale solar installations.
- Educational and Research Purposes: Serving as a teaching aid or a data source for academic studies on solar energy potential and performance.
PVWatts utilizes extensive climate data, including solar radiation and temperature, from various sources such as the National Solar Radiation Database (NSRDB) to perform its calculations. This data integration allows it to provide localized and reasonably accurate estimates for locations across the United States and international sites. The API offers a straightforward interface, enabling developers to query specific locations and system configurations to retrieve detailed performance data. This accessibility makes it a foundational component for many solar-related software solutions, from proposal generation tools to energy management platforms.
While PVWatts excels at initial estimates, it is important to note that it provides a simplified model. For highly detailed engineering designs or performance guarantees, more sophisticated simulation software may be required. However, for a broad range of applications requiring quick, reliable, and free solar energy production data, PVWatts remains a leading resource. Its continuous development by NREL ensures it incorporates updated methodologies and data, maintaining its relevance in the evolving solar energy landscape.
Key features
- Solar Energy Production Estimates: Provides hourly, daily, monthly, and annual AC energy production (kWh) for grid-connected PV systems based on user inputs.
- Geographic Coverage: Supports locations across the United States and many international sites by leveraging the National Solar Radiation Database (NSRDB) and other global climate datasets.
- System Configuration Parameters: Allows users to specify system size (kW DC), array type (fixed open rack, fixed roof mount, 1-axis tracking, 2-axis tracking), module type, inverter efficiency, and system losses.
- API Access: Offers a RESTful API (PVWatts V8) for programmatic access, enabling integration into third-party applications and services. Developers can refer to the PVWatts API v8 documentation for implementation details.
- Loss Modeling: Incorporates various system losses, including shading, snow, soiling, wiring, and degradation, to provide more realistic performance estimates.
- Financial Analysis Integration: While PVWatts itself focuses on energy production, its output can be easily integrated into financial models to calculate payback periods, return on investment, and other economic metrics for solar projects.
- Free and Open Access: Both the web application and the API are provided free of charge by NREL, making it an accessible tool for a wide range of users.
Pricing
PVWatts, including both its web application and API, is provided free of charge by the National Renewable Energy Laboratory (NREL).
| Service | Cost | Notes |
|---|---|---|
| PVWatts Web Application | Free | Access via NREL PVWatts Calculator |
| PVWatts API | Free | Access via NREL Developer Network, requires API key for higher usage limits. |
As of 2026-05-28, there are no paid tiers or subscription models for PVWatts services.
Common integrations
PVWatts' API is frequently integrated into various solar energy platforms and tools to provide backend performance estimation. Typical integrations include:
- Solar Design Software: Platforms like Aurora Solar and OpenSolar often integrate PVWatts data for initial proposals and system sizing, complementing their detailed design capabilities.
- Energy Management Systems: Integrating PVWatts to forecast solar generation for demand-side management and grid optimization.
- Financial Modeling Tools: Incorporating PVWatts output into financial calculators to assess the economic viability of solar installations.
- Real Estate Platforms: Providing solar potential data for properties listed for sale or rent.
- Academic and Research Applications: Used in simulations and analyses for renewable energy studies.
Alternatives
- Aurora Solar: A comprehensive solar design and sales platform offering detailed 3D modeling, shading analysis, and financial proposals for residential and commercial projects.
- OpenSolar: A free-to-use end-to-end software platform for solar professionals, covering design, sales, and project management.
- HelioScope (Folsom Labs): An advanced solar design and engineering platform known for its precise shading analysis and detailed energy modeling capabilities.
Getting started
To get started with the PVWatts API, you will need an API key from the NREL Developer Network. The following Python example demonstrates how to make a basic request to the PVWatts v8 API to get monthly energy production for a specific location and system configuration.
import requests
import json
API_KEY = "YOUR_NREL_API_KEY" # Replace with your actual NREL API key
# Define parameters for the PVWatts API request
# Example: Golden, CO (NREL's location)
parameters = {
"api_key": API_KEY,
"lat": 39.7555,
"lon": -105.2211,
"system_capacity": 4, # kW DC
"module_type": 0, # 0=Standard, 1=Premium, 2=Thin Film
"losses": 14, # System losses (percent)
"array_type": 0, # 0=Fixed Open Rack, 1=Fixed Roof Mount, 2=1-Axis Tracking, 3=1-Axis Backtracking, 4=2-Axis Tracking
"tilt": 40, # Array tilt (degrees)
"azimuth": 180, # Array azimuth (degrees south=180, east=90, west=270)
"dataset": "tmy2", # TMY2, TMY3, or PSM3
"inv_eff": 96 # Inverter efficiency (percent)
}
# PVWatts API endpoint
url = "https://developer.nrel.gov/api/pvwatts/v8.json"
try:
response = requests.get(url, params=parameters)
response.raise_for_status() # Raise an HTTPError for bad responses (4xx or 5xx)
data = response.json()
# Print monthly AC energy production
if "outputs" in data and "ac_monthly" in data["outputs"]:
print("Monthly AC Energy Production (kWh):")
for i, energy in enumerate(data["outputs"]["ac_monthly"]):
print(f" Month {i+1}: {energy:.2f} kWh")
print(f"Annual AC Energy Production: {data['outputs']['ac_annual']:.2f} kWh")
elif "errors" in data:
print("API Errors:")
for error in data["errors"]:
print(f"- {error}")
else:
print("Unexpected API response structure.")
except requests.exceptions.RequestException as e:
print(f"Request failed: {e}")
except json.JSONDecodeError:
print("Failed to decode JSON response.")
except Exception as e:
print(f"An unexpected error occurred: {e}")
This Python script sends a GET request to the PVWatts v8 API with the specified parameters. It then parses the JSON response to extract and print the monthly and annual AC energy production values. Remember to replace "YOUR_NREL_API_KEY" with a valid API key obtained from the NREL Developer Network signup page.