# Solar Leads Scraper — PV Contractor Leads (`intelscrape/solar-leads-scraper`) Actor

Extract newly issued building permits for solar and photovoltaic installations across 1000+ US cities. High-intent homeowner and contractor leads.

- **URL**: https://apify.com/intelscrape/solar-leads-scraper.md
- **Developed by:** [IntelScrape](https://apify.com/intelscrape) (community)
- **Categories:** Lead generation, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $50.00 / 1,000 dataset items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## ☀️ Solar Leads Scraper — Solar Installers & Electrical Leads

![Solar Leads Hero Banner](https://n.uguu.se/LqFGyJdq.png)

![price](https://img.shields.io/badge/price-$20.00_/_1K-2ea44f) ![billing](https://img.shields.io/badge/billing-pay_only_for_leads-2ea44f) ![API key](https://img.shields.io/badge/API_key-not_required-blue) ![coverage](https://img.shields.io/badge/coverage-1000+_Cities-8a2be2) ![leads](https://img.shields.io/badge/leads-b2b_borrowers-blue) ![rating](https://img.shields.io/badge/rating-5.0★-ffc107)

***

#### 🏆 Featured Bots by IntelScrape

1. **[Skip Trace PRO](https://apify.com/intelscrape/skip-trace-pro)** — Name, Address, Phone & Email People Lookup
2. **[Solar Leads Scraper](https://apify.com/intelscrape/solar-leads-scraper)** — Solar Installers & Electrical Leads
3. **[MCA Leads Scraper PRO](https://apify.com/intelscrape/mca-leads-scraper-pro)** — MCA, B2B & Equipment Finance Leads
4. **[Amazon Product & Review Scraper](https://apify.com/intelscrape/amazon-product-review-scraper)** — Deep E-commerce & Review Extraction
5. **[Google Maps Email Extractor](https://apify.com/intelscrape/google-maps-email-extractor)** — Local Business B2B Lead Generation

***

⚡ **Use this Actor in n8n — no code**

Building no-code workflows in [n8n](https://n8n.io)? It works natively! Use the official **Apify** node to drop this Actor straight onto your canvas.

**Setup (30 seconds):**

1. In n8n, add the official **Apify** node to your workflow.
2. Connect your **Apify API token** in the credentials.
3. Select **Run an Actor**, and paste this actor's ID: `IntelScrape/solar-leads-scraper`.
4. Fill in the JSON input and run!

**Extract newly issued building permits for solar and photovoltaic installations across 1000+ US cities automatically.** High-intent homeowner and contractor leads perfect for solar installers, equipment vendors, and contractors.

***

> 🧭 Built for **Solar Installers, Electrical Contractors, and Equipment Vendors.**

> ⭐ **Rated 5.0★ by daily power users.** If Solar Leads Scraper saves your sales team hours of prospecting, please take 10 seconds to [leave a 5-star review](https://console.apify.com/actors) — it helps us add more features and keeps the engine running. Thank you! 🙏

> ⚖️ **Lawful business use only.** This Actor only returns information that is already **publicly available** via government public records.

> 📌 *All names, addresses, phone numbers and emails shown in this documentation are **fictional examples** for illustration only and do not refer to any real business.*

***

### ☀️ Solar Leads Scraper — why this one

Extract highly-qualified, high-intent Solar leads directly from government building portals.

| Feature | This Actor | Typical others |
| :--- | :--- | :--- |
| **Price** | **Pay-Per-Event (Only successful)** | $250-1,000+/mo data brokers |
| **Contact Enrichment** | ✅ | ❌ |
| **Instant CRM Webhooks**| ✅ | Manual CSV downloads only |
| **Multi-Portal Discovery** | ✅ | Single city only |
| **Pay Only for Verified**| ✅ | Pay for junk/empty rows |

Public-records data • lawful B2B use only

***

### 🖼️ What a result looks like

One dataset record per extracted building permit. *(Illustrative example — fictional data.)*

| Address | Permit Type | Estimated Value | Contractor | Enriched Contact |
| :--- | :--- | :--- | :--- | :--- |
| **123 Maple St, Dallas** | Solar / Photovoltaic | $25,000 | SunPower Pro | (555) 019-2931 <br> *sunpowerpro.com* |
| **882 Oak Ave, Austin** | Solar Installation | $45,000 | Tesla Energy | info@teslaenergy.com |
| **991 Pine Rd, Miami** | Photovoltaic System | $18,500 | Bright Solar | (555) 812-3391 |

💡 On the Actor page, results render in this table automatically (the **Output** tab) and export to **CSV / Excel / JSON / API** in one click.

***

### ⭐ Why this Solar Scraper

| | |
| :--- | :--- |
| 🎯 **High-Intent Homeowners** | Homeowners actively pulling permits for Solar installation. |
| 🧩 **Contractor Enrichment** | Automatic Google Maps extraction for contractor contacts. |
| 🥇 **Dynamic Matrix Crawler** | Auto-discovers Socrata, Accela, and Tyler portals automatically. |
| ✅ **Contact Enrichment** | Add phone numbers, website URLs, and decision-maker LinkedIn profiles to contractors. |
| 💸 **Pay-Per-Event Billing** | You are ONLY charged for a **Verified Lead**. You will never be charged for junk rows or empty records. |

***

### ⚡ Quick start

```json
{
  "state": "All States",
  "permitType": "Solar / Photovoltaic",
  "timePeriod": "Last 30 days",
  "maxResults": 100,
  "enrichmentLevel": "none"
}
```

Run it — each matched filing comes back as one highly enriched record. That's it.

### ✅ What you get per lead

- 🏡 **Location** — Exact Address, City, State, Zip Code, Latitude & Longitude
- 📜 **Permit Details** — Permit Number, Issue Date, Status
- 💰 **Project Value** — Estimated Cost of the installation
- 👷 **Contractor Info** — Contractor Name
- 📞 **Enriched Contact** — Verified Phone Number, Website, and Email *(when enrichment is enabled)*
- 📈 **Gentrification Signal** — Calculated development activity score

All for one flat rate — **Pay-Per-Event**.

***

### 🛡️ The 99.9% Uptime Guarantee (Why We Are Superior)

Read the reviews of our competitors. You will see the exact same complaints: *"Only supports one city", "Data is missing phone numbers", "Stale data from 6 months ago."*

**Why does that happen?** Because cheap competitors buy stale database dumps from third-party brokers and try to resell them as fresh leads.

**Solar Leads Scraper is different.** We dynamically discover and query Socrata, Accela, and Tyler Tech municipal portals in real-time using our Universal Discovery Core. Our pipelines are built for enterprise scale, processing 100,000+ records automatically without any manual intervention. We guarantee 99.9% enterprise uptime.

***

### 💰 How To Make Money With This API (Clear ROI)

If you are generating verified Solar leads, you need to know how to turn that into massive commissions. Here are the top ways our clients monetize this API:

#### 1. Solar Installers & EPCs

Run the scraper daily for newly issued solar permits. These homeowners have already decided to go solar. Call the contractors listed and offer subcontracting services, or reach out to the homeowners directly to offer competitive bids or maintenance plans.

#### 2. Equipment & Material Vendors

Filter for high-value solar projects. These contractors are actively buying panels, inverters, and racking systems. Use our Contact Enrichment to get their phone number and pitch them better wholesale pricing on their equipment.

#### 3. Automated B2B Sales Pipelines

Combine this Apify Actor with GoHighLevel via Webhook. The moment a new solar permit is issued, automatically inject the contractor into a multi-channel cold email and SMS sequence offering your specialized software, insurance, or marketing services.

***

### 💡 How to Maximize Your Export in Excel

This scraper natively exports a perfectly flattened, optimized CSV. To get the most out of your data in seconds:

1. **Filter by Project Value:** Open the CSV and filter the **`estimatedValue`** column to find the largest, most lucrative solar installations.
2. **Highlight Enriched Contacts:** Sort the **`enrichedPhone`** column to instantly prioritize contractors that are dial-ready for your sales floor.

***

### 🚀 SEO Keywords

Solar leads, photovoltaic permits, solar installer data, building permit scraper, contractor leads, renewable energy leads, electrical permits, homeowner leads, construction data, Socrata permit scraper.

***

> 🇹🇼 🇸🇬 **中文 (Chinese / Singapore Summary):**
> 本工具 (Solar Leads Scraper) 专门从美国官方政府建筑许可记录中，实时抓取正在申请或已获批“太阳能/光伏 (Solar/Photovoltaic)”安装许可的房主和企业数据。这是最高意向的太阳能安装和电气承包商潜在客户！内置自动提取电话、电子邮件以及 LinkedIn 决策者联系方式的功能。助您精准定位高质量客户，大幅提升销售转化率！

***

#### ⭐️ Leave a 5-Star Review!

**Love this Actor?** Please consider leaving a **5-star review**! Your feedback is incredibly important to us and helps us keep the tool constantly updated, reliable, and running smoothly. If you have any feature requests, let us know in the Issues tab!

# Actor input Schema

## `city` (type: `string`):

Enter a US city name (e.g., Dallas, Chicago, Miami). Leave empty to search entire state or nationwide.

## `extractTop100` (type: `boolean`):

Bypass manual search and autonomously scan all 100 largest municipal databases sequentially using the Universal Discovery Core.

## `extractStateMatrix` (type: `boolean`):

Execute sequentially across all 50 US States autonomously extracting Socrata instances and injecting Walled-Garden targets. Extremely intensive.

## `state` (type: `string`):

Select a US State. Highly recommended for finding smaller cities.

## `permitType` (type: `string`):

What kind of permits are you looking for?

## `timePeriod` (type: `string`):

How far back do you want to search?

## `minCost` (type: `integer`):

Only show permits with estimated cost above this amount.

## `maxResults` (type: `integer`):

Maximum number of permit records to return.

## `addressFilter` (type: `string`):

Filter by street name (e.g., Broadway, Main St).

## `incrementalMode` (type: `boolean`):

If enabled, the scraper remembers past runs and only returns newly discovered permits.

## `enrichmentLevel` (type: `string`):

Enhance your leads with verified contact info. Charges apply only on successful match.

## `enableCensusGeocoding` (type: `boolean`):

If a city portal fails to provide latitude/longitude, automatically geocode the address using the US Census Bureau API.

## `enableContractorRollup` (type: `boolean`):

Group permits by contractor to output aggregate statistics (permit count, total valuation, most recent date).

## `webhookUrl` (type: `string`):

Optional webhook URL to POST results to when the run completes.

## `csvUrl` (type: `string`):

Provide a link to a raw CSV file (e.g. Google Sheets Export) containing 'City' or 'Location' headers to process huge lists automatically.

## `maxCities` (type: `integer`):

When searching all cities: how many city portals to query.

## `maxPerCity` (type: `integer`):

Maximum records to fetch from each city portal.

## Actor input object example

```json
{
  "city": "Chicago",
  "extractTop100": false,
  "extractStateMatrix": false,
  "state": "All States",
  "permitType": "Solar / Photovoltaic",
  "timePeriod": "Last 30 days",
  "maxResults": 100,
  "incrementalMode": false,
  "enrichmentLevel": "none",
  "enableCensusGeocoding": true,
  "enableContractorRollup": false,
  "maxCities": 50,
  "maxPerCity": 50
}
```

# Actor output Schema

## `city` (type: `string`):

City name where the permit was issued

## `state` (type: `string`):

US state abbreviation

## `permitNumber` (type: `string`):

Official permit reference number

## `address` (type: `string`):

Property street address

## `permitType` (type: `string`):

Classified permit category (NEW\_CONSTRUCTION, RENOVATION, DEMOLITION, etc.)

## `estimatedValueFormatted` (type: `string`):

Dollar-formatted project cost estimate

## `status` (type: `string`):

Current permit status

## `issueDate` (type: `string`):

Date the permit was issued

## `contractor` (type: `string`):

Contractor or applicant name

## `zipCode` (type: `string`):

Property zip code

## `source` (type: `string`):

Source portal identifier

## `description` (type: `string`):

Permit work description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "city": "Chicago",
    "enrichmentLevel": "none"
};

// Run the Actor and wait for it to finish
const run = await client.actor("intelscrape/solar-leads-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "city": "Chicago",
    "enrichmentLevel": "none",
}

# Run the Actor and wait for it to finish
run = client.actor("intelscrape/solar-leads-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "city": "Chicago",
  "enrichmentLevel": "none"
}' |
apify call intelscrape/solar-leads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,intelscrape/solar-leads-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/hQcHkgwYnnahUCHhi/builds/2L4lvFx2uHTsFvhEf/openapi.json
