Solar Installer Scraper - EnergySage
Pricing
from $3.60 / 1,000 solar costs
Solar Installer Scraper - EnergySage
Choose one public EnergySage view per run: state solar costs, solar panel rankings, solar news, or installer profiles. Get structured fields and source links for solar research, cost comparisons, and installer lists.
Pricing
from $3.60 / 1,000 solar costs
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
17 days ago
Last modified
Categories
Share
☀️ Solar cost, panel, news, and installer data from EnergySage
For solar analysts, installers, market researchers, and developers, this Actor collects one selected public EnergySage view per run. It returns structured state and city solar costs, solar panel rankings, solar news articles, or installer profiles. Most rows include a link to the source. Use the data to compare panel prices, review state costs, follow solar news, or build installer lists.
- Find Solar Installers California with public installer names, contacts, services, and locations.
- Build a list of Solar Installers that hold the EnergySage Approved badge in California.
- Collect EnergySage source articles with Solar News and their links and categories.
- Compare state-level solar costs with Solar Panel Cost using installed cost, savings, and payback values.
- Compare panel prices with Solar Panel Prices using price-per-watt and warranty data.
- Review top choices with Best Solar Panels from the selected best-overall category.
- Compare brands and models with Solar Panel Rankings across EnergySage categories.
📦 Four EnergySage data views
What this Actor returns
Choose one view for each run. Rows include a recordType value so you can tell which view produced them. Most rows include a source link, and source update dates are included when EnergySage publishes them.
State and city solar costs
Returns the state or city, installed cost per watt, average system size, average total cost, currency, and source URL when EnergySage has one. Savings and payback years are included when EnergySage shows them.
Solar panel rankings
Returns brand, model, rank, efficiency, price per watt, warranty, power, panel type, category, currency, and source URL.
Solar news articles
Returns article title, article URL, and categories.
Installer profiles
Returns the EnergySage marketplace link, profile update date, and the listed installer name, website, contact, location, description, services, service areas, languages, equipment brands, financing partners, ratings, and qualification details.
▶️ Run one public view at a time
How a run works
- Choose one
target: State and city solar costs, Solar panel rankings, Solar news, or Installer directory. Customer reviews are not available yet. - Set the options that apply to that view. Fields for other views are ignored.
- Set
Maximum resultsif you want a bound. Leave it empty to return all available results until the selected source is exhausted. - Run the Actor and open the dataset link in the output.
Each run reads supported public EnergySage pages. It does not request quotes, create personalized solar proposals, or use private account data.
⚙️ Input
Input fields
| Field | Type | What it does |
|---|---|---|
target | string | Required. Select one public EnergySage view: stateSolarCosts, solarPanelRankings, solarNews, installerDirectory, or customerReviews. Customer reviews are not available yet. A run with that choice stops without reading EnergySage or charging you, and it returns no results. |
panelCategory | string | For Solar panel rankings, choose all, bestOverall, bestValue (Most affordable), mostEfficient, or bestWarranty. Ignored for other views. |
installerDiscovery | string | For Installer directory, choose directorySearch (Directory search), rankedByLocation (Ranked by location), or profileLinksOrIds (Profile links or IDs). Ignored for other views. |
installerProfiles | array of strings | For Installer directory with profileLinksOrIds, add one EnergySage installer profile link or profile ID per item. Service type, approved-only, States, and Cities do not apply to these installers. |
serviceType | string | Optional. For Installer directory with Directory search or Ranked by location, enter one service type, such as installation, financing, or repair. Only installers whose listed services include this text are kept. |
approvedOnly | boolean | For Installer directory with Directory search or Ranked by location, keep only installers marked EnergySage Approved. |
states | array of strings | Optional. Choose one or more two-letter state codes. Used for State and city solar costs and Installer directory. Leave States and Cities empty to use all 46 states and the District of Columbia for State and city solar costs and Ranked by location. For Installer directory with Directory search, leave States empty to search without a state filter. |
cities | array of strings | Optional. Add one city and its two-letter state code per item, such as Clovis, CA. Used for State and city solar costs and Ranked by location. |
maxItems | integer | Optional. Stop after this many results. Leave it empty to return all available results until the selected source is exhausted. |
Alaska (AK), Nebraska (NE), North Dakota (ND), and South Dakota (SD) are not listed because EnergySage does not publish solar cost data for these states.
Example input
This example is copied from a successful current-beta run with the default input:
{"target": "solarPanelRankings","panelCategory": "all","installerDiscovery": "directorySearch","installerProfiles": [],"serviceType": "","approvedOnly": false,"states": [],"cities": [],"maxItems": 10}
🧾 Output
Output link
| Field | Type | What it does |
|---|---|---|
results | string (URL) | Links to the rows in the default dataset overview. |
State solar cost
| Field | Type | What it does |
|---|---|---|
recordType | string | Identifies this row as stateSolarCost. |
state | string | State code for the solar cost data. |
installedCostPerWatt | number | Installed solar cost for one watt of system capacity. |
systemSizeKw | number | Average solar system size in kilowatts for this state. |
totalCost | number | Average total installed cost of a solar system in this state. |
savings | number | Estimated lifetime savings for a solar system in this state, when EnergySage shows it. |
paybackPeriodYears | number | Estimated years to pay back the system cost, when EnergySage shows it. |
currency | string | Currency used for cost and savings values. |
sourceUrl | string (URL) | EnergySage page for this state cost record, when EnergySage has one. |
sourceUpdatedAt | string (date) | Date shown by EnergySage for the source data, when published. |
One genuine row from a successful current-beta run:
{"recordType": "stateSolarCost","state": "AZ","installedCostPerWatt": 2.2635852964017737,"systemSizeKw": 13.419970230390888,"totalCost": 11318,"currency": "USD","sourceUrl": "https://www.energysage.com/local-data/solar-panel-cost/az/","savings": 36817.21580895679,"paybackPeriodYears": 12.975330054361933,"sourceUpdatedAt": "2026-10-09"}
City solar cost
| Field | Type | What it does |
|---|---|---|
recordType | string | Identifies this row as citySolarCost. |
city | string | City name for this solar cost record. A city name can match more than one county page, so the same city can appear in more than one row. |
state | string | Two-letter state code for this city. |
installedCostPerWatt | number | Installed solar cost for one watt of system capacity. |
systemSizeKw | number | Average solar system size in kilowatts for this city. |
totalCost | number | Average total installed cost of a solar system in this city. |
savings | number | Estimated lifetime savings for a solar system in this city, when EnergySage shows it. |
paybackPeriodYears | number | Estimated years to pay back the system cost, when EnergySage shows it. |
currency | string | Currency used for the cost and savings values. |
sourceUrl | string (URL) | EnergySage page for this city cost record. When a city matches more than one county page, this link shows which page the row came from. |
sourceUpdatedAt | string (date) | Date shown by EnergySage for the source data. |
One genuine row from a successful current-beta run:
{"recordType": "citySolarCost","city": "Austin","state": "TX","installedCostPerWatt": 2.17,"systemSizeKw": 11.99,"totalCost": 26017,"currency": "USD","sourceUrl": "https://www.energysage.com/local-data/solar-panel-cost/tx/williamson-county/austin/","savings": 21772,"paybackPeriodYears": 15.76,"sourceUpdatedAt": "2026-10-09"}
Solar panel ranking
| Field | Type | What it does |
|---|---|---|
recordType | string | Identifies this row as solarPanelRanking. |
brand | string | Panel brand. |
model | string | Panel model. |
rank | integer | Panel rank as EnergySage shows it in its solar panel ranking. |
efficiencyPercent | number | Panel efficiency as a percent. |
pricePerWatt | number | Panel price for one watt of rated power. |
warranty | string | Warranty terms shown by EnergySage. |
wattageWatts | number | Panel power in watts. |
panelType | string | Panel type, when EnergySage lists it. |
category | string | Ranking category EnergySage gives this panel's brand, when EnergySage labels it. |
currency | string | Currency used for the price per watt. |
sourceUrl | string (URL) | EnergySage page for this panel ranking. |
sourceUpdatedAt | string (date) | Date shown by EnergySage for the ranking data, when published. |
One genuine row from a successful current-beta run:
{"recordType": "solarPanelRanking","brand": "REC","model": "Alpha Pure-RX","rank": 1,"efficiencyPercent": 22.1,"pricePerWatt": 2.45,"warranty": "Product 25 years; performance 25 years","wattageWatts": 460,"panelType": "mono","category": "Best overall","currency": "USD","sourceUrl": "https://www.energysage.com/solar/best-solar-panels-complete-ranking/","sourceUpdatedAt": "2026-07-01"}
Solar news article
| Field | Type | What it does |
|---|---|---|
recordType | string | Identifies this row as solarNewsArticle. |
title | string | Article title. |
articleUrl | string (URL) | Link to the article. |
categories | array of strings | Categories assigned to the article, when EnergySage lists them. |
One genuine row from a successful current-beta run:
{"recordType": "solarNewsArticle","title": "Solar panels can boost home values by up to $79,000","articleUrl": "https://www.energysage.com/news/solar-power-as-a-home-improvement-strategy/","categories": ["Home solar"]}
Installer profile
The installer object keeps profile details nested. Fields that EnergySage does not publish for a profile may be absent.
| Field | Type | What it does |
|---|---|---|
recordType | string | Identifies this row as installerProfile. |
marketplaceUrl | string (URL) | Link to the installer in the EnergySage marketplace. |
profileUpdatedAt | string (date) | Date when the profile was last updated on EnergySage, when published. |
installer | object | Installer details shown by EnergySage. |
installer.name | string | Installer name. |
installer.websiteUrl | string (URL) | Installer website link. |
installer.contact | object | Listed contact details. |
installer.contact.phone | string | Installer phone number, when listed. |
installer.contact.email | string (email) | Installer email address, when listed. |
installer.location | object | Listed installer location. |
installer.location.address | string | Street address, when listed. |
installer.location.city | string | City, when listed. |
installer.location.state | string | State, when listed. |
installer.location.postalCode | string | Postal code, when listed. |
installer.location.country | string | Country, when listed. |
installer.description | string | Installer description, when listed. |
installer.foundedYear | integer | Year the installer was founded, when listed. |
installer.services | array of strings | Services listed for the installer. |
installer.serviceAreas | array of strings | Areas where the installer offers service. |
installer.equipmentBrands | array of strings | Equipment brands supported by the installer. |
installer.financingPartners | array of strings | Financing partners listed for the installer. |
installer.languages | array of strings | Languages the installer speaks, when EnergySage lists them. |
installer.ratings | object | EnergySage ratings for the installer, when EnergySage lists them. |
installer.ratings.overallRating | number | The installer's overall rating on EnergySage. |
installer.ratings.reviewCount | integer | Number of EnergySage reviews for the installer. |
installer.ratings.tier | string | Installer tier shown by EnergySage. Approved means the installer holds the EnergySage Approved badge. |
installer.ratings.subRatings | array of objects | The installer's rating in each category EnergySage lists. Each item has category and rating. |
installer.qualification | object | Qualification details listed for the installer. |
installer.qualification.licenses | array of strings | Licenses listed for the installer. |
installer.qualification.certifications | array of strings | Industry certifications listed for the installer, when EnergySage lists them. |
installer.qualification.workmanshipWarranty | string | Workmanship warranty listed for the installer. |
installer.qualification.insurance | string | Insurance information listed for the installer. |
One genuine row from a successful current-beta run:
{"recordType": "installerProfile","marketplaceUrl": "https://www.energysage.com/supplier/29302/bluesun-services/","installer": {"name": "Bluesun Services","websiteUrl": "https://www.bluesunsvcs.com/","contact": {"phone": "9452150539","email": "info@bluesunsvcs.com"},"location": {"address": "609 n britain rd","city": "irving","state": "TX","postalCode": "75061","country": "United States"},"description": "Bluesun Services is a Texas-based solar and energy company founded in 2022 by professionals whose solar industry experience dates back to 2018. Our leadership spent years working across solar sales, operations, project management, and installation before building Bluesun. Today, we bring that experience together under one team, managing projects from design and permitting through installation, interconnection, and long-term support. Our focus is simple: quality work, honest recommendations, and a better customer experience.","services": ["Installation","Construction","Roofing","Electrical Contracting","General Contracting","Community Solar","Commercial Solar"],"serviceAreas": ["TX"],"languages": ["English","Spanish"],"ratings": {"overallRating": 5,"reviewCount": 5,"tier": "Elite","subRatings": [{"category": "Response","rating": 5},{"category": "Quality","rating": 5},{"category": "Value","rating": 5},{"category": "Service","rating": 5}]}}}
💳 Pricing
How charging works
The Actor charges per successfully saved public row. The view you choose decides which event you pay for. A Customer reviews run stops without a charge and returns no results.
| Event | FREE | BRONZE | SILVER | GOLD | DIAMOND | PLATINUM |
|---|---|---|---|---|---|---|
| Solar cost | $0.0036 fixed | $0.0036 fixed | $0.0036 fixed | $0.0036 fixed | $0.0036 fixed | $0.0036 fixed |
| Panel ranking | $0.0045 | $0.00385 | $0.0033 | $0.0027 | $0.0027 | $0.0027 |
| News article | $0.0045 | $0.00385 | $0.0033 | $0.0027 | $0.0027 | $0.0027 |
| Installer profile | $0.00075 fixed | $0.00075 fixed | $0.00075 fixed | $0.00075 fixed | $0.00075 fixed | $0.00075 fixed |
🔌 Integrations
Apify dataset
The output link opens the default Apify dataset view. You can use the dataset link with Apify's dataset tools or API.
Video guide
❓ FAQ
Why are some states missing from the state list?
EnergySage does not publish solar cost data for Alaska, Nebraska, North Dakota, or South Dakota, so this Actor does not offer those states.
Does this collect EnergySage reviews?
No, not yet. Customer reviews are not available. If you choose Customer reviews, the run stops without reading EnergySage or charging you, and it returns no results. Installer profiles can include the EnergySage rating, review count, and category ratings when EnergySage lists them.
Can I narrow the installer directory?
Yes. For Installer directory with Directory search or Ranked by location, you can choose one or more states, enter one service type, and turn on EnergySage Approved only. With Profile links or IDs, the run uses only the installers you list.
What does the panel category change?
It selects the ranking view for Solar panel rankings: all panels, best overall, most affordable, most efficient, or best warranty.
How do I collect all available state costs or installer profiles?
Leave maxItems empty to return all available results until the selected source is exhausted. For State and city solar costs, also leave States and Cities empty to use all 46 states and the District of Columbia. For Installer directory with Directory search, leave States empty to search without a state filter.
Is this an EnergySage solar calculator?
No. It returns published state and city solar cost records and does not create a personal quote or proposal.
Can one run collect all four EnergySage views?
No. Choose one target for each run, then start another run for a different view.
Does it track changes over time?
No. Each run stands alone, and the Actor does not keep history across runs.
Do I need an EnergySage account to run it?
No. The Actor reads supported public EnergySage pages and does not need you to log in or use a private account.
Does this Actor return quotes or private EnergySage data?
No. It collects supported data from public EnergySage pages. It does not request quotes, create personalized proposals, or use account-only data.
Is this made by EnergySage?
No. This is an independent Apify Actor that reads public EnergySage pages.
📝 Changelog
v1.0 (14-10-2026)
- Removed the
retrievedAttime from every row. If your workflow reads it, update the workflow before you use this version. - The
sourceUpdatedAtandprofileUpdatedAtfields now show only a date, such as2026-07-01, with no time. - Removed
installer.qualification.energySageApprovedfrom installer rows. Useinstaller.ratings.tierinstead.Approvedmeans the installer has the EnergySage Approved badge. - Panel rows show the category name from EnergySage, such as
Best overall, instead ofbestOverall. A row has nocategoryfield when EnergySage gives its brand no category name. - Panel rows may not have a
panelTypefield when EnergySage does not list one. - The
statesfield no longer acceptsNDorSD. Whenstatesis empty, state solar costs no longer include them. - State cost rows can now include negative savings and zero payback years, when EnergySage publishes those values.
- If EnergySage cannot provide one listing, the run skips it and finishes with the other rows. The run log says how many listings were left out.
- When a run finishes with skipped listings, it saves a list of them in its key-value store under
ISSUE_LOG. - Added city solar cost rows. Enter cities in the new
citiesfield. A city can have more than one row when it matches more than one county page. - Installer directory has two new ways to find installers:
Ranked by locationandProfile links or IDs.Profile links or IDsuses only the profiles you list. - Installer rows include ratings, languages, and certifications when EnergySage lists them.
- Added a Customer reviews choice. It is not available yet. A run with it stops without reading EnergySage or charging you, and it returns no results.
- Form labels changed.
Targetis nowResult type.State solar costsis nowState and city solar costs.Best valueis nowMost affordable. Field and value names stay the same. - The Store title is now
Solar Installer Scraper - EnergySage. - Runs can use up to 1024 MB of memory, up from 256 MB.
- Some installer searches start with more memory. Directory searches with filters start at 512 MB. Ranked-by-location searches with states and cities start at 256 MB.
v0.0
- Initial release.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- Solar Installer Directory Scraper - EnergySage Suppliers: Use it for a directory-only crawl of EnergySage installers, financiers, and equipment partners.
- EnergySage Scraper: Solar Installers, Reviews & Solar Costs: Use it when you also need customer reviews next to installer lists.
- DSIRE Energy Incentives Crawler: Add state clean-energy incentive programs when you compare solar costs.
- Solar Industry - Installers, Reviews, Incentives & AI Analysis: Add reviews and incentive data when you want a broader market view.
- MCS Certified Installers Scraper: Use it when you need UK installer lists, since this Actor covers US states.
Made with ❤️ by Maxime Dupré