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 20 Aug 2026
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 20 Aug 2026, 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.
Alternatives to Ecosyste.ms API
If Ecosyste.ms 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 |
| endoflife.date | Free end-of-life API with no key: support and security-EOL dates for 300+ products — Node, Python, Ubuntu, Django, PHP and more. Tested curl example. | No key | Yes | 20 Aug 2026 |
| Fake Store API | Free fake e-commerce API with products, categories, carts and users. Built for building shop prototypes and React tutorials. No key. Tested curl example. | No key | Yes | 19 Aug 2026 |
Ecosyste.ms is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 20 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.