Ecosyste.ms API
Free Ecosyste.ms API with no key: package metadata, dependencies, repository data and usage statistics across 60+ package registries. Tested curl example.
Endpoint tested and returned HTTP 200 on 2026-08-20
What is the Ecosyste.ms API?
Ecosyste.ms is a free, key-free API providing open source ecosystem data — package metadata, dependency relationships, repository information and usage statistics — aggregated across more than 60 package registries.
Ecosyste.ms is an openly funded infrastructure project mapping the open source ecosystem as a whole rather than one registry at a time. It covers registries most tools ignore entirely, including smaller language ecosystems.
Its distinguishing angle is dependent counts: knowing how many packages depend on a given library is a far better measure of its importance than downloads, and it is data that individual registries rarely expose.
Quick facts
- Base URL
https://packages.ecosyste.ms/api/v1- Authentication
- No API key required. A contact email in the User-Agent is appreciated.
- Rate limit
- No published hard limit; the project asks for reasonable use.
- Pricing
- Free, grant-funded open infrastructure.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the Ecosyste.ms API
Every request below was executed against the live API on 2026-08-20, and the response shown is the real body it returned — not an illustration.
1. List supported package registries
GET https://packages.ecosyste.ms/api/v1/registries
curl 'https://packages.ecosyste.ms/api/v1/registries'const res = await fetch("https://packages.ecosyste.ms/api/v1/registries");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://packages.ecosyste.ms/api/v1/registries", timeout=20)
res.raise_for_status()
print(res.json())[
{
"name": "npmjs.org",
"url": "https://registry.npmjs.org",
"ecosystem": "npm",
"default": true,
"packages_count": 5760001,
"versions_count": 75555380,
"maintainers_count": 1232642,
"namespaces_count": 419110,
"keywords_count": 877561,
"downloads": 789575299535,
"github": "npm",
"metadata": {
"funded_packages_count": 188204,
"rate_limit": 2
},
"icon_url": "https://github.com/npm.png",
"purl_type": "npm",
"created_at": "2022-04-04T15:19:23.081Z",
"updated_at": "2026-08-20T05:03:15.932Z",
"packages_url": "https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages",
"maintainers_url": "https://packages.ecosyste.ms/api/v1/registries/npmjs.org/maintainers",
"namespaces_url": "https://packages.ecosyste.ms/api/v1/registries/npmjs.org/namespaces"
},
{
"name": "proxy.golang.org",
"url": "https://proxy.golang.org",
"ecosystem": "go",
"default": true,
"packages_count": 2281813,
"versions_count": 24309759,
"maintainers_count": 0,
"namespaces_count": 839441,
"keywords_count": 124461,
"downloads": 0,
"github": "golang",
"metadata": {
"funded_packages_count": 67285,
"sync_missing_packages_cursor": {
"timestamp": "2026-08-17T00:00:58.969562Z",
"path": "github.com/Tektoncd/operator",
"version": "v0.78.0"
},
"rate_limit": 1
},
"icon_url": "https://github.com/golang.png",
"purl_type": "golang",
"created_at": "2022-04-04T15:19:22.939Z",
"updated_at": "2026-08-20T05:01:26.475Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
registries | path | Optional | All supported registries with package counts. registries |
registries/<name>/packages/<pkg> | path | Optional | One package in a registry. registries/npmjs.org/packages/react |
page / per_page | integer | Optional | Pagination controls. 1 |
Response fields
namestring- Registry hostname, e.g. npmjs.org.
ecosystemstring- Ecosystem identifier such as npm or pypi.
packages_countinteger- How many packages the registry holds.
defaultboolean- Whether this is the ecosystem's canonical registry.
(package) dependent_packages_countinteger- How many packages depend on it — a better importance signal than downloads.
(package) repository_urlstring- Source repository.
What you can build with the Ecosyste.ms API
- Measure a library's importance by dependent count rather than downloads
- Research open source ecosystem structure across languages
- Find packages in registries other tools do not cover
- Support open source sustainability and funding research
Common errors and how to fix them
Registry name is a hostname
Registries are identified by domain.
Fix: Use npmjs.org, pypi.org, rubygems.org rather than short ecosystem names.
Slow on large queries
It aggregates a great deal of data.
Fix: Paginate and cache; this is grant-funded infrastructure, not a commercial CDN.
Package not found
Coverage varies by registry.
Fix: Smaller registries are indexed less completely than npm or PyPI.
Ecosyste.ms API — frequently asked questions
Is Ecosyste.ms free?
Yes, free with no API key. It is grant-funded open infrastructure, so please include a contact email in your User-Agent and cache responses.
How many registries does it cover?
More than 60, including many smaller language ecosystems that mainstream tooling ignores entirely.
What is dependent_packages_count useful for?
It measures how many other packages depend on a library, which is a much better signal of ecosystem importance than raw download counts — and something individual registries rarely expose.
How do I identify a registry?
By hostname — npmjs.org, pypi.org, rubygems.org — rather than by short ecosystem name.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
CSV to JSON Converter
Convert CSV to a JSON array of objects online. Header-row detection, comma/semicolon/tab delimiters and pretty-printed output — 100% in your browser.
Ecosyste.ms is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-20; always check the official documentation before relying on this API in production, as terms and limits can change.