# PlugShare EV Charging Stations (`bovi/plugshare-scraper`) Actor

Collect public EV charging locations from PlugShare by search query or coordinates. Returns addresses, connectors, station counts, power ratings, status, and optional location details.

- **URL**: https://apify.com/bovi/plugshare-scraper.md
- **Developed by:** [Vitalii Bondarev](https://apify.com/bovi) (community)
- **Categories:** Travel, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.45 / 1,000 plugshare ev charging stations

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

## PlugShare EV Charging Stations Scraper

Collect public electric vehicle charging locations from PlugShare. Search by a station, network, or place name, or provide latitude and longitude to search within a radius. Each result can include its location URL, name, address, coordinates, connector types, station counts, fast charger status, and the power rating available in the station data. Turn on location details to request station and outlet data, amenities, access details, public reviews, and photo URLs when PlugShare provides them.

### Input

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `searchQuery` | string | `San Francisco` | Station, network, or place to search. |
| `maxResults` | integer | `50` | Maximum records to return. |
| `latitude` / `longitude` | number | — | Provide both to search by coordinates. |
| `radiusKm` | number | `50` | Coordinate search radius, from 1 to 500 km. |
| `connectorType` | string | — | Optional exact connector filter, such as `CCS1` or `J-1772`. |
| `fastChargersOnly` | boolean | `false` | Keep locations PlugShare identifies as fast chargers. |
| `includeDetails` | boolean | `false` | Request available location and station detail fields. |
| `proxyConfiguration` | object | disabled | Optional Apify proxy configuration. No proxy is used by default. |

When both coordinates are supplied, the coordinate search takes priority over `searchQuery`. Connector and fast charger filters are applied to the returned PlugShare records. The actor does not require a PlugShare account.

### Example output

This location record was observed in PlugShare's public map data:

```json
{
  "id": 478737,
  "url": "https://www.plugshare.com/location/478737",
  "name": "1550 Mission St Parking Garage",
  "address": "90 11th St, San Francisco, CA 94103, USA",
  "latitude": 37.77382618816251,
  "longitude": -122.41837886808266,
  "connector_types": ["J-1772"],
  "station_count": 34,
  "is_fast_charger": false
}
```

The overview view shows the location, address, connector types, station count, power when available, fast charger status, score, and coordinates. The full dataset also contains nested station and outlet information. Optional detail mode includes sanitized public review fields without reviewer profile data.

### Price per result

The champion listing's reference rate is **$0.0055 per result** at the free tier. Apify Store billing for this actor is configured separately; the actor does not call `Actor.charge`.

Export the resulting dataset as JSON, CSV, Excel, or another format supported by Apify. The actor only emits fields present in PlugShare's responses and omits absent or empty values.

# Actor input Schema

## `searchQuery` (type: `string`):

Search PlugShare locations by station, network, or place name. Coordinates take priority when both latitude and longitude are provided.

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

Maximum number of location records to collect.

## `latitude` (type: `number`):

Center latitude for a radius search. Provide this together with longitude.

## `longitude` (type: `number`):

Center longitude for a radius search. Provide this together with latitude.

## `radiusKm` (type: `number`):

Maximum distance from the coordinate center. The value is limited to 1–500 km.

## `connectorType` (type: `string`):

Optional exact connector filter, for example CCS1, CHAdeMO, or J-1772.

## `fastChargersOnly` (type: `boolean`):

Keep only locations PlugShare marks as fast chargers.

## `includeDetails` (type: `boolean`):

Fetch available station, amenity, review, photo, and access details for each result.

## `proxyConfiguration` (type: `object`):

Optional Apify proxy settings. Requests run without a proxy unless one is enabled here.

## Actor input object example

```json
{
  "searchQuery": "San Francisco",
  "maxResults": 50,
  "radiusKm": 50,
  "fastChargersOnly": false,
  "includeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

Compact table of PlugShare locations.

## `fullData` (type: `string`):

All location fields returned by the parser.

# 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 = {
    "searchQuery": "San Francisco",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("bovi/plugshare-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 = {
    "searchQuery": "San Francisco",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("bovi/plugshare-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 '{
  "searchQuery": "San Francisco",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call bovi/plugshare-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,bovi/plugshare-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/8UDvs7HFmwPrKaHVT/builds/qobfnZFBPOuVSX7pk/openapi.json
