> ## Documentation Index
> Fetch the complete documentation index at: https://apidocs.neetokb.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Search articles

> This API runs a full-text search across the workspace's published articles. Results are ranked by relevance, with the title weighted highest, then content, slug, category name, and keywords. Each match includes highlighted snippets showing where the search term appears.

<Info>Replace `{your-subdomain}` with your workspace's subdomain. <br /> Learn how to find your subdomain in [Workspace subdomain](/getting-started/workspace-subdomain).</Info>


## OpenAPI

````yaml bundled/search.yaml GET /search
openapi: 3.0.3
info:
  title: NeetoKB Search API
  description: API to run a full-text search across published articles in a workspace.
  version: 1.0.0
servers:
  - description: NeetoKB API
    url: https://{your-subdomain}.neetokb.com/api/external/v2
    variables:
      your-subdomain:
        default: spinkart
        description: >-
          Replace **spinkart** with your [workspace's
          subdomain](/getting-started/workspace-subdomain).
security: []
paths:
  /search:
    get:
      tags:
        - Search
      summary: Search articles
      description: >-
        This API runs a full-text search across the workspace's published
        articles. Results are ranked by relevance, with the title weighted
        highest, then content, slug, category name, and keywords. Each match
        includes highlighted snippets showing where the search term appears.
      parameters:
        - $ref: '#/components/parameters/api_key_header'
        - in: query
          name: search_term
          description: >-
            The text to search for. Matching is performed from the start of each
            word.
          required: true
          schema:
            type: string
            example: billing
        - $ref: '#/components/parameters/page_number_param'
        - $ref: '#/components/parameters/page_size_param'
      responses:
        '200':
          description: OK - Request succeeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/search_response'
components:
  parameters:
    api_key_header:
      in: header
      name: X-Api-Key
      description: >-
        Use the X-Api-Key header to provide your workspace API key. Refer to
        [Authentication](/getting-started/authentication) for more information.
      required: true
      schema:
        type: string
        default: your-api-key
    page_number_param:
      in: query
      name: page_number
      description: >-
        Retrieve paginated results by specifying the desired page number.
        Defaulting to 1 when omitted.
      required: false
      schema:
        type: integer
    page_size_param:
      in: query
      name: page_size
      description: >-
        Set the number of results returned in the response. Defaulting to 30
        when omitted.
      required: false
      schema:
        type: integer
  schemas:
    search_response:
      type: object
      properties:
        matches:
          type: array
          items:
            $ref: '#/components/schemas/search_match'
        pagination:
          $ref: '#/components/schemas/pagination'
    search_match:
      type: object
      properties:
        id:
          type: string
          format: uuid
        url:
          type: string
          example: https://spinkart.neetokb.com/articles/billing-and-invoices
        title:
          type: string
          example: Billing and invoices
        category:
          type: string
          nullable: true
          example: Getting Started
        category_url:
          type: string
          nullable: true
          example: https://spinkart.neetokb.com/folders/getting-started
        matched_title:
          type: string
          nullable: true
          description: >-
            The article's title with the matched term wrapped in `<span
            class=article-matched-tag>`. Null when the term did not match the
            title.
          example: <span class=article-matched-tag>Billing</span> and invoices
        matched_content:
          type: string
          nullable: true
          description: >-
            A fragment of the article's content with the matched term wrapped in
            `<span class=article-matched-tag>`. Null when the term did not match
            the content.
          example: >-
            Your <span class=article-matched-tag>billing</span> cycle starts on
            the day you subscribe.
        matched_category:
          type: string
          nullable: true
          description: >-
            The category name with the matched term wrapped in `<span
            class=article-matched-tag>`. Null when the term did not match the
            category.
          example: null
    pagination:
      type: object
      properties:
        total_records:
          type: integer
        total_pages:
          type: integer
        current_page_number:
          type: integer
        page_size:
          type: integer

````