{"openapi":"3.1.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.\n\nThe 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.\n\nHuman documentation, with the feeds, is at https://mspsoftware.net/api.","contact":{"email":"contact@mspsoftware.net"}},"externalDocs":{"description":"API documentation","url":"https://mspsoftware.net/api"},"servers":[{"url":"https://mspsoftware.net/api/v1"}],"security":[],"paths":{"/":{"get":{"summary":"The API index","operationId":"apiIndex","responses":{"302":{"description":"Redirects to this OpenAPI document at /api/v1/openapi.json."}}}},"/categories":{"get":{"summary":"List categories","operationId":"listCategories","responses":{"200":{"description":"Every category, with its published product count.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Category"}},"meta":{"type":"object","properties":{"total":{"type":"integer"}}}}}}}}}}},"/categories/{slug}":{"get":{"summary":"Get one category, with its published products","operationId":"getCategory","parameters":[{"name":"slug","in":"path","required":true,"description":"A slug: the name in lower case with hyphens.","schema":{"type":"string"}}],"responses":{"200":{"description":"The category, its buying guide and FAQ, and its published products.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/CategoryDetail"},"meta":{"type":"object","properties":{}}}}}}},"404":{"description":"No resource at that slug.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/software":{"get":{"summary":"Search published software listings","operationId":"searchSoftware","parameters":[{"name":"q","in":"query","schema":{"type":"string"},"description":"Matches product name, tagline or vendor name."},{"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, Featured listings first only when the query matches the product name.","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"]}}}}}}}}}}},"/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"}}}}}}},"/compare/{pair}":{"get":{"summary":"Compare two published listings","operationId":"getComparison","parameters":[{"name":"pair","in":"path","required":true,"description":"Two slugs joined by \"-vs-\", e.g. \"datto-rmm-vs-ninjaone\". Either order answers.","schema":{"type":"string"}}],"responses":{"200":{"description":"Both listings in full, the merged feature checklist and the comparison page URL.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/Comparison"},"meta":{"type":"object","properties":{}}}}}}},"404":{"description":"No resource at that slug.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/recent":{"get":{"summary":"List what changed lately","operationId":"getRecent","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"description":"How many of each to return."}],"responses":{"200":{"description":"The most recently updated listings and the most recently published reviews.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/RecentUpdates"},"meta":{"type":"object","properties":{"limit":{"type":"integer"}}}}}}}}}}},"/vendors/{slug}":{"get":{"summary":"Get one vendor, with the published products of it and its child companies","operationId":"getVendor","parameters":[{"name":"slug","in":"path","required":true,"description":"A slug: the name in lower case with hyphens.","schema":{"type":"string"}}],"responses":{"200":{"description":"The vendor, its child companies and every published product across them.","content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/Vendor"},"meta":{"type":"object","properties":{}}}}}}},"404":{"description":"No resource at that slug.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","title":"Error","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","examples":["not_found"]},"message":{"type":"string"}}}}},"Category":{"type":"object","title":"Category","properties":{"slug":{"type":"string","description":"The category name in lower case with hyphens, e.g. \"email-security\"."},"name":{"type":"string"},"description":{"type":"string","description":"Plain text, markdown stripped."},"product_count":{"type":"integer"},"url":{"type":"string","format":"uri"}}},"CategoryDetail":{"allOf":[{"$ref":"#/components/schemas/Category"},{"type":"object","properties":{"allowed_units":{"type":"array","items":{"type":"string"},"description":"The units a price in this category may be quoted per, most common first."},"updated_at":{"type":["string","null"],"format":"date-time","description":"The freshest updated_at across the published products in this category."},"buyer_guide":{"type":["string","null"],"description":"The category buying guide, plain text."},"faqs":{"type":"array","description":"The questions section of the buying guide.","items":{"$ref":"#/components/schemas/FaqItem"}},"products":{"type":"array","items":{"$ref":"#/components/schemas/SoftwareSummary"}}}}],"title":"CategoryDetail"},"FaqItem":{"type":"object","title":"FaqItem","properties":{"question":{"type":"string"},"answer":{"type":"string","description":"Plain text, markdown stripped."}}},"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","description":"The primary category only.","properties":{"slug":{"type":"string"},"name":{"type":"string"}}},"url":{"type":"string","format":"uri"},"rating":{"$ref":"#/components/schemas/Rating"},"starting_price":{"$ref":"#/components/schemas/StartingPrice"},"featured":{"type":"boolean","description":"A live sponsored placement, labelled Featured on the pages."},"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."}}},"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"],"description":"The editorial \"Our take\" section, plain text."},"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","properties":{"slug":{"type":"string"},"name":{"type":"string"}}},"secondary_categories":{"type":"array","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":"A live sponsored placement, labelled Featured on the pages."},"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"}}},"Comparison":{"type":"object","title":"Comparison","description":"The two listings a /compare page shows, with the feature checklist rows it puts side by side.","properties":{"a":{"$ref":"#/components/schemas/SoftwareDetail"},"b":{"$ref":"#/components/schemas/SoftwareDetail"},"features":{"type":"array","description":"Every feature of the two primary categories, merged by name, with each side's mark.","items":{"type":"object","properties":{"name":{"type":"string"},"a":{"type":"string","enum":["yes","no","unknown"]},"b":{"type":"string","enum":["yes","no","unknown"]}}}},"eligible":{"type":"boolean","description":"Whether the pair is worth comparing: a shared category, at least 5 marked features on each side, and a price or a review on one of them. The comparison page is noindex and unlinked when false."},"url":{"type":"string","format":"uri","description":"The comparison page, with the two slugs in alphabetical order."}}},"RecentUpdates":{"type":"object","title":"RecentUpdates","description":"What changed lately: the same entries as the two Atom feeds.","properties":{"listings":{"type":"array","description":"Indexable listings in order of most recently updated.","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"tagline":{"type":"string"},"url":{"type":"string","format":"uri"},"updated_at":{"type":"string","format":"date-time"}}}},"reviews":{"type":"array","description":"Newly published reviews: rating, title and the listing they are on, never a reviewer identity.","items":{"type":"object","properties":{"id":{"type":"string"},"rating":{"type":"integer","minimum":1,"maximum":5},"title":{"type":"string"},"product_slug":{"type":"string"},"product_name":{"type":"string"},"url":{"type":"string","format":"uri"},"updated_at":{"type":"string","format":"date-time"}}}}}},"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."}}},"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"}}}}}},"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","description":"What the price is charged per, in the words the category uses: endpoint, technician, user, mailbox."},"period":{"type":"string","enum":["month","year"],"description":"How often the unit price recurs."}}},"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."}}},"Vendor":{"type":"object","title":"Vendor","properties":{"slug":{"type":"string"},"name":{"type":"string"},"website_url":{"type":"string","format":"uri"},"description":{"type":["string","null"],"description":"Plain text, markdown stripped."},"url":{"type":"string","format":"uri"},"claimed":{"type":"boolean"},"parent_vendor":{"type":["object","null"],"description":"The company that owns this one, when there is one.","properties":{"slug":{"type":"string"},"name":{"type":"string"}}},"child_vendors":{"type":"array","description":"Companies this one owns; their products are included below.","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}}}},"products":{"type":"array","items":{"$ref":"#/components/schemas/SoftwareSummary"}}}}}}}