Developer Ecosystem

Package Registry Entry

/extract/json

Package from npm, PyPI, crates.io, etc.

Download the schemadeveloper-ecosystem/package-registry-entry.json

package-registry-entry.schema

// names marked ? are optional

registry:string// The package registry this entry comes from. Commonly found in: npmjs.com/package, pypi.org/project, crates.io/crates. One of: npm, pypi, crates_io, rubygems, packagist, nuget, maven, go_modules, other.
package_name:string// Name of the package as listed in the registry.
package_version:string// Version of the package this record describes.
latest_version?:string// The latest stable version available in the registry.
description?:string// Short description of the package.
homepage_url?:string// Homepage URL for the package.
repository_url?:string// Source repository URL (e.g., GitHub link).
license?:string// SPDX license identifier or license name.
keywords?:string[]// Keywords or tags associated with the package.
author_name?:string// Name of the primary author.
author_email?:string// Email of the primary author.
maintainers?:string[]// List of maintainer usernames or names.
dependencies?:string[]// List of runtime dependencies.
dev_dependencies?:string[]// List of development dependencies.
weekly_downloads?:number// Number of downloads in the past 7 days.
total_downloads?:number// Total all-time download count.
dependent_packages_count?:number// Number of packages that depend on this package.
github_stars?:number// GitHub star count for the linked repository.
open_issues_count?:number// Number of open issues on the repository.
first_published_at?:string// ISO 8601 datetime when the package was first published.
last_published_at?:string// ISO 8601 datetime of the most recent release.
deprecated?:boolean// Whether the package has been marked as deprecated.
deprecation_message?:string// Message explaining why or what to migrate to.
page_title?:string// Title of the source page. Tabstack auto-fills this from page metadata when left empty.
favicon?:string// Favicon URL of the source page. Tabstack auto-fills this from page metadata when left empty.

Try it live

A sample Package Registry Entry document, generated from the schema. Edit it, or paste a real response, and see it checked against the schema instantly. It runs in your browser, nothing is sent anywhere.

your-output.json
validation

Valid, matches Package Registry Entry

Every required field is present and each value matches its type. Extra fields are allowed. A field the page does not carry is not guaranteed to come back as null, so check values rather than only checking for null.

/extract/json

Copy-paste usage

The same call in TypeScript, Python, and curl. Point it at your own URL and go. The schema drives the response, so you get back the fields you asked for instead of a page to parse.

Features

  • Typed TypeScript and Python SDKs
  • One call, no parsing code and no second LLM pass
  • The same field names on every request, even when the page layout changes
package-registry-entry.ts
// curl -sfLO https://raw.githubusercontent.com/Mozilla-Ocho/tabstack-schemas/main/developer-ecosystem/package-registry-entry.json
import Tabstack from '@tabstack/sdk'
import schema from './package-registry-entry.json' with { type: 'json' }

const client = new Tabstack() // reads TABSTACK_API_KEY from the environment

try {
  const data = await client.extract.json({
    url: 'https://github.com/example/project',
    json_schema: schema,
    effort: 'standard', // 'min' | 'standard' | 'max'
  })

  console.log(data)
} catch (err) {
  console.error('Extraction failed:', err)
}

Ship this schema in one call.

Pass a URL, get matching JSON back. Free to start, no extraction layer to maintain.