MSP Software Software API

The Software API from MSP Software — 2 operation(s) for software.

Operations 2

GET /software Search published software listings #
GET /software/{slug} Get one published software listing #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/mspsoftware-net:mspsoftware-net-software-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

mspsoftware-net-software-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: MSP Software API
  version: 1.0.0
  description: 'Read-only JSON API for MSP Software: categories, software listings and vendors. No authentication, no writes, no PII, no individual price reports.


    The same data reaches machines four other ways: an MCP server at https://mspsoftware.net/mcp (Streamable HTTP, read-only), a short index at https://mspsoftware.net/llms.txt, every listing in one file at https://mspsoftware.net/llms-full.txt, and one listing as Markdown at https://mspsoftware.net/software/{slug}.md.


    Human documentation, with the feeds, is at https://mspsoftware.net/api.


    Facts, feature checklists, buyer guides, FAQ answers, aggregate ratings and reported-pricing aggregates on MSP Software may be quoted with attribution to MSP Software and a link to the page cited. Reviews are the reviewers'' own words and are not covered.'
  contact:
    email: contact@mspsoftware.net
servers:
- url: https://mspsoftware.net/api/v1
security: []
tags:
- name: Software
paths:
  /software:
    get:
      summary: Search published software listings
      operationId: searchSoftware
      parameters:
      - name: q
        in: query
        schema:
          type: string
        description: 'Matches product name or slug, tagline, vendor name, former vendor names, parent company name and vendor domains. Ranked: exact product name, exact vendor name, prefix matches, then the rest, alphabetical within each.'
      - name: category
        in: query
        schema:
          type: string
        description: A category slug.
      - name: page
        in: query
        schema:
          type: integer
          minimum: 1
          default: 1
        description: 20 results per page.
      responses:
        '200':
          description: 20 results per page. At most two paid placements whose name matches q come first with placement "sponsored"; the rest are organic.
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                - meta
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/SoftwareSummary'
                  meta:
                    type: object
                    properties:
                      page:
                        type: integer
                      per_page:
                        type: integer
                      total:
                        type: integer
                      total_pages:
                        type: integer
                      q:
                        type:
                        - string
                        - 'null'
                      category:
                        type:
                        - string
                        - 'null'
      tags:
      - Software
  /software/{slug}:
    get:
      summary: Get one published software listing
      operationId: getSoftware
      parameters:
      - name: slug
        in: path
        required: true
        description: 'A slug: the name in lower case with hyphens.'
        schema:
          type: string
      responses:
        '200':
          description: Facts, feature list, integrations both ways, FAQ, alternatives, reported pricing and review summary.
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                - meta
                properties:
                  data:
                    $ref: '#/components/schemas/SoftwareDetail'
                  meta:
                    type: object
                    properties: {}
        '404':
          description: No resource at that slug.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Software
components:
  schemas:
    SoftwareSummary:
      type: object
      title: SoftwareSummary
      properties:
        slug:
          type: string
          description: The product name in lower case with hyphens, e.g. "datto-rmm".
        name:
          type: string
        tagline:
          type: string
        vendor:
          type: object
          properties:
            slug:
              type: string
            name:
              type: string
        category:
          type:
          - object
          - 'null'
          description: The primary category only. Null while that category is not published.
          properties:
            slug:
              type: string
            name:
              type: string
        url:
          type: string
          format: uri
        rating:
          $ref: '#/components/schemas/Rating'
        starting_price:
          $ref: '#/components/schemas/StartingPrice'
        free_trial:
          type:
          - boolean
          - 'null'
        deployment:
          type: array
          items:
            type: string
        featured:
          type: boolean
          description: 'Deprecated: the same value as sponsored.'
        sponsored:
          type: boolean
          description: The product has a live paid placement somewhere on the site.
        sponsorship_label:
          type:
          - string
          - 'null'
          enum:
          - Sponsored
          - null
          description: 'The label the site shows on a paid placement: "Sponsored" when sponsored is true, else null.'
        match:
          type:
          - string
          - 'null'
          enum:
          - product_name
          - vendor_name
          - previous_name
          - parent_vendor_name
          - domain
          - tagline
          - null
          description: 'Present on search results only: the field q matched, the best-ranked one when several do (a slug match counts as product_name). Null when there is no q.'
        placement:
          type: string
          enum:
          - sponsored
          - organic
          description: 'Present on search results only: "sponsored" for the at most two paid placements whose name matches q, shown first and labelled Sponsored; every other result is "organic" and ranked without regard to payment.'
        via_vendor:
          type:
          - object
          - 'null'
          description: 'Present on a vendor''s products only: the child company that makes this product, or null when the vendor makes it itself.'
          properties:
            slug:
              type: string
            name:
              type: string
        compare_url:
          type:
          - string
          - 'null'
          format: uri
          description: 'Present on alternatives only: the side-by-side comparison page for this product and the one it is an alternative to, or null when that pair is not comparable.'
    SubRatings:
      type:
      - object
      - 'null'
      title: SubRatings
      description: Mean of each sub-rating across published reviews, one decimal place out of 5. Null when the listing has no reviews; a field is null when no review scored it.
      properties:
        ease_of_use:
          type:
          - number
          - 'null'
        features:
          type:
          - number
          - 'null'
        support:
          type:
          - number
          - 'null'
        value:
          type:
          - number
          - 'null'
    StartingPrice:
      type:
      - object
      - 'null'
      title: StartingPrice
      description: The vendor-published entry price. Null when the vendor publishes none.
      properties:
        minor:
          type: integer
          description: Integer minor units (pence, cents), never a decimal.
        currency:
          type: string
          enum:
          - GBP
          - USD
          - EUR
          - AUD
          - CAD
        unit:
          type: string
          enum:
          - endpoint
          - workstation
          - server
          - user
          - technician
          - site
          - mailbox
          - tb
          - tenant
          - network_device
          - connection
          - client
          - flat
          description: 'What the price is charged per: endpoint, workstation, server, user, technician, site, mailbox, tb, tenant, network_device, connection (a concurrent remote session), client (a managed client organisation), or flat (one price for the account, read as "per month").'
        period:
          type: string
          enum:
          - month
          - year
          description: How often the unit price recurs.
    ReportedPricing:
      type: object
      title: ReportedPricing
      description: One (unit, currency) aggregate, only ever shown at 3 or more independent reporters.
      properties:
        unit:
          type: string
          description: 'What MSPs reported paying per: endpoint, technician, user, mailbox.'
        currency:
          type: string
        n:
          type: integer
          minimum: 3
          description: Independent reporters behind the aggregate.
        median_minor:
          type: integer
          description: Median monthly price in minor units, normalised to one month.
        low_minor:
          type:
          - integer
          - 'null'
          description: Lowest reported monthly price in minor units.
        high_minor:
          type:
          - integer
          - 'null'
          description: Highest reported monthly price in minor units.
        window_months:
          type: integer
          enum:
          - 12
          - 24
          description: How far back the reports behind this aggregate reach.
        latest_month:
          type: string
          description: Month of the most recent report, as YYYY-MM.
          examples:
          - 2026-08
        auto_renew_yes:
          type: integer
          description: Reporters who said the contract auto-renews.
        auto_renew_n:
          type: integer
          description: Reporters who answered the auto-renewal question at all.
        typical_notice_days:
          type:
          - integer
          - 'null'
          description: Median notice period to cancel, in days.
        min_quantity_reported:
          type:
          - integer
          - 'null'
          description: Smallest quantity any reporter bought at this price.
    FaqItem:
      type: object
      title: FaqItem
      properties:
        question:
          type: string
        answer:
          type: string
          description: Plain text, markdown stripped.
    Rating:
      type:
      - object
      - 'null'
      title: Rating
      properties:
        average:
          type: number
          description: Mean rating, one decimal place, out of 5.
        count:
          type: integer
          description: Published reviews counted in the average.
    SoftwareDetail:
      type: object
      title: SoftwareDetail
      properties:
        slug:
          type: string
          description: The product name in lower case with hyphens, e.g. "datto-rmm".
        name:
          type: string
        tagline:
          type: string
        summary:
          type:
          - string
          - 'null'
          description: The lead paragraph of the listing page, plain text.
        description:
          type:
          - string
          - 'null'
          description: The vendor description, plain text, markdown stripped.
        editor_note:
          type:
          - string
          - 'null'
          deprecated: true
          description: Deprecated. Always null; editorial notes are not public.
        vendor:
          type: object
          properties:
            slug:
              type: string
            name:
              type: string
            url:
              type: string
              format: uri
            claimed:
              type: boolean
              description: Whether a verified vendor account holds this vendor.
        primary_category:
          type:
          - object
          - 'null'
          description: Null while the primary category is not published.
          properties:
            slug:
              type: string
            name:
              type: string
        secondary_categories:
          type: array
          description: Up to two further published categories the product is also listed under.
          items:
            type: object
            properties:
              slug:
                type: string
              name:
                type: string
        url:
          type: string
          format: uri
        website_url:
          type: string
          format: uri
        pricing_url:
          type:
          - string
          - 'null'
          format: uri
        featured:
          type: boolean
          description: 'Deprecated: the same value as sponsored.'
        sponsored:
          type: boolean
          description: The product has a live paid placement somewhere on the site.
        sponsorship_label:
          type:
          - string
          - 'null'
          enum:
          - Sponsored
          - null
          description: 'The label the site shows on a paid placement: "Sponsored" when sponsored is true, else null.'
        created_at:
          type: string
          format: date-time
          description: When the listing was first published.
        updated_at:
          type: string
          format: date-time
          description: Moves only when the content or facts of the listing actually change.
        editor_reviewed_at:
          type:
          - string
          - 'null'
          format: date-time
          description: When MSP Software last checked the facts against the vendor site.
        facts:
          type: object
          description: Vendor-published facts. A null means the vendor does not publish one, never a guess.
          properties:
            starting_price:
              $ref: '#/components/schemas/StartingPrice'
            free_trial:
              type:
              - boolean
              - 'null'
            free_version:
              type:
              - boolean
              - 'null'
            pricing_plans:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                  priceMinor:
                    type: integer
                    description: Integer minor units (pence, cents).
                  currency:
                    type: string
                  unit:
                    type: string
                    description: What the plan price is charged per.
                  period:
                    type: string
                    enum:
                    - month
                    - year
                  highlights:
                    type: array
                    items:
                      type: string
            support_options:
              type: array
              items:
                type: string
            training_options:
              type: array
              items:
                type: string
            deployment:
              type: array
              items:
                type: string
            platforms:
              type: array
              items:
                type: string
            typical_sizes:
              type: array
              items:
                type: string
              description: MSP sizes, in technicians, that report using it.
            hq_country:
              type:
              - string
              - 'null'
            founded_year:
              type:
              - integer
              - 'null'
        feature_list:
          type: array
          description: Grouped by category, since a product can carry secondary categories.
          items:
            type: object
            properties:
              category:
                type: object
                properties:
                  slug:
                    type: string
                  name:
                    type: string
              features:
                type: array
                items:
                  type: object
                  properties:
                    key:
                      type: string
                    name:
                      type: string
                    supported:
                      type: string
                      enum:
                      - 'yes'
                      - 'no'
                      - unknown
                    note:
                      type:
                      - string
                      - 'null'
        integrations:
          type: array
          description: What this vendor lists as an integration.
          items:
            type: object
            properties:
              name:
                type: string
              url:
                type: string
                format: uri
              integrates_with_slug:
                type:
                - string
                - 'null'
                description: Set when the integration is itself a listing on this site.
        integrated_by:
          type: array
          description: 'The other direction: listings on this site that name this product as an integration of theirs.'
          items:
            type: object
            properties:
              slug:
                type: string
              name:
                type: string
              url:
                type: string
                format: uri
              category:
                type: object
                properties:
                  slug:
                    type: string
                  name:
                    type: string
        faqs:
          type: array
          description: 'The FAQ shown on the listing page: generated from the facts first, then the editor-written questions.'
          items:
            $ref: '#/components/schemas/FaqItem'
        alternatives:
          type: array
          description: Up to four ranked alternatives. The full ranked list, with a feature table, is the page at /software/{slug}/alternatives.
          items:
            $ref: '#/components/schemas/SoftwareSummary'
        reported_pricing:
          type: array
          items:
            $ref: '#/components/schemas/ReportedPricing'
        review_summary:
          $ref: '#/components/schemas/ReviewSummary'
        sub_ratings:
          $ref: '#/components/schemas/SubRatings'
    Error:
      type: object
      title: Error
      required:
      - error
      properties:
        error:
          type: object
          required:
          - code
          - message
          properties:
            code:
              type: string
              examples:
              - not_found
            message:
              type: string
    ReviewSummary:
      type:
      - object
      - 'null'
      title: ReviewSummary
      description: Aggregate only. Never an individual review, never a reviewer identifier.
      properties:
        average:
          type: number
          description: Mean rating, one decimal place, out of 5.
        count:
          type: integer
        distribution:
          type: array
          description: Five entries, 5 stars first.
          items:
            type: object
            properties:
              star:
                type: integer
                minimum: 1
                maximum: 5
              count:
                type: integer
externalDocs:
  description: API documentation
  url: https://mspsoftware.net/api