Skip to main content

Shadowsocks API reference and data availability

Use the PublicVPNList API to read Shadowsocks endpoint metadata without scraping the HTML catalog. The current compact snapshot contains 624 records from 17 independent sources for this protocol.

Free API & downloads: 24-hour access

Get access here before using the API or downloading a dataset. Your key and download links expire after 24 hours. Return to this page and press the button to get new access; it does not renew automatically.

Checking access…

Protected by Google reCAPTCHA. Google’s Privacy Policy and Terms of Service apply.

Request permanent access

For permanent access, tell us your name, email and intended use. Requests are reviewed individually.

Already saved files are not revoked. A configuration may stop working earlier if its third-party server changes. Individual OpenVPN checks still use their existing single-use download token.

Available through the API: Shadowsocks

Current server records available in the API and metadata exports. Counts refer to endpoint records; a host can have multiple configurations.

624Server records
22Exit countries
4.61 MbpsMedian measured speed
11.75 MbpsHighest measured speed

Speed measured for 565 of 624 records. Only checker-measured throughput is included; missing measurements are excluded, not treated as zero. Results depend on the checker location and are not guaranteed client speeds.

Countries below are the geolocated countries of verified exit IPs, which can differ from server locations. Geography uses the local DB-IP Lite database; unknown locations stay separate. The API country filter uses the published country_code field; exit-IP grouping is shown here.

On small screens, scroll the table sideways to see all speed columns.

Exit countries and measured speeds
CountryRecordsSpeed measuredMedian speedHighest speed
United States (US)191181 / 1913.73 Mbps5.39 Mbps
Netherlands (NL)115114 / 1157.41 Mbps9.35 Mbps
Italy (IT)9393 / 938.42 Mbps9.42 Mbps
Canada (CA)6143 / 611.93 Mbps4.38 Mbps
Japan (JP)3227 / 322.15 Mbps2.82 Mbps
Germany (DE)2020 / 208.15 Mbps10.28 Mbps
Russia (RU)1917 / 196.57 Mbps11.75 Mbps
United Kingdom (GB)1919 / 196.23 Mbps8.80 Mbps
South Korea (KR)154 / 152.21 Mbps2.28 Mbps
Thailand (TH)1312 / 131.58 Mbps2.84 Mbps
Czechia (CZ)1212 / 125.13 Mbps7.33 Mbps
Austria (AT)66 / 68.24 Mbps8.88 Mbps
India (IN)63 / 63.10 Mbps3.62 Mbps
Romania (RO)60 / 6Not measuredNot measured
France (FR)55 / 52.11 Mbps2.73 Mbps
Albania (AL)31 / 33.39 Mbps3.39 Mbps
Denmark (DK)22 / 27.62 Mbps8.43 Mbps
Poland (PL)22 / 25.20 Mbps7.83 Mbps
Mexico (MX)11 / 13.54 Mbps3.54 Mbps
Singapore (SG)11 / 13.42 Mbps3.42 Mbps
South Africa (ZA)11 / 12.36 Mbps2.36 Mbps
Switzerland (CH)11 / 17.38 Mbps7.38 Mbps

Snapshot updated: .

View this protocol in the API · Download metadata exports

Request example

curl -H 'Authorization: Bearer YOUR_24_HOUR_KEY' -H 'Accept: application/json' \
  'https://publicvpnlist.com/api/v1/servers?protocol=shadowsocks&status=online&sort=last_checked&order=desc&per_page=50'

The response is paginated. Keep the returned id for details at /api/v1/servers/{id}, cache the ETag, and treat last_checked_at as technical evidence rather than a privacy guarantee.

What each Shadowsocks record means

Shadowsocks uses encrypted TCP/UDP proxy endpoints. A usable public configuration requires a supported AEAD cipher and password. PublicVPNList does not publish rows inferred from an open port or incomplete relay metadata.

FieldMeaning
hostname, ip, portPublic connection endpoint metadata.
transport, transport_securityTransport settings required by the client.
exit_ipPublic IP observed only after the checker routed traffic through the tunnel.
handshake_ms, https_first_byte_msChecker-region measurements; they are not a speed guarantee for every user.
config_download_urlA downloadable configuration for a verified row. A source can remove it later (HTTP 410). OpenVPN uses its existing protected download flow: use server_page_url when this field is null.
speed_mbps, checker_measured_throughput_mbpsMeasured tunnel throughput in Mbps; null when not measured.
latency_ms, checker_measured_tunnel_rtt_msMeasured tunnel round-trip time. For URI protocols this is an HTTPS round trip, separate from handshake and first-byte time.
uptime_percent_7d, sessions, technical_quality_scoreMay be null when this protocol has no matching measurement or scoring model. An absent value is not zero.

Endpoints and filters

Use protocol=shadowsocks consistently. Omitting it selects OpenVPN for backward compatibility.

Filter by country=US, transport=tcp, port=443, status=online, fresh_within=3600, min_speed=1, max_latency=500 or min_uptime=90. Metric filters exclude rows where that measurement is unknown.

Use page=1&per_page=50 (maximum 200), fields=id,protocol,country_code,server_page_url, and sort=speed|latency|uptime|last_checked|score|first_seen with order=asc|desc. Follow links.next until null. Compare the returned version if the dataset updates during pagination.

Download metadata in bulk

These complete metadata exports include all records in this protocol snapshot, without pagination. They contain links to configurations, not embedded passwords or client keys.

Add &country=US to restrict an export to one country. The TXT format is UTF-8 TSV. Export responses include ETag, Last-Modified, X-Dataset-Version and X-Checksum-SHA256. See all export formats.

Errors and empty catalogs

A successful empty response is HTTP 200 with data: [], meta.total: 0 and links.next: null. It means no checked records are currently published for this protocol, not a broken API. TUIC, WireGuard and IKEv2 require usable configurations and successful full checks before rows can appear.

API errors: 401 missing or expired access key, 400 invalid or repeated parameter, 404 missing record, 405 unsupported method, 429 rate limit, 503 unavailable protocol snapshot. The JSON API permits 60 requests per minute; respect Retry-After. GET/HEAD support conditional caching (304), and OPTIONS provides CORS preflight; data requests require a Bearer key or the 24-hour browser access cookie. Unknown values remain null. Common examples and complete field reference.

Freshness, safety and caching

Only checks no older than 72 hours can enter the protocol snapshot. Every row requires a real client tunnel, a successful HTTPS request and a public exit IP different from the checker’s direct address. Unknown third-party endpoints can still log or alter traffic; use end-to-end encryption and avoid sensitive accounts.

Snapshot version: 20261023T230459Z-003dc0153845. API JSON routes are excluded from search indexing; this documentation page is the canonical explanation; search indexing depends on the publication gate above.