API / Endpoints

GET/api/v1/startups

Returns a paginated list of startups with verified revenue on TrustMRR. Filter by sale status, category, revenue range, or price range, and sort by different criteria.

Request

cURL
curl -s "https://trustmrr.com/api/v1/startups?sort=revenue-desc&limit=10" \
-H "Authorization: Bearer tmrr_your_api_key"
JavaScript (fetch)
const response = await fetch(
"https://trustmrr.com/api/v1/startups?sort=revenue-desc&limit=10",
{
headers: {
Authorization: "Bearer tmrr_your_api_key",
},
}
);
const { data, meta } = await response.json();
console.log(`Found ${meta.total} startups`);
Python (requests)
import requests
response = requests.get(
"https://trustmrr.com/api/v1/startups",
params={"sort": "revenue-desc", "limit": 10},
headers={"Authorization": "Bearer tmrr_your_api_key"},
)
data = response.json()
print(f"Found {data['meta']['total']} startups")

Query parameters

ParameterTypeDefaultDescription
pageinteger1Page number for pagination. Starts at 1.
limitinteger10Number of results per page. Min 1, max 50.
sortstringrevenue-descSort order. One of: revenue-desc, revenue-asc, price-desc, price-asc, multiple-asc, multiple-desc, growth-desc, growth-asc, listed-desc, listed-asc, best-deal. Default is revenue-desc, or best-deal when onSale=true.
onSalestringnullFilter by sale status. "true" returns only startups listed for sale. "false" returns only startups not for sale. Omit to return all startups.
categorystringnullFilter by startup category. One of: aisaasdeveloper-toolsfintechmarketingecommerceproductivitydesign-toolsno-codeanalyticscrypto-web3educationhealth-fitnesssocial-mediacontent-creationsalescustomer-supportrecruitingreal-estatetravellegalsecurityiot-hardwaregreen-techentertainmentgamescommunitynews-magazinesutilitiesmarketplacemobile-apps
Browse all categories on TrustMRR
xHandlestringnullFilter by the founder's X (Twitter) handle. Omit the @ symbol. Example: "marc_louvion".
minRevenuenumbernullMinimum last-30-days revenue in USD cents. Example: 10000 = $100.
maxRevenuenumbernullMaximum last-30-days revenue in USD cents. Example: 500000 = $5,000.
minMrrnumbernullMinimum monthly recurring revenue in USD cents. Example: 50000 = $500.
maxMrrnumbernullMaximum monthly recurring revenue in USD cents. Example: 1000000 = $10,000.
minGrowthnumbernullMinimum 30-day revenue growth as a decimal. Example: 0.1 = 10% growth.
maxGrowthnumbernullMaximum 30-day revenue growth as a decimal. Example: 0.5 = 50% growth.
minPricenumbernullMinimum asking price in USD cents. Example: 1000000 = $10,000.
maxPricenumbernullMaximum asking price in USD cents. Example: 10000000 = $100,000.

Sort options

ValueDescription
revenue-descHighest last-30-days revenue first (default)
revenue-ascLowest last-30-days revenue first
price-descHighest asking price first
price-ascLowest asking price first
multiple-ascLowest revenue multiple first (best value)
multiple-descHighest revenue multiple first
growth-descFastest growing first
growth-ascSlowest growing first
listed-descMost recently listed first
listed-ascOldest listings first
best-dealBest acquisition deals first (default when onSale=true)

Response fields

Each item in the data array has the following shape. All monetary values are in USD cents (e.g. 42500 = $425.00).

FieldTypeDescription
namestringStartup name
slugstringURL-friendly identifier. Use this for the /startups/{slug} endpoint.
iconstring | nullURL to the startup's icon/logo
descriptionstring | nullShort description, truncated to 200 characters
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)
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, if listed for sale
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)
multiplenumber | nullAsking price divided by annualized revenue (price / (last30Days * 12))
onSalebooleanWhether the startup is currently listed for sale
firstListedForSaleAtstring | nullWhen the startup was first listed for sale (ISO date)
xHandlestring | nullX (Twitter) handle without the @ symbol

Pagination

The meta object tells you where you are in the result set. Keep incrementing page until hasMore is false.

FieldTypeDescription
meta.totalintegerTotal matching startups across all pages
meta.pageintegerCurrent page number
meta.limitintegerResults per page
meta.hasMorebooleanWhether there are more pages after this one

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...",
"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,
"multiple": 0.98,
"onSale": true,
"firstListedForSaleAt": "2025-11-15T08:30:00.000Z",
"xHandle": "shipaborad"
}
],
"meta": {
"total": 142,
"page": 1,
"limit": 10,
"hasMore": true
}
}

Common use cases

Get the top 10 startups by revenue

curl -s "https://trustmrr.com/api/v1/startups?sort=revenue-desc&limit=10" \
-H "Authorization: Bearer tmrr_your_api_key"

Get the 5 most recently listed startups for sale

curl -s "https://trustmrr.com/api/v1/startups?onSale=true&sort=listed-desc&limit=5" \
-H "Authorization: Bearer tmrr_your_api_key"

Find SaaS startups earning $1k–$5k/month

curl -s "https://trustmrr.com/api/v1/startups?category=saas&minRevenue=100000&maxRevenue=500000&sort=growth-desc" \
-H "Authorization: Bearer tmrr_your_api_key"

Get the cheapest startups for sale under $10k

curl -s "https://trustmrr.com/api/v1/startups?onSale=true&maxPrice=1000000&sort=price-asc&limit=20" \
-H "Authorization: Bearer tmrr_your_api_key"

Find all startups by a specific founder

curl -s "https://trustmrr.com/api/v1/startups?xHandle=marclou" \
-H "Authorization: Bearer tmrr_your_api_key"

Paginate through all results

JavaScript
const API_KEY = "tmrr_your_api_key";
const BASE = "https://trustmrr.com/api/v1/startups";
let page = 1;
let hasMore = true;
const allStartups = [];
while (hasMore) {
const res = await fetch(`${BASE}?page=${page}&limit=50`, {
headers: { Authorization: `Bearer ${API_KEY}` },
});
const { data, meta } = await res.json();
allStartups.push(...data);
hasMore = meta.hasMore;
page++;
}
console.log(`Fetched ${allStartups.length} startups total`);

Next

Get startup details

View