{
 "openapi": "3.1.0",
 "info": {
  "title": "Trades With AI + SaaS Price Watch API",
  "version": "1.0.0",
  "description": "Read-only data on AI tools for trades businesses (HVAC, plumbing, roofing, cleaning, and more) and public SaaS plan prices. Every price includes the quote from the vendor page and the date checked. No auth. Rate limited."
 },
 "servers": [
  {
   "url": "https://tradeswithai.com/api/v1"
  }
 ],
 "paths": {
  "/trade-tools": {
   "get": {
    "operationId": "searchTradeTools",
    "summary": "Search AI tools for trades businesses",
    "parameters": [
     {
      "name": "trade",
      "in": "query",
      "required": false,
      "description": "Trade, like hvac, plumbing, electrical, roofing, lawn, cleaning, pest, contractor",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "task",
      "in": "query",
      "required": false,
      "description": "What the business wants done, like answer missed calls or estimates",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "category",
      "in": "query",
      "required": false,
      "description": "receptionist, fsm, estimating, reviews, marketing, or connectors",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "max_monthly_price",
      "in": "query",
      "required": false,
      "description": "Max monthly price in USD",
      "schema": {
       "type": "number"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "1 to 25",
      "schema": {
       "type": "integer"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Matching tools",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "additionalProperties": true
        }
       }
      }
     },
     "404": {
      "description": "Not found"
     },
     "429": {
      "description": "Rate limited"
     }
    }
   }
  },
  "/trade-tools/{slug}": {
   "get": {
    "operationId": "getTradeTool",
    "summary": "Get one trades tool with quoted prices",
    "parameters": [
     {
      "name": "slug",
      "in": "path",
      "required": true,
      "description": "Tool slug, like jobber",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Tool details",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "additionalProperties": true
        }
       }
      }
     },
     "404": {
      "description": "Not found"
     },
     "429": {
      "description": "Rate limited"
     }
    }
   }
  },
  "/compare": {
   "get": {
    "operationId": "compareTradeTools",
    "summary": "Compare 2 to 12 trades tools",
    "parameters": [
     {
      "name": "slugs",
      "in": "query",
      "required": false,
      "description": "Comma separated tool slugs, like jobber,housecall-pro",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "comparison",
      "in": "query",
      "required": false,
      "description": "Prebuilt comparison slug, like ai-receptionist-pricing",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Comparison",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "additionalProperties": true
        }
       }
      }
     },
     "404": {
      "description": "Not found"
     },
     "429": {
      "description": "Rate limited"
     }
    }
   }
  },
  "/vendors": {
   "get": {
    "operationId": "searchSaasVendors",
    "summary": "Search SaaS vendors with tracked pricing",
    "parameters": [
     {
      "name": "query",
      "in": "query",
      "required": false,
      "description": "Vendor name or keyword",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "category",
      "in": "query",
      "required": false,
      "description": "crm, email, dev, ai, payments, scheduling, and more",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "1 to 50",
      "schema": {
       "type": "integer"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Matching vendors",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "additionalProperties": true
        }
       }
      }
     },
     "404": {
      "description": "Not found"
     },
     "429": {
      "description": "Rate limited"
     }
    }
   }
  },
  "/vendors/{vendor}": {
   "get": {
    "operationId": "getVendorPricing",
    "summary": "Get public plan prices for one SaaS vendor",
    "parameters": [
     {
      "name": "vendor",
      "in": "path",
      "required": true,
      "description": "Vendor domain or name, like hubspot.com",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Vendor pricing",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "additionalProperties": true
        }
       }
      }
     },
     "404": {
      "description": "Not found"
     },
     "429": {
      "description": "Rate limited"
     }
    }
   }
  },
  "/price-changes": {
   "get": {
    "operationId": "recentPriceChanges",
    "summary": "Recent SaaS price changes between weekly checks",
    "parameters": [
     {
      "name": "category",
      "in": "query",
      "required": false,
      "description": "Optional category",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "since",
      "in": "query",
      "required": false,
      "description": "ISO date",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "1 to 50",
      "schema": {
       "type": "integer"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Price changes",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "additionalProperties": true
        }
       }
      }
     },
     "404": {
      "description": "Not found"
     },
     "429": {
      "description": "Rate limited"
     }
    }
   }
  }
 }
}