# US Solar Farm Locations & Specs: Radius Search (USPVDB Data) (`bigsky-data-tools/us-solar-farm-database`) Actor

Returns every U.S. Large-Scale Solar PV Database facility within a radius of your parcel or substation, nearest first, with AC/DC MW and online year. Also acres, tracking, tilt, battery flag and EIA plant ID; filter by state, year and size.

- **URL**: https://apify.com/bigsky-data-tools/us-solar-farm-database.md
- **Developed by:** [BigSky Data Tools](https://apify.com/bigsky-data-tools) (community)
- **Categories:** Real estate
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 83.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## US Solar Farm Locations & Specs: data from the U.S. Large-Scale Solar Photovoltaic Database (Radius Search, MW, Acres, Tracking, Battery)

Get **every large ground-mounted solar facility in the United States** (about 6,600 sites of 1 MW and up) from **U.S. Large-Scale Solar Photovoltaic Database (USPVDB)** data: coordinates, project name, online year, AC and DC capacity in MW, footprint in acres, tracking type, tilt and azimuth, co-located battery storage, agrivoltaic flag, balancing authority and EIA plant ID. **No API key, no login.** Published by BigSky Data Tools.

> **Reference data only: USPVDB is updated periodically and may lag or omit facilities; verify against the official USPVDB (energy.usgs.gov/uspvdb) and EIA records before relying on it.**

### Why use this solar farm data tool?

- 📍 **Radius search, nearest first**: "every solar farm within 20 miles of this parcel, substation or data-center site". Each row has `distanceMiles`.
- ⚡ **Size and design specs**: `capacityAcMw`, `capacityDcMw`, `areaAcres`, `axis` (fixed-tilt, single-axis, dual-axis), `tilt`, `azimuth`, panel technology.
- 🔋 **Battery filter**: `hasBattery` flags solar + storage hybrids.
- 🔎 Filters: states, project name, online year range, minimum MW, tracking type.
- 🔗 **Join key**: `eiaPlantId` links to EIA generation and ownership data.

### How it compares

In our Apify Store search on 2026-10-31 we did not find another Actor offering all of the features marked **Yes** below together; some alternatives offer individual features, as the "Typical alternatives" column shows. The Store may have changed since.

| | This tool | Typical alternatives |
|---|---|---|
| USPVDB facility footprints and design specs | **Yes** | No (EIA plant lists) |
| Radius search, nearest first | **Yes** | No |
| Tracking, tilt, azimuth, battery flag | **Yes** | No |
| EIA plant ID join key | **Yes** | Yes |

### Who uses it

Solar and storage developers scouting land and interconnection, land agents and appraisers, O\&M, panel-cleaning, vegetation and security vendors, tracker and inverter sellers, insurers, utilities and grid planners, real-estate buyers checking nearby solar farms, and energy researchers.

### Input example

```json
{ "latitude": "35.2271", "longitude": "-80.8431", "radiusMiles": 30 }
```

Large solar + storage in two states: `{ "states": ["CA", "AZ"], "withBatteryOnly": true, "minCapacityMw": 50, "axis": "single-axis" }`

### Output example

```json
{ "caseId": 400540, "projectName": "McCoy Solar Energy Project Hybrid", "projectYear": 2016, "state": "CA", "county": "Riverside",
  "latitude": 33.7017, "longitude": -114.7558, "distanceMiles": null, "capacityAcMw": 270.6, "capacityDcMw": 339.3,
  "areaM2": 6954929, "areaAcres": 1718.6, "technology": "PV", "panelTechnology": "thin-film", "axis": "single-axis",
  "azimuth": 0, "tilt": 0, "hasBattery": true, "siteType": "greenfield", "agrivoltaic": "non-agrivoltaic",
  "powerRegion": "CISO", "eiaPlantId": 58462, "imageDate": 20210815, "digitizationConfidence": 4,
  "source": "U.S. Large-Scale Solar Photovoltaic Database (USGS/LBNL)", "sourceUrl": "https://energy.usgs.gov/uspvdb/" }
```

Export to JSON, CSV, Excel or XML, or use the Apify API, Make, Zapier or n8n.

### Pricing

**$7 per 1,000 results** ($0.007 per result) plus a $0.01 start fee per run.

Pay per result: you pay for each solar facility saved to the dataset. A radius search usually returns a few dozen sites; the whole country is about 6,600. Use `maxResults` to cap your spend. Free-plan users can try it within their monthly platform credit.

Apify's per-run maximum charge setting also limits results: for example, a $4.44 limit allows about 632 rows. Raise it in the run options for a full pull.

### FAQ

**Where does the data come from?** From the public API of the U.S. Large-Scale Solar Photovoltaic Database, maintained by the U.S. Geological Survey and Lawrence Berkeley National Laboratory. Source data are works of the U.S. federal government (USGS, with Lawrence Berkeley National Laboratory) and generally not subject to U.S. copyright (17 U.S.C. 105). LBNL is a contractor-operated laboratory, so its contributions may not be federal works. This is not a license or warranty; third-party or foreign rights may apply. You are responsible for how you use the data.
**What is covered?** Ground-mounted PV facilities of roughly 1 MW AC or more. Rooftop and small community solar are not included.
**How current is it?** USPVDB is updated periodically (roughly yearly). Very new projects may lag.
**Why are some fields empty?** USPVDB leaves some attributes (tilt, azimuth, axis, panel technology) blank for some facilities. Each row's `attributeNote` names every empty field: `not reported in USPVDB for this facility`, `not applicable: dual-axis trackers have no fixed tilt`, or for `distanceMiles` `not applicable: no search center given`. It is null when nothing is empty.
**Is this tool run by the data agency?** No. BigSky Data Tools is independent and not affiliated with or endorsed by USGS or LBNL.

**Is the data guaranteed?** No. The tool and data are provided as is, without warranty of accuracy, completeness or timeliness, and values can differ from the source agency's official products.

# Actor input Schema

## `states` (type: `array`):

Two-letter state codes. Leave empty for all states (about 5,000+ facilities).

## `latitude` (type: `string`):

Optional. With longitude and radius, returns solar farms near this point, nearest first (e.g. 35.2271 for Charlotte, NC).

## `longitude` (type: `string`):

Optional, e.g. -80.8431.

## `radiusMiles` (type: `integer`):

Search radius around the center point.

## `projectName` (type: `string`):

Optional text match on project name.

## `minYear` (type: `integer`):

Optional. Year the facility came online, from.

## `maxYear` (type: `integer`):

Optional. Year the facility came online, to.

## `minCapacityMw` (type: `integer`):

Skip facilities smaller than this AC capacity.

## `axis` (type: `string`):

Filter by tracking type.

## `withBatteryOnly` (type: `boolean`):

Return only facilities with co-located battery storage recorded.

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

Maximum facilities to save (each saved facility is one billable result).

## Actor input object example

```json
{
  "states": [
    "TX"
  ],
  "radiusMiles": 25,
  "minCapacityMw": 0,
  "axis": "any",
  "withBatteryOnly": false,
  "maxResults": 10000
}
```

# Actor output Schema

## `dataset` (type: `string`):

Default dataset containing all output records

# 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 = {
    "states": [
        "TX"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("bigsky-data-tools/us-solar-farm-database").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 = { "states": ["TX"] }

# Run the Actor and wait for it to finish
run = client.actor("bigsky-data-tools/us-solar-farm-database").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 '{
  "states": [
    "TX"
  ]
}' |
apify call bigsky-data-tools/us-solar-farm-database --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,bigsky-data-tools/us-solar-farm-database"
        }
    }
}
```

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/XFFRB2bbx5aDxDoeI/builds/6OiByXgMGP07gSsbl/openapi.json
