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.
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 'https://proxy.golang.org/github.com/gorilla/mux/@v/list'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);import requests
res = requests.get("https://proxy.golang.org/github.com/gorilla/mux/@v/list", timeout=20)
res.raise_for_status()
print(res.json())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.4Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
<module>/@v/list | path | Required | Module path followed by /@v/list. github.com/gorilla/mux/@v/list |
<module>/@v/<version>.info | path | Optional | JSON metadata for one version. @v/v1.8.1.info |
<module>/@v/<version>.mod | path | Optional | The raw go.mod for that version. @v/v1.8.1.mod |
<module>/@latest | path | Optional | Metadata 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.