# PlugShare EV Charging Station Scraper (`crawlerbros/plugshare-scraper`) Actor

Scrape PlugShare's crowd-sourced EV charging station map - user check-ins, reviews, ratings, live outlet-availability status, PlugScore, and user photos, alongside station address, connectors, network, and pricing.

- **URL**: https://apify.com/crawlerbros/plugshare-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, Developer tools, Integrations
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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

## PlugShare EV Charging Station Scraper

Scrape PlugShare — the largest crowd-sourced EV charging station locator,
built on driver check-ins, reviews, and photos rather than a static
directory. Search by location or coordinates, or pull full station detail,
community reviews, or user photos by station ID. No login, no API key, no
paid proxy required.

### What this actor does

- **Four modes:** `search` (location + radius), `byId` (direct station
  lookup), `reviews` (flattened community check-ins/reviews), `photos`
  (flattened user photos)
- **Location input:** exact latitude/longitude, or a free-text place name
  (automatically geocoded)
- **Community data, front and center:** driver check-ins with a
  working/broken rating, free-text comments, reported problems, the
  vehicle used, operator replies, helpful-vote counts, a 0-10 "PlugScore"
  community confidence rating, and user-submitted photos
- **Live-ish station detail:** per-outlet status (available / charging /
  out of order) and the timestamp of the last community-reported update
- **Filters:** connector type, network/operator, min/max power, access
  type, free-charging only, currently-available only, minimum PlugScore,
  minimum review count, nearby amenities, point-of-interest type, parking
  attributes, and brand-restriction exclusions
- **Empty fields are omitted** — every record contains only the data
  PlugShare's community actually contributed for that station

### How this differs from our Open Charge Map scraper

Our [Open Charge Map scraper](https://apify.com/crawlerbros/openchargemap-scraper)
covers Open Charge Map's global **static directory** of charging stations —
address, connectors, and operator-published metadata contributed once and
rarely updated. This actor instead scrapes **PlugShare**, an EV-driver
community app: its data is built from real driver check-ins, so every
record here can carry a PlugScore confidence rating, dated driver
reviews/ratings, reported outlet problems, operator replies to those
reviews, community-submitted photos, and outlet-level availability status
as last reported by an actual driver — none of which exist in a
static-directory dataset.

### Output per charging station (mode=search / byId)

- `locationId`, `sourceUrl` — PlugShare's station page
- `name`, `address`, `latitude`, `longitude`, `distanceKm` (mode=search)
- `poiType` — e.g. "Parking Garage/Lot", "Shopping Center"
- `accessType` — Public / Restricted / Private Home
- `accessRestrictions[]` — e.g. "Tesla Only", "Customers Only"
- `status`, `comingSoon`, `underRepair`, `confidenceLevel`
- `stationCount`, `connectorTypes[]`, `isFastCharger`
- `hasCost`, `costDescription`, `hasDynamicPricing`
- `parkingType`, `parkingAttributes[]`, `amenities[]`
- `open247`, `regularHours`, `phone`, `overheadClearanceMeters`
- `plugscore` — PlugShare's 0-10 community confidence rating
- `totalReviews`, `totalPhotos`
- `networks[]` — distinct charging-network operators on site
- `stations[]` — one entry per physical charging point: `stationId`,
  `name`, `networkName`, `networkUrl`, `cpoName`, `availableCount`,
  `lastAvailabilityUpdate`, `kilowatts`, `costPerUnit`, `costDescription`,
  `outlets[]` (`connectorType`, `status`, `kilowatts`, `amps`, `volts`,
  `isDcFastCharge`)
- `reviews[]` — community check-ins: `reviewId`, `createdAt`, `rating`,
  `ratingLabel` (Confirmed Working / Reported Problem / Comment),
  `problemType`, `comment`, `connectorType`, `kilowatts`, `amps`, `volts`,
  `reportedWaiting`, `vehicleName`, `vehicleMake`, `reviewerDisplayName`,
  `operatorResponse` (title/message/date), `helpfulVotes`, `language`
- `photos[]` — `photoId`, `photoUrl`, `thumbnailUrl`, `thumbnailUrl2x`,
  `caption`, `createdAt`, `language`
- `createdAt`, `updatedAt`
- `recordType: "chargingStation"`, `scrapedAt`

### Output per review (mode=reviews)

Same review fields as above, plus `locationId`, `locationName`,
`sourceUrl`, `stationId`; `recordType: "review"`.

### Output per photo (mode=photos)

Same photo fields as above, plus `locationId`, `locationName`,
`sourceUrl`; `recordType: "photo"`.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `search` | `search` / `byId` / `reviews` / `photos` |
| `locationQuery` | string | `Los Angeles, CA` | Place name to geocode (mode=search) |
| `latitude` / `longitude` | number | – | Exact search center; overrides `locationQuery` |
| `radiusKm` | integer | `25` | Search radius in km (mode=search) |
| `stationIds` | array | – | Numeric PlugShare location IDs, or full station URLs (mode=byId/reviews/photos) |
| `connectorTypes` | array (enum) | – | Filter by connector type(s) |
| `networks` | array (enum) | – | Filter by charging network(s) (curated common list) |
| `minPowerKW` / `maxPowerKW` | integer | – | Filter by fastest outlet's power |
| `accessType` | string (enum) | `publicAndRestricted` | Public / Public+Restricted / all (incl. private home) |
| `freeOnly` | boolean | `false` | Only stations with no published cost |
| `availableNowOnly` | boolean | `false` | Only stations with an outlet reported available now |
| `minStationCount` | integer | – | Minimum physical stations at the location |
| `minPlugscore` | integer | – | Minimum PlugScore (0-10) |
| `minReviewCount` | integer | – | Minimum community review count |
| `amenities` | array (enum) | – | Filter by nearby amenities |
| `poiTypes` | array (enum) | – | Filter by point-of-interest type |
| `parkingAttributes` | array (enum) | – | Filter by parking attributes |
| `excludeAccessRestrictions` | array (enum) | – | Exclude brand-restricted stations (e.g. Tesla-only) |
| `includeReviews` | boolean | `true` | Embed community reviews/check-ins in each station record |
| `includePhotos` | boolean | `true` | Embed user photos in each station record |
| `maxReviewsPerStation` | integer | `10` | Cap on embedded/emitted reviews per station |
| `maxPhotosPerStation` | integer | `5` | Cap on embedded/emitted photos per station |
| `maxItems` | integer | `20` | Hard cap on emitted records (1-500) |

#### Example: fast chargers near a city, with community data

```json
{
  "mode": "search",
  "locationQuery": "Austin, TX",
  "radiusKm": 20,
  "connectorTypes": ["ccs1", "nacsTesla"],
  "minPlugscore": 6,
  "maxItems": 30
}
````

#### Example: read the community reviews for specific stations

```json
{
  "mode": "reviews",
  "stationIds": ["7057", "478737"],
  "maxItems": 50
}
```

#### Example: pull user-submitted photos for a station

```json
{
  "mode": "photos",
  "stationIds": ["7057"]
}
```

#### Example: look up specific stations by ID

```json
{
  "mode": "byId",
  "stationIds": ["7057", "478737"]
}
```

### Use cases

- **EV route planning tools** — layer in real driver-confirmed
  availability, not just a static connector list
- **Trust & reliability research** — surface reported problems and
  operator responses per network or per location
- **Fleet management** — check current outlet status and recent check-ins
  before routing a vehicle to a charger
- **Market research** — compare community sentiment (PlugScore, review
  volume) across networks or regions
- **Site selection** — assess EV charging density and driver satisfaction
  around a property

### Data source / limitations

This actor uses PlugShare's public v3 REST API (`api.plugshare.com/v3`) —
the same backing API PlugShare's own web map at plugshare.com calls from
every visitor's browser. It does not require a PlugShare account: the
actor uses the same public client identity PlugShare's own web app ships
to every anonymous visitor, so every user of this actor gets full public
data access with zero configuration. Registering a PlugShare account only
unlocks extra personal features (trip planning, saved vehicles); it is not
required for any data this actor returns.

- **Per-query cap:** PlugShare's `/locations/nearby` endpoint returns at
  most 500 stations per search, which is why `maxItems` is capped at 500.
- **Network filter is curated, not exhaustive.** PlugShare tracks
  hundreds of distinct network records; the `networks` filter covers the
  most commonly searched ones. Every station's own `networks` output
  field is still returned regardless of whether it matches the filter.
- **Geocoding:** free-text `locationQuery` values are resolved to
  coordinates via the public OpenStreetMap Nominatim API (also keyless).
- **Community data is only as complete as PlugShare's contributors.**
  `plugscore`, `totalReviews`, `reviews[]`, and `photos[]` are omitted for
  stations with no community activity yet — this reflects PlugShare's own
  data, not a scraping gap.
- **Reviewer identity:** only each reviewer's public PlugShare display
  name is included (the same name shown on plugshare.com itself); no
  private contact information is ever exposed by PlugShare's public API.

### FAQ

**Do I need a PlugShare account or API key?** No. This actor works out of
the box with no registration.

**Can I search by coordinates instead of a place name?** Yes — set
`latitude`/`longitude` directly; they take priority over `locationQuery`.

**Can I paste a PlugShare station URL instead of finding its numeric ID?**
Yes — `stationIds` accepts either the bare ID (`7057`) or the full URL
(`https://www.plugshare.com/location/7057`).

**What is PlugScore?** PlugShare's own 0-10 community confidence rating
for a station, derived from driver check-ins and reviews over time.

**What does `ratingLabel` mean on a review?** PlugShare unifies check-ins
and reviews into one activity type: "Confirmed Working" (driver
successfully charged), "Reported Problem" (driver could not charge, with
a `problemType`), or "Comment" (a note with no charge attempt).

**Why do some stations have no `reviews` or `photos`?** PlugShare is
crowd-sourced; not every station has received a community check-in,
review, or photo yet. The fields are only included when they exist.

**How fresh is the availability data?** Each physical station's
`stations[].lastAvailabilityUpdate` shows when the community last
reported that station's outlet status.

**Can I get just the reviews or just the photos without the full station
record?** Yes — use `mode=reviews` or `mode=photos` with `stationIds`.

# Actor input Schema

## `mode` (type: `string`):

What to fetch.

## `locationQuery` (type: `string`):

Free-text place name to search near (city, address, landmark). Geocoded automatically. Ignored if `latitude`/`longitude` are set.

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

Exact search-center latitude. Overrides `locationQuery` when set together with `longitude`.

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

Exact search-center longitude. Overrides `locationQuery` when set together with `latitude`.

## `radiusKm` (type: `integer`):

Only emit stations within this distance of the search center (mode=search).

## `stationIds` (type: `array`):

Numeric PlugShare location IDs, e.g. `7057`, or full PlugShare station URLs, e.g. `https://www.plugshare.com/location/7057` (either form works).

## `connectorTypes` (type: `array`):

Only emit stations offering at least one of these connector types (mode=search).

## `networks` (type: `array`):

Only emit stations on these charging networks (mode=search). Curated list of common networks — a station's own `networks` output field is populated regardless of this filter.

## `minPowerKW` (type: `integer`):

Drop stations whose fastest outlet is below this power.

## `maxPowerKW` (type: `integer`):

Drop stations whose fastest outlet is above this power.

## `accessType` (type: `string`):

Which access levels to include.

## `freeOnly` (type: `boolean`):

Only emit stations with no published charging cost.

## `availableNowOnly` (type: `boolean`):

Only emit stations with at least one outlet currently reported available by the community.

## `minStationCount` (type: `integer`):

Drop locations with fewer physical charging stations than this.

## `minPlugscore` (type: `integer`):

Drop stations below this PlugShare community confidence score (0-10 scale, based on check-ins and reviews).

## `minReviewCount` (type: `integer`):

Only emit stations with at least this many community reviews/check-ins.

## `amenities` (type: `array`):

Only emit stations tagged with at least one of these nearby amenities.

## `poiTypes` (type: `array`):

Only emit stations located at one of these point-of-interest types.

## `parkingAttributes` (type: `array`):

Only emit stations with at least one of these parking attributes.

## `excludeAccessRestrictions` (type: `array`):

Drop stations restricted to these vehicle brands only.

## `includeReviews` (type: `boolean`):

Embed each station's community check-ins/reviews (rating, comment, reported problem, vehicle, operator response) in the output.

## `includePhotos` (type: `boolean`):

Embed each station's user-submitted photos in the output.

## `maxReviewsPerStation` (type: `integer`):

Cap on embedded reviews/check-ins per station (mode=search / byId), or per station in mode=reviews.

## `maxPhotosPerStation` (type: `integer`):

Cap on embedded photos per station (mode=search / byId), or per station in mode=photos.

## `maxItems` (type: `integer`):

Hard cap on emitted records.

## Actor input object example

```json
{
  "mode": "search",
  "locationQuery": "Los Angeles, CA",
  "radiusKm": 25,
  "stationIds": [],
  "connectorTypes": [],
  "networks": [],
  "accessType": "publicAndRestricted",
  "freeOnly": false,
  "availableNowOnly": false,
  "amenities": [],
  "poiTypes": [],
  "parkingAttributes": [],
  "excludeAccessRestrictions": [],
  "includeReviews": true,
  "includePhotos": true,
  "maxReviewsPerStation": 10,
  "maxPhotosPerStation": 5,
  "maxItems": 20
}
```

# Actor output Schema

## `chargingStations` (type: `string`):

Dataset containing all scraped PlugShare 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 = {
    "mode": "search",
    "locationQuery": "Los Angeles, CA",
    "radiusKm": 25,
    "stationIds": [],
    "connectorTypes": [],
    "networks": [],
    "accessType": "publicAndRestricted",
    "freeOnly": false,
    "availableNowOnly": false,
    "amenities": [],
    "poiTypes": [],
    "parkingAttributes": [],
    "excludeAccessRestrictions": [],
    "includeReviews": true,
    "includePhotos": true,
    "maxReviewsPerStation": 10,
    "maxPhotosPerStation": 5,
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/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 = {
    "mode": "search",
    "locationQuery": "Los Angeles, CA",
    "radiusKm": 25,
    "stationIds": [],
    "connectorTypes": [],
    "networks": [],
    "accessType": "publicAndRestricted",
    "freeOnly": False,
    "availableNowOnly": False,
    "amenities": [],
    "poiTypes": [],
    "parkingAttributes": [],
    "excludeAccessRestrictions": [],
    "includeReviews": True,
    "includePhotos": True,
    "maxReviewsPerStation": 10,
    "maxPhotosPerStation": 5,
    "maxItems": 20,
}

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

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

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

```

## CLI example

```bash
echo '{
  "mode": "search",
  "locationQuery": "Los Angeles, CA",
  "radiusKm": 25,
  "stationIds": [],
  "connectorTypes": [],
  "networks": [],
  "accessType": "publicAndRestricted",
  "freeOnly": false,
  "availableNowOnly": false,
  "amenities": [],
  "poiTypes": [],
  "parkingAttributes": [],
  "excludeAccessRestrictions": [],
  "includeReviews": true,
  "includePhotos": true,
  "maxReviewsPerStation": 10,
  "maxPhotosPerStation": 5,
  "maxItems": 20
}' |
apify call crawlerbros/plugshare-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawlerbros/plugshare-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "PlugShare EV Charging Station Scraper",
        "description": "Scrape PlugShare's crowd-sourced EV charging station map - user check-ins, reviews, ratings, live outlet-availability status, PlugScore, and user photos, alongside station address, connectors, network, and pricing.",
        "version": "1.0",
        "x-build-id": "JFLvQXhAlb2ebjYX7"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~plugshare-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-plugshare-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/crawlerbros~plugshare-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-plugshare-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/crawlerbros~plugshare-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-plugshare-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "byId",
                            "reviews",
                            "photos"
                        ],
                        "type": "string",
                        "description": "What to fetch.",
                        "default": "search"
                    },
                    "locationQuery": {
                        "title": "Location (mode=search)",
                        "type": "string",
                        "description": "Free-text place name to search near (city, address, landmark). Geocoded automatically. Ignored if `latitude`/`longitude` are set.",
                        "default": "Los Angeles, CA"
                    },
                    "latitude": {
                        "title": "Latitude (mode=search)",
                        "minimum": -90,
                        "maximum": 90,
                        "type": "number",
                        "description": "Exact search-center latitude. Overrides `locationQuery` when set together with `longitude`."
                    },
                    "longitude": {
                        "title": "Longitude (mode=search)",
                        "minimum": -180,
                        "maximum": 180,
                        "type": "number",
                        "description": "Exact search-center longitude. Overrides `locationQuery` when set together with `latitude`."
                    },
                    "radiusKm": {
                        "title": "Search radius (km)",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Only emit stations within this distance of the search center (mode=search).",
                        "default": 25
                    },
                    "stationIds": {
                        "title": "Station IDs (mode=byId / reviews / photos)",
                        "type": "array",
                        "description": "Numeric PlugShare location IDs, e.g. `7057`, or full PlugShare station URLs, e.g. `https://www.plugshare.com/location/7057` (either form works).",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "connectorTypes": {
                        "title": "Connector types",
                        "type": "array",
                        "description": "Only emit stations offering at least one of these connector types (mode=search).",
                        "items": {
                            "type": "string",
                            "enum": [
                                "wallOutlet",
                                "j1772",
                                "chademo",
                                "teslaRoadster",
                                "nema1450",
                                "mennekesType2",
                                "evPlugType3",
                                "wallOutletBS1363",
                                "wallOutletEuro",
                                "blueCommando",
                                "wallOutlet3112",
                                "ccs1",
                                "threePhase",
                                "caravanMainsSocket",
                                "gbt",
                                "gbtFast",
                                "ccs2",
                                "type3a",
                                "nemaTt30",
                                "nacsTesla",
                                "type6",
                                "leccs"
                            ],
                            "enumTitles": [
                                "Wall Outlet (NEMA 5-15)",
                                "J-1772",
                                "CHAdeMO (Quick Charge)",
                                "Tesla (Roadster)",
                                "NEMA 14-50",
                                "Mennekes (Type 2)",
                                "EV Plug (Type 3)",
                                "Wall Outlet (BS1363)",
                                "Wall Outlet (Euro/CEE 7)",
                                "Blue Commando",
                                "Wall Outlet (AS 3112)",
                                "CCS1 (Combo 1)",
                                "Three Phase",
                                "Caravan Mains Socket",
                                "GB/T",
                                "GB/T (Fast)",
                                "CCS2 (Combo 2)",
                                "Type 3A",
                                "NEMA TT-30",
                                "NACS (Tesla)",
                                "Type 6",
                                "LECCS"
                            ]
                        },
                        "default": []
                    },
                    "networks": {
                        "title": "Network / operator",
                        "type": "array",
                        "description": "Only emit stations on these charging networks (mode=search). Curated list of common networks — a station's own `networks` output field is populated regardless of this filter.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "ampUp",
                                "autel",
                                "bcHydroEv",
                                "blink",
                                "bpPulse",
                                "chargeLab",
                                "chargePoint",
                                "chargeSmartEv",
                                "chargeUp",
                                "circleKCharge",
                                "circleKRecharge",
                                "circuitElectrique",
                                "electricEra",
                                "electrifyAmerica",
                                "electrifyCanada",
                                "epicCharging",
                                "evConnect",
                                "evConnectCanada",
                                "evRange",
                                "evcs",
                                "everged",
                                "evGateway",
                                "evgo",
                                "evsmart",
                                "flipturn",
                                "flo",
                                "fordCharge",
                                "francisEnergy",
                                "hyperfuel",
                                "ionna",
                                "ivy",
                                "jolt",
                                "jule",
                                "loopGlobal",
                                "mercedesBenzChargingNetwork",
                                "nayaxEnergy",
                                "onTheRunEv",
                                "opConnect",
                                "petroCanada",
                                "pilotFlyingJ",
                                "redE",
                                "rivianAdventureNetwork",
                                "rivianWaypoints",
                                "shellRecharge",
                                "sunCountry",
                                "supercharger",
                                "swtch",
                                "synergEv",
                                "teslaDestination",
                                "universalEv",
                                "viaLynk",
                                "walmartEvCharging"
                            ],
                            "enumTitles": [
                                "AmpUp",
                                "Autel",
                                "BC Hydro EV",
                                "Blink",
                                "bp pulse",
                                "ChargeLab",
                                "ChargePoint",
                                "ChargeSmart EV",
                                "ChargeUP",
                                "CircleK Charge",
                                "CircleK/Couche-Tard Recharge",
                                "Circuit Electrique",
                                "Electric Era",
                                "Electrify America",
                                "Electrify Canada",
                                "Epic Charging",
                                "EV Connect",
                                "EV Connect Canada",
                                "EV Range",
                                "EVCS",
                                "eVerged",
                                "EvGateway",
                                "EVgo",
                                "EVsmart",
                                "Flipturn",
                                "FLO",
                                "Ford Charge",
                                "Francis Energy",
                                "Hyperfuel",
                                "IONNA",
                                "Ivy",
                                "JOLT",
                                "Jule",
                                "Loop Global",
                                "Mercedes-Benz Charging Network",
                                "Nayax Energy",
                                "On the Run EV",
                                "OpConnect",
                                "Petro-Canada",
                                "Pilot Flying J",
                                "Red E",
                                "Rivian Adventure Network",
                                "Rivian Waypoints",
                                "Shell Recharge",
                                "Sun Country",
                                "Tesla Supercharger",
                                "SWTCH",
                                "SynergEV",
                                "Tesla Destination",
                                "Universal EV",
                                "ViaLynk",
                                "Walmart EV Charging"
                            ]
                        },
                        "default": []
                    },
                    "minPowerKW": {
                        "title": "Min power (kW)",
                        "minimum": 0,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Drop stations whose fastest outlet is below this power."
                    },
                    "maxPowerKW": {
                        "title": "Max power (kW)",
                        "minimum": 0,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Drop stations whose fastest outlet is above this power."
                    },
                    "accessType": {
                        "title": "Access type",
                        "enum": [
                            "publicOnly",
                            "publicAndRestricted",
                            "all"
                        ],
                        "type": "string",
                        "description": "Which access levels to include.",
                        "default": "publicAndRestricted"
                    },
                    "freeOnly": {
                        "title": "Free charging only",
                        "type": "boolean",
                        "description": "Only emit stations with no published charging cost.",
                        "default": false
                    },
                    "availableNowOnly": {
                        "title": "Available now only",
                        "type": "boolean",
                        "description": "Only emit stations with at least one outlet currently reported available by the community.",
                        "default": false
                    },
                    "minStationCount": {
                        "title": "Min physical stations at location",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Drop locations with fewer physical charging stations than this."
                    },
                    "minPlugscore": {
                        "title": "Min PlugScore",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Drop stations below this PlugShare community confidence score (0-10 scale, based on check-ins and reviews)."
                    },
                    "minReviewCount": {
                        "title": "Min review count",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Only emit stations with at least this many community reviews/check-ins."
                    },
                    "amenities": {
                        "title": "Nearby amenities",
                        "type": "array",
                        "description": "Only emit stations tagged with at least one of these nearby amenities.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "lodging",
                                "dining",
                                "restrooms",
                                "evParking",
                                "valetParking",
                                "park",
                                "wifi",
                                "shopping",
                                "grocery",
                                "hiking",
                                "camping"
                            ],
                            "enumTitles": [
                                "Lodging",
                                "Dining",
                                "Restrooms",
                                "EV Parking",
                                "Valet Parking",
                                "Park",
                                "WiFi",
                                "Shopping",
                                "Grocery",
                                "Hiking",
                                "Camping"
                            ]
                        },
                        "default": []
                    },
                    "poiTypes": {
                        "title": "Point-of-interest type",
                        "type": "array",
                        "description": "Only emit stations located at one of these point-of-interest types.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "airport",
                                "arenaConcertHall",
                                "artGallery",
                                "bank",
                                "campground",
                                "carRental",
                                "carService",
                                "casino",
                                "cemetery",
                                "chargingHub",
                                "civic",
                                "dealership",
                                "eventVenue",
                                "ferryPort",
                                "gasStation",
                                "government",
                                "gym",
                                "holidayPark",
                                "hospitalHealthcare",
                                "library",
                                "lodging",
                                "marina",
                                "movieTheater",
                                "museum",
                                "nationalStatePark",
                                "other",
                                "park",
                                "parkingGarageLot",
                                "placeOfWorship",
                                "recreation",
                                "residential",
                                "restaurant",
                                "restStop",
                                "rvPark",
                                "schoolUniversity",
                                "shoppingCenter",
                                "sportsStadiumArena",
                                "store",
                                "streetParking",
                                "touristAttraction",
                                "transitStation",
                                "visitorCenter",
                                "winery",
                                "workplace"
                            ],
                            "enumTitles": [
                                "Airport",
                                "Arena/Concert Hall",
                                "Art Gallery",
                                "Bank",
                                "Campground",
                                "Car Rental",
                                "Car Service",
                                "Casino",
                                "Cemetery",
                                "Charging Hub",
                                "Civic",
                                "Dealership",
                                "Event Venue",
                                "Ferry Port",
                                "Gas Station",
                                "Government",
                                "Gym",
                                "Holiday Park",
                                "Hospital/Healthcare",
                                "Library",
                                "Lodging",
                                "Marina",
                                "Movie Theater",
                                "Museum",
                                "National/State Park",
                                "Other",
                                "Park",
                                "Parking Garage/Lot",
                                "Place of Worship",
                                "Recreation",
                                "Residential",
                                "Restaurant",
                                "Rest Stop",
                                "RV Park",
                                "School/University",
                                "Shopping Center",
                                "Sports Stadium/Arena",
                                "Store",
                                "Street Parking",
                                "Tourist Attraction",
                                "Transit Station",
                                "Visitor Center",
                                "Winery",
                                "Workplace"
                            ]
                        },
                        "default": []
                    },
                    "parkingAttributes": {
                        "title": "Parking attributes",
                        "type": "array",
                        "description": "Only emit stations with at least one of these parking attributes.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "covered",
                                "garage",
                                "handicapped",
                                "illuminated",
                                "pullIn",
                                "pullThrough",
                                "trailerFriendly",
                                "trailerParking",
                                "wheelchairAccess"
                            ],
                            "enumTitles": [
                                "Covered parking",
                                "Garage",
                                "Handicapped parking",
                                "Illuminated",
                                "Pull-in parking",
                                "Pull-through parking",
                                "Trailer friendly",
                                "Trailer parking",
                                "Wheelchair accessible"
                            ]
                        },
                        "default": []
                    },
                    "excludeAccessRestrictions": {
                        "title": "Exclude brand-restricted stations",
                        "type": "array",
                        "description": "Drop stations restricted to these vehicle brands only.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "teslaDriversOnly",
                                "rivianDriversOnly"
                            ],
                            "enumTitles": [
                                "Tesla Drivers Only",
                                "Rivian Drivers Only"
                            ]
                        },
                        "default": []
                    },
                    "includeReviews": {
                        "title": "Include community reviews / check-ins",
                        "type": "boolean",
                        "description": "Embed each station's community check-ins/reviews (rating, comment, reported problem, vehicle, operator response) in the output.",
                        "default": true
                    },
                    "includePhotos": {
                        "title": "Include user photos",
                        "type": "boolean",
                        "description": "Embed each station's user-submitted photos in the output.",
                        "default": true
                    },
                    "maxReviewsPerStation": {
                        "title": "Max reviews per station",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Cap on embedded reviews/check-ins per station (mode=search / byId), or per station in mode=reviews.",
                        "default": 10
                    },
                    "maxPhotosPerStation": {
                        "title": "Max photos per station",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Cap on embedded photos per station (mode=search / byId), or per station in mode=photos.",
                        "default": 5
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Hard cap on emitted records.",
                        "default": 20
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
