# SiteCheck Package Search

> SiteCheck Package Search is a paid API for AI agents from api.sitecheck-api.workers.dev, paid per call via x402, $0.002/call, status unknown (last checked 2026-10-16).

Search for open-source packages by name or keywords across npm, crates.io, PyPI, RubyGems, NuGet, and Packagist registries

## Facts

- Endpoint: GET https://api.sitecheck-api.workers.dev/api/package/search?utm_source=zero.xyz
- Price: $0.002/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-16
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/sitecheck-package-search-c95f2ff6
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_Q-UX_O9iLgEnXVcAK2GMt

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability sitecheck-package-search-c95f2ff6
```

Example prompt: Search for packages named 'express' across npm, PyPI, and crates.io — show me the top 3 results per registry including version, download count, and description.

## When to prefer this

Use this endpoint when you need to look up or compare open-source packages across multiple language ecosystems simultaneously. It is ideal when you want download stats, version info, and repository links from npm, crates.io, RubyGems, NuGet, Packagist, and PyPI in a single call rather than querying each registry API separately. Prefer this over direct registry APIs when you need cross-ecosystem discovery or a unified response format.

## Known failure modes

- Missing required query parameter 'q' returns a validation error
- Query string exceeding 100 characters may be rejected
- Ecosystems parameter with invalid registry names returns an error or ignores bad values
- PyPI only supports exact name matches, not keyword search — partial queries may return no results
- Some registries may be temporarily unavailable and appear in the 'unavailable' list
- limit values outside 1-10 range may default or error

## How this service works

Searches package names and descriptions on npm, crates.io, Packagist, RubyGems and NuGet, returning name, version, description, downloads where the registry gives them, licence, repository and last publish date. PyPI has no search API: it is checked by exact name only. Registries that fail are listed in unavailable. Limit per registry max 10.

## Output

Returns a JSON object with a results array where each item includes package name, version, download count, download period, ecosystem, repository URL, description, and last publish date. Also includes metadata like the query string, source registries queried, a checkedAt timestamp, and any unavailable registries.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "q"
     ],
     "properties": {
      "q": {
       "type": "string",
       "description": "Package name or keywords (1-100 characters)"
      },
      "limit": {
       "type": "string",
       "description": "Results per registry, 1-10 (default 5)"
      },
      "ecosystems": {
       "type": "string",
       "description": "Comma list of npm, crates, packagist, rubygems, nuget, pypi (default: all)"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 2,
  "query": "express",
  "source": "npm registry, crates.io API, Packagist, RubyGems.org, NuGet search, PyPI JSON (each registry's own terms and licences)",
  "results": [
   {
    "url": "https://www.npmjs.com/package/express",
    "name": "express",
    "version": "5.3.0",
    "downloads": 635513489,
    "ecosystem": "npm",
    "repository": "git+https://github.com/expressjs/express.git",
    "description": "Fast, unopinionated, minimalist web framework",
    "lastPublish": "2026-10-09T12:56:54.505Z",
    "downloadsPeriod": "last 30 days"
   },
   {
    "url": "https://www.npmjs.com/package/@types/express",
    "name": "@types/express",
    "version": "5.0.6",
    "downloads": 299655572,
    "ecosystem": "npm",
    "repository": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
    "description": "TypeScript definitions for express",
    "lastPublish": "2025-12-01T20:35:51.488Z",
    "downloadsPeriod": "last 30 days"
   }
  ],
  "pypiNote": "PyPI: exact name match only (no search API)",
  "checkedAt": "2026-10-15T18:21:07.766Z",
  "unavailable": []
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/sitecheck-package-search-c95f2ff6/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.sitecheck-api.workers.dev](https://www.zero.xyz/host/api.sitecheck-api.workers.dev/llms.txt)
