API / Endpoints

GET/api/v1/startups/{slug}

Returns full details for a single startup, including startup insights, domain rating, audience, marketing channels, tech stack, cofounders, social metrics, and the complete description. Use the slug value from the list endpoint.

Path parameters

ParameterTypeRequiredDescription
slugstringrequiredThe startup's URL-friendly identifier. Get this from the list endpoint's slug field.

Request

cURL
curl -s "https://trustmrr.com/api/v1/startups/shipfast" \
-H "Authorization: Bearer tmrr_your_api_key"
JavaScript (fetch)
const slug = "shipfast";
const response = await fetch(
`https://trustmrr.com/api/v1/startups/${slug}`,
{
headers: {
Authorization: "Bearer tmrr_your_api_key",
},
}
);
const { data } = await response.json();
console.log(data.name, "—", data.revenue.mrr / 100, "$/mo MRR");
Python (requests)
import requests
slug = "shipfast"
response = requests.get(
f"https://trustmrr.com/api/v1/startups/{slug}",
headers={"Authorization": "Bearer tmrr_your_api_key"},
)
data = response.json()["data"]
print(f"{data['name']} — ${data['revenue']['mrr'] / 100:.0f}/mo MRR")

Response fields

The data object contains all fields from the list endpoint plus additional detail fields. All monetary values are in USD cents.

Additional fields vs. list endpoint

This endpoint returns the full description (not truncated), plus: xFollowerCount, isMerchantOfRecord, techStack, marketingChannels, startupInsights, audience fields, domainRating, founderMessage, and cofounders.

FieldTypeDescription
namestringStartup name
slugstringURL-friendly identifier
iconstring | nullURL to the startup's icon/logo
descriptionstring | nullFull description (not truncated, unlike the list endpoint)
websitestring | nullStartup's website URL
countrystring | nullCountry code (ISO 3166-1 alpha-2)
foundedDatestring | nullWhen the startup was founded (ISO date)
categorystring | nullPrimary category (e.g. saas, ai, ecommerce)
paymentProviderstringPayment provider used for revenue verification (stripe, lemonsqueezy, polar, revenuecat, dodopayment, paddle, superwall, creem)
targetAudiencestring | nullTarget audience (b2b, b2c, or both)
revenue.last30DaysnumberVerified revenue in the last 30 days, in USD cents
revenue.mrrnumberMonthly recurring revenue, in USD cents
revenue.totalnumberAll-time total revenue, in USD cents
customersnumberTotal customer count
activeSubscriptionsnumberNumber of currently active subscriptions
askingPricenumber | nullAsking price in USD cents
profitMarginLast30Daysnumber | nullProfit margin over the last 30 days (0-100 percentage)
growth30dnumber | nullRevenue growth over the last 30 days as a percentage (e.g. 24 = 24% growth)
growthMRR30dnumber | nullMRR growth over the last 30 days as a percentage. Tracks how recurring revenue is changing.
multiplenumber | nullAsking price / annualized revenue
ranknumber | nullRevenue ranking among all active startups on TrustMRR (1 = highest total revenue). Updated hourly.
visitorsLast30Daysnumber | nullTotal website visitors in the last 30 days. Source: DataFast, Google Analytics, or Google Search Console (clicks).
googleSearchImpressionsLast30Daysnumber | nullNumber of times the startup's website appeared in Google search results in the last 30 days. Only available when Google Search Console is connected.
revenuePerVisitornumber | nullRevenue per visitor ratio (last 30 days revenue / last 30 days visitors). Indicates monetization efficiency.
domainRatingnumber | nullAhrefs Domain Rating on a 0-100 scale when available
onSalebooleanWhether the startup is currently listed for sale
firstListedForSaleAtstring | nullWhen the startup was first listed for sale (ISO date)
founderMessagestring | nullFounder-provided message shown on the startup page. Only returned when onSale is true.
xHandlestring | nullX (Twitter) handle without the @ symbol
xFollowerCountnumber | nullNumber of X (Twitter) followers
isMerchantOfRecordbooleanWhether the startup uses a merchant of record (handles tax/compliance)
startupInsightsobjectPublic startup insights shown on the startup page. Founder-edited values are returned when present.
startupInsights.valuePropositionstring | nullValue proposition shown in the Startup insights section
startupInsights.problemSolvedstring | nullProblem solved shown in the Startup insights section
startupInsights.pricingModelstring | nullPricing model shown in the Startup insights section
startupInsights.targetPersonastring | nullTarget persona shown in the audience section
startupInsights.businessTypestring | nullBusiness audience type (B2B, B2C, Both, or Unknown)
startupInsights.estimatedUserCountnumber | nullEstimated user count when available from public startup insights
techStack[]object[]Array of technologies used
techStack[].slugstringTechnology identifier (e.g. nextjs, react, tailwindcss)
techStack[].categorystringTechnology category (e.g. framework, language, database, hosting)
marketingChannels[]object[]Array of marketing channels used to acquire customers
marketingChannels[].slugstringMarketing channel identifier (e.g. seo, x-twitter, paid-search)
marketingChannels[].categorystringMarketing channel category (organic, social, paid, outbound, community, partnerships)
cofounders[]object[]Array of cofounders
cofounders[].xHandlestringCofounder's X (Twitter) handle
cofounders[].xNamestring | nullCofounder's display name

Example response

200 OK
{
"data": {
"name": "ShipFast",
"slug": "shipfast",
"icon": "https://cdn.trustmrr.com/icons/shipfast.png",
"description": "The NextJS boilerplate with all you need to build your SaaS, AI tool, or any other web app. From idea to production in 5 minutes.",
"website": "https://shipfa.st",
"country": "TH",
"foundedDate": "2023-09-01T00:00:00.000Z",
"category": "saas",
"paymentProvider": "stripe",
"targetAudience": "b2b",
"revenue": {
"last30Days": 4250000,
"mrr": 180000,
"total": 98000000
},
"customers": 7800,
"activeSubscriptions": 320,
"askingPrice": 50000000,
"profitMarginLast30Days": 92,
"growth30d": 0.12,
"growthMRR30d": 8.5,
"multiple": 0.98,
"rank": 42,
"visitorsLast30Days": 12400,
"googleSearchImpressionsLast30Days": 513015,
"revenuePerVisitor": 3.87,
"domainRating": 58,
"onSale": true,
"firstListedForSaleAt": "2025-11-15T08:30:00.000Z",
"founderMessage": "ShipFast is profitable and simple to operate. I am looking for the right buyer to keep growing it.",
"xHandle": "shipaborad",
"xFollowerCount": 15400,
"isMerchantOfRecord": false,
"startupInsights": {
"valueProposition": "Launch a production-ready SaaS faster with payments, auth, emails, and deployment already wired together.",
"problemSolved": "Founders lose weeks rebuilding the same SaaS boilerplate before they can test an idea.",
"pricingModel": "One-time purchase with tiered licenses",
"targetPersona": "Solo founders and indie hackers launching SaaS products",
"businessType": "B2B",
"estimatedUserCount": 7800
},
"techStack": [
{ "slug": "nextjs", "category": "framework" },
{ "slug": "mongodb", "category": "database" },
{ "slug": "tailwindcss", "category": "css" },
{ "slug": "stripe", "category": "payments" }
],
"marketingChannels": [
{ "slug": "seo", "category": "organic" },
{ "slug": "x-twitter", "category": "social" }
],
"cofounders": [
{ "xHandle": "marc_louvion", "xName": "Marc Lou" }
]
}
}

Errors

400Invalid slug

{ "error": "Slug is required" }

404Startup not found

{ "error": "Startup not found" }

Common use cases

Get details then display tech stack

JavaScript
const res = await fetch(
"https://trustmrr.com/api/v1/startups/shipfast",
{ headers: { Authorization: "Bearer tmrr_your_api_key" } }
);
const { data } = await res.json();
const techs = data.techStack.map((t) => t.slug).join(", ");
console.log(`${data.name} uses: ${techs}`);
// → "ShipFast uses: nextjs, mongodb, tailwindcss, stripe"

List all startups then fetch details for each

JavaScript
const headers = { Authorization: "Bearer tmrr_your_api_key" };
const BASE = "https://trustmrr.com/api/v1/startups";
// Step 1: Get list of startups
const listRes = await fetch(`${BASE}?limit=5&sort=revenue-desc`, { headers });
const { data: startups } = await listRes.json();
// Step 2: Fetch details for each
for (const startup of startups) {
const detailRes = await fetch(`${BASE}/${startup.slug}`, { headers });
const { data } = await detailRes.json();
console.log(`${data.name} (${data.techStack.length} technologies)`);
}
List startups

Previous

List startups