npm

npm Search API

Full-text search across the npm registry with weighted scoring.

OpenAPI Specification

npm-search-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: npm Hooks Downloads Search API
  description: The npm Hooks API allows developers to subscribe to notifications about changes in the npm registry. Hooks send HTTP POST payloads to a configured URI whenever a package is changed, enabling developers to build integrations that respond to registry events in real time. Users can add hooks to follow specific packages, track all activity of given npm users, or monitor all packages within an organization or user scope. The API provides endpoints for creating, listing, updating, and deleting hook subscriptions. Note that npm hooks services have been deprecated as of July 2024.
  version: 1.0.0
  contact:
    name: npm Support
    url: https://www.npmjs.com/support
  termsOfService: https://docs.npmjs.com/policies/terms
servers:
- url: https://registry.npmjs.org
  description: npm Public Registry
security:
- bearerAuth: []
tags:
- name: Search
  description: Full-text search across the npm registry with weighted scoring.
paths:
  /-/v1/search:
    get:
      operationId: searchPackages
      summary: Search packages
      description: Performs a full-text search across the npm registry. Results can be weighted by quality, popularity, and maintenance scores. Supports special search qualifiers such as author, maintainer, scope, and keywords filters. Qualifiers like not:unstable, not:insecure, is:unstable, and boost-exact can be included in the text parameter.
      tags:
      - Search
      parameters:
      - name: text
        in: query
        description: Full-text search query. Supports special qualifiers such as author:username, maintainer:username, scope:scopename, keywords:keyword, not:unstable, not:insecure, is:unstable, is:insecure, and boost-exact:true.
        required: true
        schema:
          type: string
      - name: size
        in: query
        description: Number of results to return. Maximum value is 250.
        required: false
        schema:
          type: integer
          default: 20
          minimum: 1
          maximum: 250
      - name: from
        in: query
        description: Offset for pagination, indicating the starting position in the result set.
        required: false
        schema:
          type: integer
          default: 0
          minimum: 0
      - name: quality
        in: query
        description: Weighting for the quality score component of search results, between 0 and 1.
        required: false
        schema:
          type: number
          minimum: 0
          maximum: 1
      - name: popularity
        in: query
        description: Weighting for the popularity score component of search results, between 0 and 1.
        required: false
        schema:
          type: number
          minimum: 0
          maximum: 1
      - name: maintenance
        in: query
        description: Weighting for the maintenance score component of search results, between 0 and 1.
        required: false
        schema:
          type: number
          minimum: 0
          maximum: 1
      responses:
        '200':
          description: Search results returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResults'
components:
  schemas:
    SearchResults:
      type: object
      description: Search results from the npm registry search endpoint.
      properties:
        objects:
          type: array
          description: List of search result objects.
          items:
            $ref: '#/components/schemas/SearchResultItem'
        total:
          type: integer
          description: The total number of matching results.
        time:
          type: string
          description: Timestamp of when the search was performed.
    SearchResultItem:
      type: object
      description: A single search result item containing package metadata and scoring information.
      properties:
        package:
          type: object
          description: Summary package metadata.
          properties:
            name:
              type: string
              description: The package name.
            scope:
              type: string
              description: The package scope, or "unscoped" if none.
            version:
              type: string
              description: The latest version of the package.
            description:
              type: string
              description: A short description of the package.
            keywords:
              type: array
              description: Keywords associated with the package.
              items:
                type: string
            date:
              type: string
              format: date-time
              description: The publication date of the latest version.
            links:
              type: object
              description: Links to related resources such as npm page, homepage, repository, and bugs.
              additionalProperties:
                type: string
            author:
              $ref: '#/components/schemas/Person'
            publisher:
              $ref: '#/components/schemas/Person'
            maintainers:
              type: array
              description: List of package maintainers.
              items:
                $ref: '#/components/schemas/Person'
        score:
          type: object
          description: Scoring breakdown for the package.
          properties:
            final:
              type: number
              description: The final combined score.
            detail:
              type: object
              description: Detailed score breakdown.
              properties:
                quality:
                  type: number
                  description: The quality score component.
                popularity:
                  type: number
                  description: The popularity score component.
                maintenance:
                  type: number
                  description: The maintenance score component.
        searchScore:
          type: number
          description: The search relevance score for this result.
    Person:
      type: object
      description: A person object representing a user, author, or maintainer.
      properties:
        name:
          type: string
          description: The display name of the person.
        email:
          type: string
          format: email
          description: The email address of the person.
        url:
          type: string
          format: uri
          description: The personal URL or website of the person.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: npm access token provided as a Bearer token.
externalDocs:
  description: npm Hooks Documentation
  url: https://blog.npmjs.org/post/145260155635/introducing-hooks-get-notifications-of-npm