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 19 Aug 2026
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 19 Aug 2026, 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
Alternatives to Go Module Proxy API
If Go Module Proxy does not fit, these developer & testing apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.
| API | What it does | Auth | CORS | Last verified |
|---|---|---|---|---|
| GitHub REST API | GitHub REST API with no key for public data: repository details, users, issues, releases and commits. 60 req/hour unauthenticated, 5,000 with a token. | No key | Yes | 19 Aug 2026 |
| JSONPlaceholder | Free fake REST API for testing and prototyping. Posts, comments, users and todos with full GET, POST, PUT and DELETE support. No key. Real curl examples. | No key | Yes | 19 Aug 2026 |
| Postman Echo | Postman Echo reflects your HTTP request back as JSON: headers, body, query params and auth. Free, no key, ideal for debugging clients. Real POST example. | No key | No | 19 Aug 2026 |
| DummyJSON | Free fake REST API with realistic products, users, carts, recipes and auth. Supports search, pagination, sorting and POST. No key. Tested GET and POST examples. | No key | Yes | 19 Aug 2026 |
| Google Favicon Service | Free favicon API with no key: pass a domain and get back that site's favicon as a PNG at any size. Handles missing icons with a fallback. Tested example included. | No key | No | 21 Aug 2026 |
| Hex.pm | Free Hex.pm API with no key: Elixir and Erlang package metadata, releases, download counts, dependencies and documentation links. Tested curl example. | No key | No | 20 Aug 2026 |
Go Module Proxy is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 19 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.