ActorStack.dev

EnergySage reviews and installer data: what a scrape contains, and its measured limits

What EnergySage publishes about solar installers, their customer reviews and local solar costs, field by field with sample sizes — and why the 6,822-profile directory is not an installer list.

By Oswaldo Carabano8 min read

Short answer

EnergySage reviews carry a title, text, an overall rating and four sub-ratings for value, responsiveness, quality and service, plus a verified-shopper flag and the installer's reply. Measured on 360 reviews of 15 installers, the sub-ratings were filled on 97.2% to 98.1%, verified shopper was true on 65.0% and an installer reply was present on 18.6%. Beyond reviews, EnergySage lists 200 unique installers on its state and city pages, with phone on 99.0% and email on 96.5% of them when the profile is read, and publishes solar cost per watt per state and city rather than per installer.

Key points

  • An EnergySage review carries an overall rating and four sub-ratings: value, responsiveness, quality and service.
  • Across 360 EnergySage reviews of 15 installers, sub-ratings were filled on 97.2% to 98.1% and an installer reply appeared on 18.6%.
  • EnergySage marked 65.0% of those 360 reviews as written by a verified shopper.
  • EnergySage's state and city pages list 200 unique installers, counted across all 50 state pages on 23 September 2026.
  • EnergySage's supplier directory has 6,822 profiles, but only 13 of 33 sampled profiles offered installation.
  • EnergySage publishes solar cost per watt, system price and payback per state and city, never per installer.
On this page8 sections

EnergySage is a marketplace where homeowners compare solar quotes, so what it publishes about an installer is what a homeowner needs to choose one: tier, rating, reviews with sub-ratings, credentials and how to get in touch. What follows is what that looks like as data, with the sample behind every rate.

Three kinds of row, one per run

The EnergySage Scraper returns one row type per run, chosen with outputType, so a table never mixes companies with reviews:

outputTypeOne row isMeasured on
installersA solar installer company200 installers
reviewsOne customer review360 reviews of 15 installers
locationsA state or city page with its solar cost data150 state and city pages

All three samples were taken on 23 September 2026.

What an EnergySage review contains

Every one of the 360 reviews had an id, the installer id, a title, the text, an overall rating, a date and the reviewer's public alias. The four sub-ratings were nearly always there:

FieldFilled, n=360
rating_value98.1%
rating_responsiveness97.8%
rating_quality97.5%
rating_service97.2%
verified_shopper true65.0%
installer_response18.6%

Sub-ratings are what make these reviews more useful than a star average: an installer can score well on quality and badly on responsiveness, and the overall number hides which. The verified-shopper flag is EnergySage's own label; its method is not something this project checked. Reviewers appear under the alias EnergySage shows, never an internal id, and a phone number or email typed into a review is replaced before delivery.

EnergySage serves reviews twelve at a time, and the largest installer has over 500. maxReviewsPerInstaller defaults to 24; 0 reads them all.

200 installers, not 6,822

EnergySage's state pages each list every installer it has active in that state. Across all 50 state pages that came to 200 unique installers. Alaska has no page.

The supplier directory is larger — 6,822 profiles — and it is tempting to call that the installer list. It is not: in a sample of 33 directory profiles, 13 offered installation, and the directory also holds manufacturers, lenders and inactive companies. The sample is too small to turn into a precise percentage, but large enough to say the directory is mostly not installers. source: directory walks it, with onlyInstallers on by default.

Business contacts and credentials, measured

With scrapeDetails: true, each of the 200 installers gets its profile page read:

FieldFilled, n=200
Website99.5%
Phone99.0%
Email96.5%
Licenses, with numbers when published92.0%
Certifications (NABCEP and others)83.5%
Insurance78.0%
Financing partners65.0%

These are business contacts the installers publish on EnergySage to win customers, which is a different footing from contacts inferred or reconstructed elsewhere. It is still a list of companies, not of homeowners wanting solar. For the general version of building a local B2B list, see local lead generation from Nextdoor.

Solar cost is published per place, not per installer

EnergySage prices solar per state and city: cost per watt, median cost per watt, average system size and price, payback years and lifetime savings. On the 150 measured location pages the cost fields were filled on all of them and payback on 96.0%. The California page, checked on 10 October 2026, gave $2.52/W, stated as before any available incentives — which is the detail to carry into any comparison, because a figure with incentives deducted is a different number.

No per-installer price exists to extract. A location row carries the installers EnergySage ranks on that page, which is as close as the source gets to joining price and company.

Why profile and review runs are slow

Location pages are cached and read in parallel. Installer profiles and reviews are not: rate limiting was measured at four parallel requests and none at one request every 1.5 seconds, so the Actor reads them one at a time, about 40 per minute. A 200-installer census with profiles made about 200 requests in 328 seconds with no HTTP 429 or 403. Asking for more speed would mean hunting for the ceiling on somebody else's server.

robots.txt on two hosts, and the terms

EnergySage serves two robots.txt files, and they say very different things — the same lesson as reading robots.txt per host:

local-data.energysage.com/robots.txt — the whole file
User-agent: *
Disallow: /

The www host disallows a dozen paths — /market/, /search/, /supplier/search/?* among them — and not the supplier profiles or the review endpoint. The local-data host disallows everything, and it is where the state and city payloads live: location rows and the default installer list come from it. EnergySage's terms separately prohibit automated access other than RSS and features provided for it, without express written permission.

What a run costs

$0.00045 per installer, $0.0004 more for the full profile, $0.0003 per review, $0.004 per location and $0.00001 per start. A thousand installers with phone, email and website cost $0.85. Error rows and duplicates are never charged. How EnergySage compares with BBB and Thumbtack as a reputation source is in the cluster overview, and why a Thumbtack list has no contacts at all is in the Thumbtack guide.

Frequently asked questions

Are EnergySage reviews verified?
Some are. EnergySage flags reviews from verified shoppers, and the flag was true on 65.0% of 360 reviews measured across 15 installers. The flag is EnergySage's own label, and its method is not something this project has checked.
How many reviews does an EnergySage installer have?
EnergySage reviews vary widely by installer; the largest installer measured has over 500. EnergySage serves them 12 at a time, and the EnergySage Scraper's `maxReviewsPerInstaller` set to 0 reads all of them.
Does EnergySage show what each installer charges?
No. EnergySage publishes cost per watt, average system size and price and payback per state and city, not per company. A location row carries those figures together with the installers EnergySage ranks there.
Is the EnergySage installer list a list of solar leads?
EnergySage's installer list is a list of companies that install solar, with their published business contacts. It contains no homeowners looking for solar, so it is B2B prospecting data rather than consumer leads.

Sources

Every URL below was requested and returned a page on the date shown.

  1. Operator claimchecked 10 Oct 2026
    EnergySage Scraper — Actor README and input schemaActorStack / Apify Store
  2. Site declarationchecked 10 Oct 2026
    energysage.com/robots.txtEnergySage
  3. Site declarationchecked 10 Oct 2026
    local-data.energysage.com/robots.txtEnergySage
  4. Operator claimchecked 10 Oct 2026
    EnergySage Terms of UseEnergySage
  5. Operator claimchecked 10 Oct 2026
    Cost of solar panels in CaliforniaEnergySage
A laptop screen showing a plain text-mode terminal with a command prompt.
Local servicesGuide

Ratings vs reviews vs complaints

Three US sources of service-business reputation data, and why they are not interchangeable: a BBB letter grade ignores reviews, Thumbtack has reviews and demand but no contact details, and EnergySage prices places rather than installers.

8 min
A laptop screen showing a plain text-mode terminal with a command prompt.
Local servicesGuide

Thumbtack API

Thumbtack's API is a partner platform for integrations, not a data export. What its public pages hold, why three quarters of the professionals are behind a button, why page 2 is page 1, and why no tool can return a pro's phone number.

8 min
A laptop screen showing a plain text-mode terminal with a command prompt.
Local servicesGuide

Better Business Bureau API

BBB runs an API that requires approval and restricts complaint and review data to internal use. What the public site serves instead — a search box, category pages, profile pages and 575 sitemap files — and why the search box is the wrong sample.

8 min