> For the complete documentation index, see [llms.txt](https://docs.elliott.diy/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.elliott.diy/vpn-recon/supported-providers.md).

# Supported Providers

## Supported VPN Providers

These endpoints expose known VPN exit IPs for detection, filtering, or OSINT. Data is pulled from provider APIs and updated regularly.

**Base path:** `https://api.elliott.diy/v1/vpn/`

You can request either plaintext (default) or JSON output using the `?format=json` query parameter.

***

### Supported Endpoints

| Provider   | Endpoint          |
| ---------- | ----------------- |
| PIA        | `/vpn/pia`        |
| Mullvad    | `/vpn/mullvad`    |
| Windscribe | `/vpn/windscribe` |
| IVPN       | `/vpn/ivpn`       |
| NordVPN    | `/vpn/nordvpn`    |

Additional endpoints:

* `/vpn/all` – returns all combined IPs
* `/vpn/stats` – returns provider statistics

***

### Response Formats

#### Plain Text (default)

```http
GET /vpn/pia
```

```
138.199.32.166
62.133.47.18
84.239.5.9
...
```

#### JSON format

```http
GET /vpn/pia?format=json
```

```json
{
  "ips": [
    "138.199.32.167",
    "138.199.32.162",
    "173.239.226.149",
    ...
  ]
}
```

***

### Statistics Endpoint

```http
GET /vpn/stats
```

**Sample Response:**

```json
{
  "total_ips": 52341,
  "providers": {
    "mullvad": 6381,
    "pia": 12984,
    "windscribe": 8042,
    "ivpn": 2670,
    "nordvpn": 22364
  },
  "last_updated": "2025-06-08T04:10:00Z"
}
```

***

### Update Frequency

Feeds update approximately every 6 hours.

***

### Notes

* Append `?format=json` for JSON responses
* IP lists default to plain text
* `/vpn/stats` always returns JSON
