BYTETOOLS

Go Module Proxy API

Free Go module proxy API with no key: list versions of any public Go module, get commit info and checksums straight from proxy.golang.org. Tested example.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-19

What is the Go Module Proxy API?

The Go module proxy at proxy.golang.org is a free, key-free service that serves version lists, module metadata and checksums for every public Go module, following the standard Go module proxy protocol.

Every Go module published to a public repository is mirrored by proxy.golang.org, and its protocol is simple enough to use directly: request `/<module>/@v/list` and you get a plain-text list of versions, one per line.

The responses are deliberately not JSON. The version list is plain text, `/@v/<version>.info` returns a small JSON object, and `/@v/<version>.mod` returns the raw go.mod file. Knowing which endpoint returns what saves a lot of confusion.

Quick facts

Base URL
https://proxy.golang.org
Authentication
No API key required.
Rate limit
No published limit; it is Google-operated infrastructure built for Go toolchain traffic.
Pricing
Free.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the Go Module Proxy API

Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.

1. List published versions of a Go module

GET https://proxy.golang.org/github.com/gorilla/mux/@v/list

curl
curl 'https://proxy.golang.org/github.com/gorilla/mux/@v/list'
JavaScript (fetch)
const res = await fetch("https://proxy.golang.org/github.com/gorilla/mux/@v/list");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://proxy.golang.org/github.com/gorilla/mux/@v/list", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
v1.3.0
v1.7.0
v1.8.0
v1.6.0
v1.5.0
v1.7.2
v1.7.1
v1.7.3
v1.4.0
v1.2.0
v1.6.1
v1.8.1
v1.6.2
v1.7.4

Parameters

ParameterTypeRequiredDescription
<module>/@v/listpathRequiredModule path followed by /@v/list. github.com/gorilla/mux/@v/list
<module>/@v/<version>.infopathOptionalJSON metadata for one version. @v/v1.8.1.info
<module>/@v/<version>.modpathOptionalThe raw go.mod for that version. @v/v1.8.1.mod
<module>/@latestpathOptionalMetadata for the latest version. @latest

Response fields

(plain text)text
On /@v/list, newline-separated version strings. Not JSON.
Versionstring
On .info, the version string.
Timestring
On .info, the commit timestamp in RFC 3339.
(raw go.mod)text
On .mod, the module file including its own dependency requirements.

What you can build with the Go Module Proxy API

  • Check whether a Go dependency has a newer release
  • Build a version badge for a Go library
  • Inspect a module's go.mod without cloning the repository
  • Verify module checksums for supply-chain assurance

Common errors and how to fix them

JSON parse error on /@v/list

That endpoint returns plain text, not JSON.

Fix: Split the response on newlines; only the .info endpoint returns JSON.

404

Unknown module path, or a module that was never fetched through the proxy.

Fix: Module paths are full import paths including the host, e.g. github.com/gorilla/mux.

Uppercase letters in the path fail

Go proxy paths require case-encoding.

Fix: Uppercase letters are escaped as !lowercase — for example Azure becomes !azure.

Go Module Proxy API — frequently asked questions

Is the Go module proxy free to use?

Yes, proxy.golang.org is free with no API key. It is the default proxy for the Go toolchain and is operated by Google.

Why isn't the version list JSON?

The Go module proxy protocol uses plain text for /@v/list, with one version per line. Only the .info endpoints return JSON, and .mod returns the raw go.mod file.

How do I handle module paths with capital letters?

The proxy protocol case-encodes them: an uppercase letter is written as an exclamation mark followed by the lowercase letter, so Azure becomes !azure.

Can I get the latest version directly?

Yes, request /<module>/@latest, which returns a JSON object with the version and its commit timestamp.

Tools that pair with this API

Go Module Proxy is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.