{"openapi":"3.1.0","info":{"title":"Track My Subscriptions price catalog","version":"2026-10-01","description":"Public US list prices for consumer subscriptions. This is not a billing or account API. Prices exclude tax and can differ from what a person pays."},"servers":[{"url":"https://www.trackmysubscriptions.com/"}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","description":"Optional. The price catalog is public with no token. This scope only reads US list prices. It does not cover accounts, billing, exports, or calendar feeds.","flows":{"clientCredentials":{"tokenUrl":"https://www.trackmysubscriptions.com/oauth/token","scopes":{"catalog:read":"Read US list prices for subscriptions."}}}}},"schemas":{"Problem":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"},"error":{"type":"string"}},"required":["code","message","hint","status"]}}},"security":[{},{"oauth2":["catalog:read"]}],"paths":{"/api/health":{"get":{"operationId":"health","summary":"Catalog health","responses":{"200":{"description":"The site is serving the public catalog.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","const":"ok"}},"required":["status"]}}}}}}},"/api/catalog/services":{"get":{"operationId":"searchServices","summary":"Search subscription list prices","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":80},"description":"Name, slug or domain fragment, such as netflix."},{"name":"category","in":"query","required":false,"schema":{"type":"string","enum":["streaming","music","ai","productivity","dev","design","gaming","news","fitness","education","social","shopping","security","finance"]}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":300,"default":50}}],"responses":{"200":{"description":"Matching services and their US list prices."},"400":{"description":"The query is too long or the category is unknown.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"},"error":{"type":"string"}},"required":["code","message","hint","status"]}}}}}}},"/api/catalog/services/{slug}":{"get":{"operationId":"getService","summary":"One service and its plans","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9-]+$"}}],"responses":{"200":{"description":"The service and its plans."},"404":{"description":"No service uses that slug.","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"message":{"type":"string"},"hint":{"type":"string"},"error":{"type":"string"}},"required":["code","message","hint","status"]}}}}}}}}}