jsDelivr's data API (`data.jsdelivr.com`) returns JSON metadata for any package it serves — versions, entry points, file trees, and download-count stats for npm and GitHub-hosted projects — alongside the free asset CDN itself, which pulls files from npm and GitHub and fronts them with Fastly, Cloudflare, and other sponsor networks. Both the CDN and the data API are free with no signup, no bandwidth limits, and no rate limiting for normal use; the project is sustained entirely by CDN sponsors rather than paid plans.
jsDelivr's data API returns metadata for any package it serves over its free CDN: versions, dist-tags, entry-point files, and download-count stats for npm and GitHub-hosted projects. No key is needed, and jsDelivr enforces no rate limit for normal use.
GET/v1/packages/npm/@{scope}/{package}/resolvedGet a resolved version from a range or a tag (scoped)
Parameters
Name
In
Required
Type
scope
path
yes
string
package
path
yes
string
specifier
query
no
string
Responses
Status
Description
Schema
200
—
—
404
—
—
GET/v1/packages/npm/@{scope}/{package}@{version}Get version metadata (scoped)
Parameters
Name
In
Required
Type
scope
path
yes
string
package
path
yes
string
version
path
yes
string
structure
query
no
string
Responses
Status
Description
Schema
200
—
—
403
—
—
404
—
—
GET/v1/packages/npm/@{scope}/{package}@{version}/entrypointsGet version entry points (scoped)
Parameters
Name
In
Required
Type
scope
path
yes
string
package
path
yes
string
version
path
yes
string
Responses
Status
Description
Schema
200
—
—
404
—
—
GET/v1/packages/npm/{package}Get package metadata
Parameters
Name
In
Required
Type
package
path
yes
string
Responses
Status
Description
Schema
200
—
—
404
—
—
GET/v1/packages/npm/{package}/resolvedGet a resolved version from a range or a tag
Parameters
Name
In
Required
Type
package
path
yes
string
specifier
query
no
string
Responses
Status
Description
Schema
200
—
—
404
—
—
GET/v1/packages/npm/{package}@{version}Get version metadata
Parameters
Name
In
Required
Type
package
path
yes
string
version
path
yes
string
structure
query
no
string
Responses
Status
Description
Schema
200
—
—
403
—
—
404
—
—
GET/v1/packages/npm/{package}@{version}/entrypointsGet version entry points
Parameters
Name
In
Required
Type
package
path
yes
string
version
path
yes
string
Responses
Status
Description
Schema
200
—
—
404
—
—
Stats1
Provides a wide range of usage statistics of jsDelivr.
Most data are available with a two days delay, monthly and yearly summaries are available with a four days delay.
Please note that different categories of data have different historical availability.
The [List stat periods](#get-/v1/stats/periods) endpoint provides
information about which data are available for which time periods.
GET/v1/stats/periodsList stats periods
Parameters
Name
In
Required
Type
limit
query
no
integer
page
query
no
integer
Responses
Status
Description
Schema
200
—
—
400
—
—
Stats: packages1
Provides detailed usage information for npm and GitHub packages.
GET/v1/stats/packagesList top packages
Parameters
Name
In
Required
Type
by
query
no
string
type
query
no
string
period
query
no
string
limit
query
no
integer
page
query
no
integer
Responses
Status
Description
Schema
200
—
—
400
—
—
Stats: GitHub packages5
Provides usage statistics for packages served from GitHub repositories.
The versions list runs newest first, and pre-releases are mixed in. A pre-release can sort first when it is newer than the latest stable release. Read tags.latest for the stable version, not versions[0]
An unknown package returns HTTP 404 with a JSON body such as {"status": 404, "message": "Couldn't fetch versions for <name>."}. But the stats endpoint, /stats/packages/npm/<name>, returns HTTP 200 for an unknown package, with a total of 0 and rank: null. A 200 from stats does not prove that the package exists
Version-specific data (entry-point files, per-version stats) lives at a separate URL, /packages/npm/{name}@{version}/entrypoints, given to you in each version's own links object rather than fetched inline