Datasets API endpoint
Searches public startups with payment-provider-verified revenue and MRR, stored in a search index. Filter by category, country, payment provider, target audience, tech, marketing channel, listing tier and for-sale status, and by revenue/MRR/traffic/growth/multiple/asking-price ranges. Sort enum: `relevance`, `mrr_desc`, `revenue_desc`, `revenue_30d_desc`, `traffic_desc`, `growth_desc`, `deal_score_desc`, `price_asc`, `price_desc`, `multiple_asc`, `founded_desc`. status enum: `active`, `removed`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).
/datasets/trustmrr/searchSearches the TrustMRR dataset — public startups with payment-provider-verified revenue and MRR, plus traffic, growth, category, tech stack, marketing channels and acquisition-marketplace signals — stored in a search index.
Query parameters:
q: optional. Full-text query over name, description, seller message and business summary. Max 256 characters.slug: optional. Exact startup slug. Max 128 characters.category: optional. Exact category (e.g. SaaS, Artificial Intelligence, Mobile Apps). Max 128 characters.country: optional. Exact ISO country code (e.g. US). Max 128 characters.payment_provider: optional. Payment provider (e.g. stripe, revenuecat, superwall, creem). Max 128 characters.target_audience: optional. Target audience (e.g. B2B, B2C). Max 128 characters.business_type: optional. Business type (e.g. B2B, B2C). Max 128 characters.tech: optional. Detected tech-stack slug (e.g. nextjs, reactnative). Max 128 characters.channel: optional. Detected marketing-channel slug (e.g. meta-ads, seo). Max 128 characters.listing_tier: optional. For-sale listing tier (e.g. pro). Max 128 characters.status: optional. Lifecycle. Allowed values: active, removed.on_sale: optional boolean. Only startups currently listed for sale.is_sponsored: optional boolean. Only sponsored (paid-placement) listings.min_mrr / max_mrr: optional. Verified MRR bounds in USD.min_revenue: optional. Minimum verified all-time revenue in USD.min_revenue_30d: optional. Minimum verified last-30-days revenue in USD.min_traffic: optional. Minimum last-30-days traffic (visits).min_growth: optional. Minimum 30-day revenue growth percentage.max_multiple: optional. Maximum asking-price-to-revenue multiple.min_asking_price / max_asking_price: optional. Asking-price bounds in USD.min_ahrefs_dr: optional. Minimum Ahrefs Domain Rating.sort: optional. Allowed values: relevance, mrr_desc, revenue_desc, revenue_30d_desc, traffic_desc, growth_desc, deal_score_desc, price_asc, price_desc, multiple_asc, founded_desc. Defaults to relevance with q, otherwise mrr_desc.page: optional. 1-based page number. Default 1.page_size: optional. Default 20, max 100; page × page_size must not exceed 10000.1 credit per record returned, minimum 2. A search that returns 20 records costs 20 credits, a full page of 100 costs 100, and an empty or one-record result costs 2. You are charged for what comes back, not for the page_size you ask for, but your balance must cover the requested page_size for the call to be accepted. The response header x-credit-cost shows what a call was charged.
| Field | Filled in, of 1 checked | Values in the sample |
|---|---|---|
| slug | 1 | |
| name | 1 | |
| url | 1 | trustmrr.com |
| website | 1 | gumroad.com |
| icon | 1 | d21oz30g4w22sz.cloudfront.net |
| description | 1 | |
| country | 1 | |
| founded_date | 1 | 2011-11-05 |
| status | 1 | |
| category | 1 | |
| category_slug | 1 | |
| user_category | 1 | |
| user_category_slug | 1 | |
| payment_provider | 1 | |
| merchant_category_code | 1 | |
| mrr | 1 | 0 |
| total_revenue | 1 | 878,595,860.52 |
| revenue_30d | 1 | 7,143,938 |
| customers | 1 | 0 |
| active_subscriptions | 1 | 0 |
| revenue_last_synced_at | 1 | 2025-11-10 |
| on_sale | 1 | true in 0 of 1 |
| offer_count | 1 | 4 |
| is_sponsored | 1 | true in 0 of 1 |
| looking_for_cofounder | 1 | true in 0 of 1 |
| stealth_mode | 1 | true in 0 of 1 |
| is_merchant_of_record | 1 | true in 1 of 1 |
| x_handle | 1 | |
| x_founder_name | 1 | |
| x_follower_count | 1 | |
| x_profile_picture | 1 | |
| has_insight_overrides | 1 | true in 0 of 1 |
| has_google_analytics | 1 | true in 0 of 1 |
| has_search_console | 1 | true in 0 of 1 |
| has_dofollow_backlink | 1 | true in 1 of 1 |
| first_seen | 1 | 2026-07-08 |
| last_seen | 1 | 2026-10-11 |
| last_crawled_at | 1 | 2026-10-11 |
| schema_version | 1 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| q | string | No | Full-text query over name, description, seller message and business summary, max 256 characters | ||
| slug | string | No | Exact startup slug filter, max 128 characters | ||
| category | string | No | Exact category filter (e.g. SaaS, Artificial Intelligence, Mobile Apps), max 128 characters | ||
| country | string | No | Exact ISO country-code filter (e.g. US), max 128 characters | ||
| payment_provider | string | No | Payment-provider filter (e.g. stripe, revenuecat, superwall, creem), max 128 characters | ||
| target_audience | string | No | Target-audience filter (e.g. B2B, B2C), max 128 characters | ||
| business_type | string | No | Business-type filter (e.g. B2B, B2C), max 128 characters | ||
| tech | string | No | Detected tech-stack slug filter (e.g. nextjs, reactnative), max 128 characters | ||
| channel | string | No | Detected marketing-channel slug filter (e.g. meta-ads, seo), max 128 characters | ||
| listing_tier | string | No | For-sale listing-tier filter (e.g. pro), max 128 characters | ||
| status | string | No | Lifecycle enum: active, removed Allowed values: active, removed. | ||
| on_sale | boolean | No | Filter for startups currently listed for sale | ||
| is_sponsored | boolean | No | Filter for sponsored (paid-placement) listings | ||
| min_mrr | number | No | Minimum verified MRR in USD | ||
| max_mrr | number | No | Maximum verified MRR in USD | ||
| min_revenue | number | No | Minimum verified all-time revenue in USD | ||
| min_revenue_30d | number | No | Minimum verified last-30-days revenue in USD | ||
| min_traffic | number | No | Minimum last-30-days traffic (visits) | ||
| min_growth | number | No | Minimum 30-day revenue growth percentage | ||
| max_multiple | number | No | Maximum asking-price-to-revenue multiple | ||
| min_asking_price | number | No | Minimum asking price in USD | ||
| max_asking_price | number | No | Maximum asking price in USD | ||
| min_ahrefs_dr | integer | No | Minimum Ahrefs Domain Rating | ||
| sort | string | No | Sort enum: relevance, mrr_desc, revenue_desc, revenue_30d_desc, traffic_desc, growth_desc, deal_score_desc, price_asc, price_desc, multiple_asc, founded_desc Allowed values: relevance, mrr_desc, revenue_desc, revenue_30d_desc, traffic_desc, growth_desc, deal_score_desc, price_asc, price_desc, multiple_asc, founded_desc. | ||
| page | integer | No | 1 | Page number, defaults to 1 | |
| page_size | integer | No | 20 and maxes at 100 | Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/datasets/trustmrr/search?q=coffee&country=us&status=active&on_sale=true&is_sponsored=true&sort=relevance&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"dataset": "trustmrr",
"items": [
{
"slug": "stan",
"name": "Stan",
"user_category": "Creator Tools",
"mrr": 3569654.22,
"total_revenue": 76627685.07,
"on_sale": false,
"status": "active"
}
],
"page": 1,
"page_size": 20,
"total": 8198,
"sort": "mrr_desc"
}
}Request schema
No body schema
Response schema
#/definitions/datasets.trustmrrSearchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | datasets.TrustmrrSearchResponse | No | ||||
| data.dataset | string | No | Identifier of the dataset queried (`trustmrr`). | |||
| data.items | array | No | Matching startup records on this page. | |||
| data.items[].active_subscriptions | integer | No | Number of active subscriptions the startup has. | |||
| data.items[].ahrefs_domain_rating | integer | No | Ahrefs Domain Rating of the startup's website. | |||
| data.items[].asking_price | number | No | Price the seller is asking for the startup, in US dollars. Omitted when TrustMRR shows none. | |||
| data.items[].business_type | string | No | Business type of the startup, such as `B2C`. | |||
| data.items[].category | string | No | TrustMRR category of the startup, such as `Mobile App`. | |||
| data.items[].category_slug | string | No | URL slug of the TrustMRR category. | |||
| data.items[].channels | array | No | Slugs of the marketing channels detected for the startup, such as `meta-ads`. | |||
| data.items[].country | string | No | Country code of the startup, such as `PL`. | |||
| data.items[].customers | integer | No | Number of customers the startup has. | |||
| data.items[].deal_score | number | No | TrustMRR's recency-aware score for how attractive the startup is as an acquisition. | |||
| data.items[].description | string | No | Description of the startup as listed on TrustMRR. | |||
| data.items[].estimated_user_count | integer | No | Estimated number of users of the startup's product. | |||
| data.items[].first_listed_for_sale_at | string | No | Time the startup was first listed for sale (RFC 3339). | |||
| data.items[].first_seen | string | No | Time the startup first appeared in this dataset (RFC 3339). | |||
| data.items[].founded_date | string | No | Date the startup was founded. | |||
| data.items[].funding_status | string | No | Funding status of the startup. | |||
| data.items[].growth_30d | number | No | Revenue growth over the last 30 days, as a percentage. | |||
| data.items[].growth_mrr_30d | number | No | Growth in monthly recurring revenue over the last 30 days. | |||
| data.items[].has_dofollow_backlink | boolean | No | Whether the startup's site links back to TrustMRR with a dofollow link. | |||
| data.items[].has_google_analytics | boolean | No | Whether the startup has verified Google Analytics. | |||
| data.items[].has_insight_overrides | boolean | No | Whether the seller has replaced TrustMRR's AI-written business summary with their own. | |||
| data.items[].has_search_console | boolean | No | Whether the startup has verified Google Search Console. | |||
| data.items[].icon | string | No | URL of the startup's icon. | |||
| data.items[].is_merchant_of_record | boolean | No | Whether the startup acts as merchant of record for its payments. | |||
| data.items[].is_sponsored | boolean | No | Whether the startup is a sponsored listing on TrustMRR. | |||
| data.items[].last_crawled_at | string | No | Time the startup's data was last refreshed (RFC 3339). | |||
| data.items[].last_seen | string | No | Time the startup was last seen on TrustMRR (RFC 3339). | |||
| data.items[].listing_tier | string | No | Tier of the for-sale listing, such as `pro`. | |||
| data.items[].looking_for_cofounder | boolean | No | Whether the founder is looking for a cofounder. | |||
| data.items[].merchant_category_code | string | No | Merchant category code (MCC) of the startup's payment processor, such as `7372`. | |||
| data.items[].mrr | number | No | Verified monthly recurring revenue, in US dollars. | |||
| data.items[].mrr_last_synced_at | string | No | Time the monthly recurring revenue figure was last synced (RFC 3339). | |||
| data.items[].multiple | number | No | Asking price as a multiple of the startup's revenue. | |||
| data.items[].name | string | No | Startup name as listed on TrustMRR. | |||
| data.items[].offer_count | integer | No | Number of offers the for-sale listing has received. | |||
| data.items[].on_sale | boolean | No | Whether the startup is currently listed for sale. | |||
| data.items[].payment_provider | string | No | Payment provider the revenue is verified through, such as `revenuecat`. | |||
| data.items[].pricing_model | string | No | Pricing model of the startup's product, as summarised by TrustMRR. | |||
| data.items[].problem_solved | string | No | Problem the startup's product solves, as summarised by TrustMRR. | |||
| data.items[].profit_margin_30d | number | No | Profit margin over the last 30 days. | |||
| data.items[].revenue_30d | number | No | Verified revenue over the last 30 days, in US dollars. | |||
| data.items[].revenue_last_synced_at | string | No | Time the revenue figures were last synced (RFC 3339). | |||
| data.items[].revenue_per_visitor_30d | number | No | Revenue per site visitor over the last 30 days. | |||
| data.items[].schema_version | integer | No | Version of the record format. | |||
| data.items[].secondary_payment_provider | string | No | Second payment provider the revenue is verified through, when there is one. | |||
| data.items[].seller_message | string | No | Message the seller wrote on the for-sale listing. | |||
| data.items[].slug | string | No | URL slug of the startup on TrustMRR. Use it with the item endpoint. | |||
| data.items[].status | string | No | Listing status of the startup: `active` or `removed`. | |||
| data.items[].stealth_mode | boolean | No | Whether the startup is listed in stealth mode. | |||
| data.items[].tags | array | No | Tags describing the startup's business, as summarised by TrustMRR. | |||
| data.items[].target_audience | string | No | Audience the startup sells to, such as `B2C`. | |||
| data.items[].target_persona | string | No | Typical customer persona of the startup, as summarised by TrustMRR. | |||
| data.items[].tech | array | No | Slugs of the technologies detected in the startup's stack, such as `reactnative`. | |||
| data.items[].total_revenue | number | No | Verified all-time revenue, in US dollars. | |||
| data.items[].traffic_12mo | number | No | Website traffic over the last 12 months. | |||
| data.items[].traffic_24h | number | No | Website traffic over the last 24 hours. | |||
| data.items[].traffic_30d | number | No | Website traffic over the last 30 days, in visits. | |||
| data.items[].traffic_7d | number | No | Website traffic over the last 7 days. | |||
| data.items[].url | string | No | URL of the startup's page on TrustMRR. | |||
| data.items[].user_category | string | No | Category the seller chose for the startup, such as `Mobile Apps`. | |||
| data.items[].user_category_slug | string | No | URL slug of the seller-chosen category. | |||
| data.items[].value_proposition | string | No | What the startup offers customers, as summarised by TrustMRR. | |||
| data.items[].website | string | No | URL of the startup's own website. | |||
| data.items[].x_follower_count | integer | No | Number of followers the founder has on X (Twitter). | |||
| data.items[].x_founder_name | string | No | Founder's display name on X (Twitter). | |||
| data.items[].x_handle | string | No | Founder's X (Twitter) handle. | |||
| data.items[].x_profile_picture | string | No | URL of the founder's X (Twitter) profile picture. | |||
| data.page | integer | No | Page number returned. | |||
| data.page_size | integer | No | Number of items per page. | |||
| data.sort | string | No | Sort order applied. | |||
| data.total | integer | No | Total number of records matching the filters. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/datasets/trustmrr/search?q=coffee&country=us&status=active&on_sale=true&is_sponsored=true&sort=relevance&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"