DEV Community

Alex Spinov
Alex Spinov

Posted on

Libraries.io API: Track Every Open Source Package Across 40+ Platforms (Free, No Key)

npm has 2.3M packages. PyPI has 500K. Maven has 500K. How do you track dependencies across ALL of them?

Libraries.io indexes 8M+ packages across 40+ platforms — and their API is completely free. No API key required for basic queries.

What Libraries.io Tracks

  • npm, PyPI, Maven, NuGet, RubyGems, Cargo, Go, Packagist...
  • Dependency trees (what depends on what)
  • SourceRank score (package quality metric)
  • Release history, maintainer info
  • GitHub repo health indicators

Quick Start

Base URL: https://libraries.io/api/

1. Search Packages Across All Platforms

import requests

def search_packages(query, platforms=None, sort='rank'):
    params = {'q': query, 'sort': sort, 'per_page': 10}
    if platforms:
        params['platforms'] = platforms

    resp = requests.get('https://libraries.io/api/search', params=params)
    packages = resp.json()

    for pkg in packages:
        print(f"  [{pkg['platform']:<8}] {pkg['name']:<30} rank:{pkg.get('rank',0):>3} | {pkg.get('description','')[:40]}")
    return packages

# Search across all platforms
search_packages('web scraping')

# Filter by platform
search_packages('http client', platforms='pypi')
Enter fullscreen mode Exit fullscreen mode

2. Get Package Details

def get_package(platform, name):
    resp = requests.get(f'https://libraries.io/api/{platform}/{name}')
    pkg = resp.json()

    return {
        'name': pkg['name'],
        'version': pkg.get('latest_release_number'),
        'rank': pkg.get('rank'),
        'stars': pkg.get('stars', 0),
        'forks': pkg.get('forks', 0),
        'dependents': pkg.get('dependents_count', 0),
        'dependencies': pkg.get('dependencies_count', 0)
    }

# Example
print(get_package('pypi', 'requests'))
# {'name': 'requests', 'rank': 28, 'stars': 51000, 'dependents': 150000, ...}
Enter fullscreen mode Exit fullscreen mode

3. Find Who Depends on a Package

def get_dependents(platform, name, per_page=10):
    resp = requests.get(
        f'https://libraries.io/api/{platform}/{name}/dependents',
        params={'per_page': per_page}
    )
    return [{'name': d['name'], 'platform': d['platform']} for d in resp.json()]

# Who depends on Flask?
for d in get_dependents('pypi', 'flask', 5):
    print(f"  {d['name']} ({d['platform']})")
Enter fullscreen mode Exit fullscreen mode

4. Compare Packages Side by Side

def compare_packages(platform, names):
    results = []
    for name in names:
        pkg = get_package(platform, name)
        results.append(pkg)

    print(f"{'Metric':<20}", end='')
    for r in results:
        print(f"{r['name']:<20}", end='')
    print()
    print('-' * (20 + 20 * len(results)))

    for metric in ['rank', 'stars', 'dependents', 'dependencies']:
        print(f"{metric:<20}", end='')
        for r in results:
            print(f"{str(r.get(metric, '?')):<20}", end='')
        print()

# Compare HTTP clients
compare_packages('pypi', ['requests', 'httpx', 'aiohttp'])
Enter fullscreen mode Exit fullscreen mode

Output:

Metric              requests            httpx               aiohttp
--------------------------------------------------------------------
rank                28                  15                  22
stars               51000               12000               14000
dependents          150000              8500                45000
dependencies        4                   7                   3
Enter fullscreen mode Exit fullscreen mode

5. SourceRank: The Quality Metric

Libraries.io calculates a SourceRank for every package based on:

  • Stars, forks, watchers
  • Contributors count
  • Release frequency
  • Dependency count
  • README quality
  • License presence

Higher rank = more trustworthy package.

Rate Limits

  • Without API key: 60 requests/minute
  • With free API key: [register at libraries.io] for higher limits
  • Data is cached, so responses are fast

Use Cases

  1. Security teams: Audit all dependencies across projects
  2. Open source maintainers: Track who uses your package
  3. Developers: Choose between competing libraries objectively
  4. Researchers: Analyze open source ecosystem trends
  5. Product managers: Monitor competitor tech stacks

Combine with Other APIs

Pair Libraries.io with:


I explore free APIs and build developer tools. More: GitHub | Writing opportunities: Spinov001@gmail.com

Top comments (0)