Skip to content

Repology Lookup

Query package version information from Repology across multiple repositories.

Endpoint

GET /api/v1/repology/:package

Path Parameters

ParameterTypeRequiredDescription
packagestringYesPackage name to look up

Response

json
{
  "success": true,
  "data": {
    "package": "curl",
    "repositories": [
      {
        "repo": "nix_unstable",
        "version": "8.5.0",
        "status": "newest"
      },
      {
        "repo": "debian_12",
        "version": "7.88.1",
        "status": "outdated"
      },
      {
        "repo": "alpine_edge",
        "version": "8.5.0",
        "status": "newest"
      }
    ],
    "latestVersion": "8.5.0",
    "summary": {
      "totalRepos": 85,
      "newest": 42,
      "outdated": 38,
      "vulnerable": 5
    }
  },
  "timestamp": "2024-01-15T12:00:00.000Z"
}

Response Fields

Repository Object

FieldTypeDescription
repostringRepository identifier
versionstringPackage version in this repository
statusstringVersion status: newest, outdated, devel, unique, vulnerable

Summary Object

FieldTypeDescription
totalReposnumberTotal repositories tracking this package
newestnumberRepositories with the latest version
outdatednumberRepositories with outdated versions
vulnerablenumberRepositories with known vulnerable versions

Examples

Basic Lookup

bash
curl "https://api.vulnpatch.dev/api/v1/repology/curl"

Query OpenSSL Versions

bash
curl "https://api.vulnpatch.dev/api/v1/repology/openssl"

Code Examples

javascript
async function checkPackageVersion(packageName) {
  const response = await fetch(
    `https://api.vulnpatch.dev/api/v1/repology/${packageName}`
  );
  const { data } = await response.json();

  console.log(`Latest version: ${data.latestVersion}`);
  console.log(`Tracked in ${data.summary.totalRepos} repositories`);

  // Find nixpkgs version
  const nixpkgs = data.repositories.find(r => r.repo === 'nix_unstable');
  if (nixpkgs) {
    console.log(`Nixpkgs version: ${nixpkgs.version} (${nixpkgs.status})`);
  }
}
python
import requests

def check_package_version(package_name):
    response = requests.get(
        f'https://api.vulnpatch.dev/api/v1/repology/{package_name}'
    )
    data = response.json()['data']

    print(f"Latest version: {data['latestVersion']}")
    print(f"Tracked in {data['summary']['totalRepos']} repositories")

    # Find nixpkgs version
    for repo in data['repositories']:
        if repo['repo'] == 'nix_unstable':
            print(f"Nixpkgs version: {repo['version']} ({repo['status']})")
            break

Use Cases

  • Version comparison: Check if a package is up to date across distros
  • Vulnerability triage: Identify which versions are affected
  • Release tracking: Monitor when new versions are packaged

Package Name Format

Use the canonical package name (lowercase, no version suffix):

InputCorrect
python3python
libssl-devopenssl
nodejs18nodejs

Errors

Package Not Found

json
{
  "success": false,
  "error": "Package 'nonexistent' not found on Repology"
}

Caching

This endpoint is cached for 1 hour. The X-Cache header indicates cache status.

Helping secure open source