# Chargepoint Stations Search Scraper (`stealth_mode/chargepoint-stations-search-scraper`) Actor

Scrape real-time EV charging station locations and specifications from ChargePoint's network. Collect 16+ data fields per station including location, power levels, port availability, payment types, and more — essential for route planning, market research, and EV infrastructure analysis.

- **URL**: https://apify.com/stealth\_mode/chargepoint-stations-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

## ChargePoint Stations Scraper: Extract EV Charging Station Data Instantly

---

### What Is ChargePoint?

ChargePoint is North America's largest open EV charging network, operating thousands of public and workplace charging stations. The platform allows drivers to search, reserve, and pay for charging across a unified ecosystem. For businesses, researchers, and developers, programmatic access to station data unlocks critical insights into EV infrastructure availability, pricing patterns, and network growth — but manual collection is tedious and error-prone. The **ChargePoint Stations Scraper** automates this, extracting comprehensive station metadata in seconds.

---

### Overview

The **ChargePoint Stations Scraper** extracts charging station details from ChargePoint's search results pages, converting location-based listings into structured, analyzable datasets. It is designed for:

- **EV fleet managers** identifying charging availability for route optimization
- **Market researchers** tracking EV infrastructure density and adoption trends
- **Real estate developers** evaluating charging network coverage in target areas
- **Mobility platforms** integrating live station data into driver apps
- **Policy analysts** studying public vs. workplace charging distribution

Key strengths include high-volume scraping (up to 200 stations per URL), resilient proxy support to avoid rate limiting, and robust error handling to continue collection even if individual URLs fail.

---

### Input Format

The scraper accepts a JSON configuration object controlling which stations to extract:

```json
{
  "ignore_url_failures": true,
  "max_items_per_url": 200,
  "urls": [
    "https://driver.chargepoint.com/mapCenter/51.55206662460206/-0.17304672482955974/14?view=list"
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "US"
  }
}
````

| Parameter | Description |
|---|---|
| `urls` | Direct links to ChargePoint station search result pages (list view). Include map center coordinates and zoom level in the URL. |
| `max_items_per_url` | Maximum stations to scrape per URL (e.g., `200` for large metro areas). Higher values = longer runtime. |
| `ignore_url_failures` | If `true`, the scraper skips failed URLs and continues. Set to `false` to halt on errors. |
| `proxy` | Recommended: enable `RESIDENTIAL` proxy with `apifyProxyCountry: "US"` to avoid bot detection and rate limiting. |

> **Tip:** Generate search URLs directly from ChargePoint's map interface by zooming to your target region and switching to **List View**, then copying the URL.

***

### Output Format

**Sample output**

```json
{
  "device_id": 1000322175,
  "station_status": "unknown",
  "network_display_name": "Source London",
  "lon": -0.173318,
  "ports": [
    {
      "status_v2": "unknown",
      "port_type": 1000000835,
      "outlet_number": 1,
      "parking_accessibility": "NONE",
      "available_power": "3.7",
      "status": "unknown"
    }
  ],
  "tou_status": "open",
  "has_l1": true,
  "display_level": "AC",
  "has_l2": null,
  "station_status_v2": "unknown",
  "max_power": {
    "unit": "kW",
    "max": 3.7
  },
  "payment_type": "UNKNOWN",
  "total_port_count": 1,
  "network_logo_url": "https://mc-eu.chargepoint.com/images/network/2/ic_network_generic.png",
  "name1": "Rosslyn Hill",
  "lat": 51.55494,
  "from_url": "https://driver.chargepoint.com/mapCenter/51.55206662460206/-0.17304672482955974/14?view=list"
}
```

Each scraped station returns a comprehensive record with 16 fields:

#### Station Identification & Location

| Field | Meaning | Example |
|---|---|---|
| `Device ID` | Unique ChargePoint identifier for the charging device | `1001234567` |
| `Name 1` | Station name as displayed on the platform | `Downtown San Francisco - Market St` |
| `Latitude` | Geographic latitude coordinate | `37.7749` |
| `Longitude` | Geographic longitude coordinate | `-122.4194` |
| `Display Level` | Location hierarchical level (city, area, facility) | `Facility` |

#### Station Status & Availability

| Field | Meaning | Example |
|---|---|---|
| `Station Status` | Legacy status indicator (may be deprecated) | `Active` |
| `Station Status V2` | Current operational status of the station | `AVAILABLE`, `IN_USE`, `OFFLINE` |
| `Ports` | Real-time port availability summary | `2 of 4 available` |
| `Total Port Count` | Total charging ports at the station | `4` |
| `Has L1` | Boolean: Station offers Level 1 (120V) charging | `false` |
| `Has L2` | Boolean: Station offers Level 2 (240V) charging | `true` |

#### Charging & Network Details

| Field | Meaning | Example |
|---|---|---|
| `Max Power` | Maximum power output in kW | `7.2` |
| `TOU Status` | Time-of-use pricing availability | `Enabled` |
| `Payment Type` | Accepted payment methods | `Credit Card, App, Account` |
| `Network Display Name` | Network operator name | `ChargePoint Network` |
| `Network Logo URL` | Logo image URL for the network operator | `https://logo.chargepoint.com/...` |

***

### How to Use

1. **Navigate to ChargePoint map** — Visit `https://driver.chargepoint.com/` and adjust the map to your target region.
2. **Switch to List View** — Click the **List** icon to show search results as a sortable list (not map pins).
3. **Copy the URL** — The page URL will contain map center coordinates and zoom level. Copy this full URL.
4. **Paste into `urls` array** — Add the URL to the scraper's input configuration.
5. **Set `max_items_per_url`** — For dense urban areas, use `200`; for sparse regions, `50–100` is sufficient.
6. **Enable proxy** — Always use `RESIDENTIAL` proxy in the `US` country group to avoid blocks.
7. **Run the scraper** — Start the actor and monitor progress in the console.
8. **Download results** — Export as JSON, CSV, or Excel for analysis in GIS, BI tools, or databases.

**Common troubleshooting:**

- If no results appear, verify the URL is from **List View**, not the map view.
- If the scraper is blocked, restart with a fresh proxy configuration.
- Use `ignore_url_failures: true` for batch runs across multiple regions to prevent halts.

***

### Use Cases & Business Value

- **Route optimization:** EV fleet managers locate nearby chargers for multi-stop routes
- **Infrastructure investment:** Identify underserved areas with low station density to guide expansion
- **Competitive analysis:** Compare charging speeds, pricing, and availability vs. rival networks
- **Real estate marketing:** Highlight station proximity as a lease amenity for EV-focused properties
- **Academic research:** Quantify EV charging accessibility across income levels and regions

The ChargePoint Stations Scraper transforms location-based searches into actionable datasets, cutting data collection time from hours to minutes while ensuring accuracy and consistency.

***

### Conclusion

The **ChargePoint Stations Scraper** empowers EV industry stakeholders with fast, reliable access to charging infrastructure data. Whether you're optimizing routes, analyzing market trends, or building location-aware applications, this scraper delivers the structured data you need in real time. Start scraping today and stay ahead of the EV charging curve.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the Station search urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## `proxy` (type: `object`):

Select proxies to be used by your scraper.

## Actor input object example

```json
{
  "urls": [
    "https://driver.chargepoint.com/mapCenter/51.55206662460206/-0.17304672482955974/14?view=list"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# 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 = {
    "urls": [
        "https://driver.chargepoint.com/mapCenter/51.55206662460206/-0.17304672482955974/14?view=list"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/chargepoint-stations-search-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 = {
    "urls": ["https://driver.chargepoint.com/mapCenter/51.55206662460206/-0.17304672482955974/14?view=list"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/chargepoint-stations-search-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 '{
  "urls": [
    "https://driver.chargepoint.com/mapCenter/51.55206662460206/-0.17304672482955974/14?view=list"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call stealth_mode/chargepoint-stations-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Chargepoint Stations Search Scraper",
        "description": "Scrape real-time EV charging station locations and specifications from ChargePoint's network. Collect 16+ data fields per station including location, power levels, port availability, payment types, and more — essential for route planning, market research, and EV infrastructure analysis.",
        "version": "0.0",
        "x-build-id": "EGzqc2apdNTPzFekG"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~chargepoint-stations-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-chargepoint-stations-search-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/stealth_mode~chargepoint-stations-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-chargepoint-stations-search-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/stealth_mode~chargepoint-stations-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-chargepoint-stations-search-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",
                "properties": {
                    "urls": {
                        "title": "URLs of the Station search urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the Station search urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Select proxies to be used by your scraper."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
