TrustMRR startup directory
Every startup listed on TrustMRR with revenue verified through its payment provider, in alphabetical order, 100 a page: slug, name, profile link, description, logo, for-sale flag, last-30-days revenue, MRR and total revenue (USD). total is the number of startups. Pass next_page back as page (null on the last page).
Any of sort, limit, min_mrr/max_mrr, min_revenue/max_revenue, min_growth/max_growth, category, audience or on_sale switches to the filtered directory: sorted by total revenue, MRR or 30-day growth, up to 100 a page, and each startup also carries its id, category, 30-day growth, asking price when for sale, merchant-of-record and stealth flags and founder X handle. q instead searches startups by name and description (up to 20 matches) and also returns matching founders (public X handle, name, startup count, total revenue) and categories; it combines only with on_sale.
Every response includes credits_used: the credits this call cost.
Parameters
| name | type | description |
|---|---|---|
page | integer | Page number (1 by default). Example: 1 |
q | string | Search startups by name or description. Combines only with on_sale. |
sort | revenue | mrr | growth | Order of the filtered directory, highest first: total revenue (default), MRR or 30-day growth. |
limit | integer | Startups per page in the filtered directory, 1 to 100 (default 30). |
min_mrr | number | Minimum MRR in USD. |
max_mrr | number | Maximum MRR in USD. |
min_revenue | number | Minimum total verified revenue in USD. |
max_revenue | number | Maximum total verified revenue in USD. |
min_growth | number | Minimum 30-day revenue growth in percent (may be negative). |
max_growth | number | Maximum 30-day revenue growth in percent (may be negative). |
category | string | One or more category slugs, comma-separated (the same slugs as /trustmrr/v1/category, for example saas,ai). |
audience | b2b | b2c | Only startups selling to businesses (b2b) or consumers (b2c). |
on_sale | boolean | true keeps only startups listed for sale. |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/trustmrr/v1/startups?page=1" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/trustmrr/v1/startups",
params={"page": "1"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/trustmrr/v1/startups");
url.searchParams.set("page", "1");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).