API Documentation
The SAASALE API gives you programmatic access to our database of SaaS projects for sale. Use it to build integrations, dashboards, or automated deal-flow pipelines.
Authentication
All API requests require an API key passed via the X-API-Key header. Generate your key on the Developer Dashboard.
curl -H "X-API-Key: sk_live_your_key_here" \
https://saas-marketplace-ecru.vercel.app/api/v1/projectsRate Limiting
The API is rate-limited to 20 requests per minute per API key. Rate limit status is returned in response headers:
| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum requests per window (20) |
X-RateLimit-Remaining | Remaining requests in current window |
X-RateLimit-Reset | Unix timestamp (ms) when the window resets |
Tiers
| Tier | Price | Includes |
|---|---|---|
| free | $0 | Project listings, financials, metadata |
| pro | $29/mo | Everything in Free + Deal Score, AI metrics, confidence scores |
Every response includes a _tier field indicating your current tier. Pro-only fields appear under the scoring object.
Pagination
List endpoints return paginated results. Use page and limit query parameters.
| Parameter | Default | Max | Description |
|---|---|---|---|
page | 1 | - | Page number |
limit | 20 | 100 | Results per page |
GET /api/v1/projects
Returns a paginated list of SaaS projects for sale.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
page | number | Page number (default: 1) |
limit | number | Results per page (default: 20, max: 100) |
category | string | Filter by category |
minPrice | number | Minimum asking price |
maxPrice | number | Maximum asking price |
minRevenue | number | Minimum monthly revenue |
maxRevenue | number | Maximum monthly revenue |
sort | string | price-asc, price-desc, revenue-desc, listed-desc |
Example Request
curl -H "X-API-Key: sk_live_your_key_here" \
"https://saas-marketplace-ecru.vercel.app/api/v1/projects?limit=2&sort=revenue-desc"Example Response
{
"data": [
{
"id": 42,
"name": "InvoiceBot",
"domain": "invoicebot.io",
"slug": "invoicebot-io",
"description": "Automated invoicing SaaS for freelancers",
"category": "Finance",
"asking_price": 45000,
"mrr_at_discovery": 1200,
"revenue_last30d": 1350,
"revenue_total": 28000,
"active_subscriptions": 89,
"payment_provider": "stripe",
"on_sale": true,
"first_listed_at": "2025-12-01T00:00:00.000Z",
"first_seen_at": "2025-11-15T00:00:00.000Z",
"_tier": "free"
}
],
"pagination": {
"page": 1,
"limit": 2,
"total": 347,
"totalPages": 174
}
}GET /api/v1/projects/{slug}
Returns details for a single project by its slug (domain). Includes additional fields like traffic, profit margin, and SEO data compared to the list endpoint.
Example Request
curl -H "X-API-Key: sk_live_your_key_here" \
"https://saas-marketplace-ecru.vercel.app/api/v1/projects/invoicebot.io"Example Response
{
"data": {
"id": 42,
"name": "InvoiceBot",
"domain": "invoicebot.io",
"slug": "invoicebot-io",
"description": "Automated invoicing SaaS for freelancers",
"category": "Finance",
"asking_price": 45000,
"mrr_at_discovery": 1200,
"revenue_last30d": 1350,
"revenue_total": 28000,
"active_subscriptions": 89,
"payment_provider": "stripe",
"on_sale": true,
"first_listed_at": "2025-12-01T00:00:00.000Z",
"first_seen_at": "2025-11-15T00:00:00.000Z",
"visitors_last30d": 4200,
"profit_margin": 82.5,
"target_audience": "B2B",
"organic_etv": 320,
"organic_keywords": 47,
"_tier": "pro",
"scoring": {
"deal_score": 7.85,
"geo_leverage": 6,
"saturation": 3,
"replaceability": 4,
"formula_version": "v2.6",
"scored_at": "2025-12-10T12:00:00.000Z",
"geo_confidence": 0.78,
"sat_confidence": 0.82,
"repl_confidence": 0.71,
"data_completeness": 0.9
}
}
}Errors
The API returns standard HTTP error codes with a JSON body:
| Code | Meaning | Description |
|---|---|---|
401 | Unauthorized | Missing or invalid API key |
404 | Not Found | Project with the given slug does not exist |
429 | Rate Limit Exceeded | Too many requests — wait until the window resets |
{
"error": "Rate limit exceeded",
"remaining": 0,
"resetAt": 1717001260000
}