{
  "openapi": "3.0.3",
  "info": {
    "title": "PricePulse SaaS Pricing API",
    "description": "Free public API for SaaS pricing change data. No API key required. Tracks 44+ SaaS tools with verified pricing changes — when they raised prices, by how much, and what changed.\n\nBase URL: `https://getpricepulse.com`\n\nFor real-time monitoring alerts, see [PricePulse](https://getpricepulse.com).",
    "version": "1.0.0",
    "contact": {
      "name": "PricePulse",
      "url": "https://getpricepulse.com",
      "email": "hello@getpricepulse.com"
    },
    "license": {
      "name": "Free to use",
      "url": "https://getpricepulse.com/pricing-api.html"
    }
  },
  "servers": [
    {
      "url": "https://getpricepulse.com",
      "description": "Production"
    }
  ],
  "paths": {
    "/api/companies": {
      "get": {
        "summary": "List SaaS companies with pricing data",
        "description": "Returns a list of SaaS companies tracked by PricePulse, including pricing change history. Supports filtering by name search, company slug, category, and whether pricing has changed.",
        "operationId": "listCompanies",
        "tags": ["Companies"],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Search by company name, slug, or category (case-insensitive)",
            "schema": {
              "type": "string",
              "example": "notion"
            }
          },
          {
            "name": "slug",
            "in": "query",
            "required": false,
            "description": "Look up a single company by its unique slug. Returns a single company object instead of a list.",
            "schema": {
              "type": "string",
              "example": "notion",
              "enum": ["activecampaign", "adobe-cc", "ahrefs", "airtable", "amplitude", "asana", "basecamp", "brevo", "canva", "clickup", "convertkit", "datadog", "discord", "drift", "dropbox", "figma", "firebase", "freshbooks", "freshdesk", "github", "hubspot", "intercom", "jira", "klaviyo", "linear", "loom", "mailchimp", "miro", "monday", "notion", "pipedrive", "quickbooks", "salesforce", "semrush", "shopify", "slack", "stripe", "trello", "twilio", "typeform", "webflow", "zapier", "zendesk", "zoom"]
            }
          },
          {
            "name": "changed",
            "in": "query",
            "required": false,
            "description": "When `true`, only return companies that have changed pricing",
            "schema": {
              "type": "boolean",
              "example": true
            }
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "description": "Filter by product category",
            "schema": {
              "type": "string",
              "enum": ["project-management", "developer-tools", "design", "crm", "communication", "customer-support", "email-marketing", "seo", "marketing", "ecommerce", "payments", "storage", "forms", "accounting", "analytics", "cloud-infrastructure", "automation"],
              "example": "crm"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response with company list",
            "headers": {
              "Access-Control-Allow-Origin": {
                "schema": { "type": "string", "example": "*" }
              },
              "Cache-Control": {
                "schema": { "type": "string", "example": "public, max-age=3600, stale-while-revalidate=86400" }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    { "$ref": "#/components/schemas/CompanyListResponse" },
                    { "$ref": "#/components/schemas/SingleCompanyResponse" }
                  ]
                },
                "examples": {
                  "list": {
                    "summary": "List all companies",
                    "value": {
                      "ok": true,
                      "count": 44,
                      "companies": [
                        {
                          "slug": "notion",
                          "name": "Notion",
                          "category": "project-management",
                          "url": "notion.so/pricing",
                          "page": "https://getpricepulse.com/companies/notion-pricing.html",
                          "last_change": "2026-03",
                          "change_type": "price_increase",
                          "change_pct": 25,
                          "old_price": "$8/member/mo (Plus)",
                          "new_price": "$10/member/mo (Plus)",
                          "summary": "Raised Plus plan price from $8 to $10/member/mo"
                        }
                      ],
                      "meta": {
                        "source": "PricePulse — getpricepulse.com",
                        "description": "Verified SaaS pricing changes tracked by PricePulse monitoring engine",
                        "monitor_your_stack": "https://getpricepulse.com/signup.html",
                        "last_updated": "2026-05-10"
                      }
                    }
                  },
                  "single": {
                    "summary": "Single company lookup (?slug=notion)",
                    "value": {
                      "ok": true,
                      "company": {
                        "slug": "notion",
                        "name": "Notion",
                        "category": "project-management",
                        "url": "notion.so/pricing",
                        "page": "https://getpricepulse.com/companies/notion-pricing.html",
                        "last_change": "2026-03",
                        "change_type": "price_increase",
                        "change_pct": 25,
                        "old_price": "$8/member/mo (Plus)",
                        "new_price": "$10/member/mo (Plus)",
                        "summary": "Raised Plus plan price from $8 to $10/member/mo"
                      },
                      "source": "getpricepulse.com"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Company not found (only when using ?slug=)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": { "type": "string", "example": "Company not found" },
                    "hint": { "type": "string", "example": "Try /api/companies to list all slugs" }
                  }
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed (only GET is supported)"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Company": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "description": "Unique identifier for the company",
            "example": "notion"
          },
          "name": {
            "type": "string",
            "description": "Display name of the company",
            "example": "Notion"
          },
          "category": {
            "type": "string",
            "description": "Product category",
            "example": "project-management"
          },
          "url": {
            "type": "string",
            "description": "Pricing page URL (without https://)",
            "example": "notion.so/pricing"
          },
          "page": {
            "type": "string",
            "description": "Full PricePulse page URL for this company",
            "example": "https://getpricepulse.com/companies/notion-pricing.html"
          },
          "last_change": {
            "type": "string",
            "nullable": true,
            "description": "Month of last pricing change (YYYY-MM format)",
            "example": "2026-03"
          },
          "change_type": {
            "type": "string",
            "nullable": true,
            "description": "Type of pricing change",
            "enum": ["price_increase", "free_tier_cut", "free_tier_removed", "restructure", "model_change", "feature_add"],
            "example": "price_increase"
          },
          "change_pct": {
            "type": "number",
            "nullable": true,
            "description": "Percentage change in price (null if not applicable)",
            "example": 25
          },
          "old_price": {
            "type": "string",
            "nullable": true,
            "description": "Previous price description",
            "example": "$8/member/mo (Plus)"
          },
          "new_price": {
            "type": "string",
            "nullable": true,
            "description": "New price description",
            "example": "$10/member/mo (Plus)"
          },
          "summary": {
            "type": "string",
            "description": "Human-readable summary of the pricing change",
            "example": "Raised Plus plan price from $8 to $10/member/mo"
          }
        },
        "required": ["slug", "name", "category", "url", "page", "summary"]
      },
      "Meta": {
        "type": "object",
        "properties": {
          "source": { "type": "string", "example": "PricePulse — getpricepulse.com" },
          "description": { "type": "string" },
          "monitor_your_stack": { "type": "string", "example": "https://getpricepulse.com/signup.html" },
          "last_updated": { "type": "string", "example": "2026-05-10" }
        }
      },
      "CompanyListResponse": {
        "type": "object",
        "properties": {
          "ok": { "type": "boolean", "example": true },
          "count": { "type": "integer", "example": 44 },
          "companies": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/Company" }
          },
          "meta": { "$ref": "#/components/schemas/Meta" }
        },
        "required": ["ok", "count", "companies", "meta"]
      },
      "SingleCompanyResponse": {
        "type": "object",
        "properties": {
          "ok": { "type": "boolean", "example": true },
          "company": { "$ref": "#/components/schemas/Company" },
          "source": { "type": "string", "example": "getpricepulse.com" }
        },
        "required": ["ok", "company", "source"]
      }
    }
  },
  "tags": [
    {
      "name": "Companies",
      "description": "SaaS company pricing data endpoints"
    }
  ],
  "externalDocs": {
    "description": "Full API documentation with live examples",
    "url": "https://getpricepulse.com/pricing-api.html"
  }
}
