API documentation
Query the SaaS Browser database directly - search, funding events, categories, alternatives and more, over a plain JSON API.
Overview
The SaaS Browser API gives you programmatic access to the same database that powers this site: hundreds of thousands of SaaS companies, discovered from the open web and enriched with categories, pricing, technologies, employee counts, affiliate and bug bounty programs, domain authority and funding events. Every endpoint speaks JSON over HTTPS, and every endpoint is a GET request unless stated otherwise.
The base URL for every endpoint is
https://saasbrowser.com.
| Endpoint | What it returns | Access |
|---|---|---|
GET
/api/search
|
Search the full SaaS database | Search API access |
GET
/api/funding-news
|
Funding rounds, IPOs, mergers and acquisitions | Professional or Scale plan |
GET
/api/notifications
|
New SaaS matching your saved filters | Any account |
GET
/api/categories
|
Every SaaS category and its ID | Public |
GET
/api/alternatives
|
Alternatives to a given SaaS | Public |
GET
/api/search-suggestions
|
Autocomplete for the search box | Public |
GET
/api/domain-rating-history/:serial_id
|
Monthly domain rating series | Signed-in subscriber |
POST
/mcp
|
Model Context Protocol server for AI agents | Public |
Authentication
Generate your API key from your
account settings. A key
looks like <id>.<secret>
and is shown once, when it is created. Generating a new key
immediately invalidates the previous one.
Send the key in the Authorization header, which is the
recommended form, or as an api_key query parameter
when your client cannot set headers. Query strings are logged by
proxies and browsers, so prefer the header.
curl "https://saasbrowser.com/api/search?q=analytics" \
-H "Authorization: Bearer YOUR_API_KEY"
curl "https://saasbrowser.com/api/search?q=analytics&api_key=YOUR_API_KEY"
Keep your key server-side. It identifies your account, and anything done with it counts as done by you.
Rate limits and errors
Requests are not metered per record. We ask that you keep to
roughly one request per second, with short bursts above that; the
edge will start returning 429 Too Many Requests if a
client is sustained well beyond it. Retry a 429 after a short
pause rather than immediately.
Errors are returned as JSON with an error key and an
appropriate status code.
| Status | Meaning |
|---|---|
200 |
Success. |
400 |
The request asked for a page beyond the result window, or a parameter could not be parsed. |
401 |
The API key is missing, malformed or unknown. |
403 |
The key is valid, but the account is not entitled to this endpoint. |
429 |
Too many requests. Back off and retry. |
500 |
Something failed on our side. Retry, and contact us if it persists. |
Search API
/api/search
Search the SaaS database with the same filters as the
search page. Results are ordered by
relevance when q is supplied, and by our default
ranking otherwise.
Access. The Search API is enabled per account.
Once enabled it is unlimited and unmetered — there is no
credit cost and no result quota.
Contact us to have it switched on
for your account. Keys without it receive
403 Forbidden.
Query parameters
All parameters are optional. With none supplied, the endpoint
returns the default listing. Pipe-separated parameters accept
multiple values in one string, e.g.
countries=US|GB|DE. Boolean parameters take
true or false.
| Parameter | Type | Description |
|---|---|---|
q
|
string | Free-text query. Matched across business name, description, features and host. Maximum 100 characters. |
category_ids
|
string |
Pipe-separated category IDs, e.g. 12|45. See /api/categories.
|
technology_ids
|
string | Pipe-separated technology UUIDs. |
technology_logic
|
string |
all (site uses every technology) or any (default).
|
countries
|
string |
Pipe-separated 2-letter ISO country codes, e.g. US|GB.
|
uses_ai
|
boolean | Restrict to SaaS that use AI. |
consumer_types
|
string |
Pipe-separated: personal, business, both.
|
growth_models
|
string |
Pipe-separated: product_led, sales_led, both.
|
price_low
|
number | Minimum entry price per month. |
price_high
|
number | Maximum entry price per month. |
price_currency_code
|
string |
Pipe-separated 3-letter currency codes, e.g. USD|EUR.
|
domain_rating_min
|
integer | Minimum domain rating (0–100). |
domain_rating_max
|
integer | Maximum domain rating (0–100). |
domain_rating_growth_min
|
number | Minimum domain rating points gained per month. |
domain_rating_growth_max
|
number | Maximum domain rating points gained per month. |
employees_gte
|
integer | Minimum employee count. |
employees_lte
|
integer | Maximum employee count. |
age_years_min
|
integer | Minimum company age in years. |
age_years_max
|
integer | Maximum company age in years. |
published_at_from
|
date | Listed on SaaS Browser on or after this date (YYYY-MM-DD). |
published_at_to
|
date | Listed on SaaS Browser on or before this date (YYYY-MM-DD). |
sitemap_page_count_min
|
integer | Minimum number of pages in the sitemap. |
sitemap_page_count_max
|
integer | Maximum number of pages in the sitemap. |
has_api_access
|
boolean | Restrict to SaaS that publish developer documentation. |
has_chrome_extension
|
boolean | Restrict to SaaS with a Chrome extension. |
has_firefox_extension
|
boolean | Restrict to SaaS with a Firefox add-on. |
discontinued
|
boolean | Include SaaS that have gone offline. Off by default. |
sort_by
|
string |
One of domain_rating, domain_rating_growth, employees, age, commission_percentage, published_at, sitemap_page_count, bug_bounty_discovered, bug_bounty_reward. Defaults to relevance.
|
sort_direction
|
string |
asc or desc. Default desc.
|
page
|
integer | Page number. Default 1. |
per_page
|
integer | Results per page. Default 25, maximum 100. |
Affiliate program filters
| Parameter | Type | Description |
|---|---|---|
has_affiliate_program
|
boolean | Restrict to SaaS running an affiliate or partner program. |
commission_percentage_min
|
integer | Minimum affiliate commission percentage. |
commission_percentage_max
|
integer | Maximum affiliate commission percentage. |
affiliate_commission_type
|
string |
Pipe-separated: one_time, recurring.
|
cookie_duration_min
|
integer | Minimum affiliate cookie duration in days. |
cookie_duration_max
|
integer | Maximum affiliate cookie duration in days. |
Bug bounty filters
| Parameter | Type | Description |
|---|---|---|
has_bug_bounty
|
boolean | Restrict to SaaS running a bug bounty or vulnerability disclosure program. |
bug_bounty_is_paid
|
boolean | Restrict to programs that pay a reward. |
bug_bounty_platform
|
string |
Pipe-separated: hackerone, bugcrowd, intigriti, yeswehack, immunefi, synack, cobalt, self_hosted.
|
bug_bounty_payout_min
|
integer | Minimum reward (USD). |
bug_bounty_payout_max
|
integer | Maximum reward (USD). |
bug_bounty_payout_currency
|
string | Pipe-separated 3-letter currency codes. |
bug_bounty_scope
|
string | Free text matched against the published scope. |
bug_bounty_discovered_from
|
date | Program first seen on or after this date (YYYY-MM-DD). |
bug_bounty_discovered_to
|
date | Program first seen on or before this date (YYYY-MM-DD). |
Pagination
per_page defaults to 25 and is capped at 100 results
per request. Page through larger result sets with
page; page × per_page may not
exceed 10,000, beyond which the endpoint returns
400 Bad Request. Use total_count in the
response to size your loop, and narrow the query with filters
rather than paging past the window.
Example request
curl "https://saasbrowser.com/api/search?q=analytics&countries=US|GB\
&uses_ai=true&domain_rating_min=40&employees_gte=10&employees_lte=200\
&sort_by=domain_rating&sort_direction=desc&per_page=50" \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"page": 1,
"per_page": 50,
"total_count": 2841,
"results": [
{
"id": "fb0f77a5-b87a-4bb0-9075-1574f08e8d84",
"serial_id": 17,
"host": "lumen.ai",
"slug": "lumen-ai",
"name": "Lumen AI",
"description": "AI-powered analytics for product teams.",
"features": { "Dashboards": "Build dashboards without SQL." },
"site_type": "saas",
"profile_url": "https://saasbrowser.com/en/saas/17/lumen-ai",
"url": "https://lumen.ai",
"country_code": "US",
"year_founded": 2021,
"employees_lower": 11,
"employees_upper": 50,
"consumer_type": "business",
"growth_model": "product_led",
"uses_ai": true,
"free_trial": true,
"first_discovered_at": "2025-08-12",
"published_at": "2025-09-01T00:00:00Z",
"pricing": {
"price_low": "29.0",
"price_high": "299.0",
"currency_code": "USD"
},
"categories": [
{ "id": 42, "name": "Analytics" },
{ "id": 87, "name": "Artificial Intelligence" }
],
"affiliate_program": {
"url": "https://lumen.ai/partners",
"commission_percentage": 25,
"commission_type": "recurring",
"cookie_duration_days": 90
},
"bug_bounty": null,
"metrics": {
"domain_rating": 45,
"domain_rating_growth": "3.2",
"sitemap_page_count": 240,
"has_api_access": true,
"has_chrome_extension": false,
"has_firefox_extension": false
}
}
]
}
affiliate_program and bug_bounty are
null when the company runs no such program. Pricing
reflects the entry-level plan we detected, or the figures supplied
by the company if they have claimed their profile.
Funding News API
/api/funding-news
Funding rounds, investments, IPOs, share offerings, mergers and
acquisitions, each joined to the SaaS company involved. This is the
programmatic equivalent of the
Funding News page. Events are
ordered by event date, most recent first, or by relevance when
q is supplied. Requires a Professional or Scale
subscription.
Query parameters
| Parameter | Type | Description |
|---|---|---|
q
|
string | Free-text search across post title, company name, counterparty, investors and host. |
event_types[]
|
array |
Repeatable. funding_round, investment, ipo, share_offering, merger, acquisition, other.
|
funding_rounds[]
|
array |
Repeatable, e.g. Series A, Seed.
|
currencies[]
|
array |
Repeatable ISO currency codes, e.g. USD.
|
investor
|
string | Events involving a named investor. |
category_ids
|
string | Pipe-separated SaaS category IDs. |
min_amount
|
number | Minimum funding amount. |
max_amount
|
number | Maximum funding amount. |
from_date
|
date | Earliest event date (YYYY-MM-DD). |
to_date
|
date | Latest event date (YYYY-MM-DD). |
page
|
integer | Page number. Default 1. |
per_page
|
integer | Results per page. Default 25, maximum 100. |
Example request
curl "https://saasbrowser.com/api/funding-news?q=ai\
&event_types[]=funding_round&event_types[]=acquisition\
¤cies[]=USD&min_amount=1000000&from_date=2026-01-01&per_page=50" \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"page": 1,
"per_page": 25,
"total_count": 1234,
"fundings": [
{
"id": "eb19e45b-8706-4611-966f-758f9c98ebe3",
"url": "https://example.com/blog/series-a",
"event_type": "funding_round",
"funding_round": "Series A",
"amount": "5000000.0",
"currency": "USD",
"announced_on": "2026-04-01",
"event_at": "2026-04-01T00:00:00Z",
"page_published_at": "2026-03-31T12:00:00Z",
"post_title": "Lumen.ai raises $18M Series A",
"post_description": "Lumen.ai announced a Series A round led by Accel.",
"company_name": "Lumen.ai",
"counterparty_name": "Accel",
"location": "San Francisco, US",
"investors": ["Accel", "Sequoia Capital"],
"status": "published",
"created_at": "2026-04-01T09:14:00Z",
"updated_at": "2026-04-01T09:14:00Z",
"site": {
"id": "fb0f77a5-b87a-4bb0-9075-1574f08e8d84",
"serial_id": 17,
"host": "lumen.ai",
"slug": "lumen-ai",
"name": "Lumen AI",
"description": "AI-powered analytics for product teams.",
"site_type": "saas",
"online_status": "online",
"search_result_status": "published",
"country_code": "US",
"year_founded": 2021,
"employees_lower": 11,
"employees_upper": 50,
"uses_ai": true,
"consumer_type": "business",
"growth_model": "product_led",
"free_trial": true,
"first_discovered_at": "2025-08-12",
"published_at": "2025-09-01T00:00:00Z",
"pricing": { "price_low": "29.0", "price_high": "299.0", "currency_code": "USD" },
"categories": [{ "id": 42, "name": "Analytics" }],
"metrics": {
"domain_rating": 45,
"domain_rating_growth": "3.2",
"sitemap_page_count": 240
}
}
}
]
}
Notifications API
/api/notifications
Returns the SaaS that have matched your saved filters. Save a filter from the search page with email notifications enabled, and every newly discovered SaaS matching it appears here. Free with any account. Takes no query parameters, and returns up to 100 notifications from the last three months, newest first.
curl "https://saasbrowser.com/api/notifications" \
-H "Authorization: Bearer YOUR_API_KEY"
[
{
"id": "bfaaad0b-376e-46ac-98df-f0f0f03fd635",
"site_id": "3f1c8f52-2b26-4a1d-9f0e-6cb6f2a0e111",
"query": "SaaS Browser",
"created_at": "2026-08-25T09:10:46.914Z",
"business_name": "SaaS Browser",
"profile_url": "https://saasbrowser.com/saas/489250/saas-browser",
"description": "A large search engine for SaaS products.",
"site_url": "https://saasbrowser.com"
}
]
Categories API
/api/categories
Every SaaS category with its numeric ID. Use these IDs with the
category_ids parameter on the Search and Funding News
APIs. No authentication required; the response is cached and takes
no parameters.
curl "https://saasbrowser.com/api/categories"
{
"categories": [
{ "id": 42, "name": "Analytics" },
{ "id": 87, "name": "Artificial Intelligence" }
]
}
Alternatives API
/api/alternatives
Up to ten published alternatives to a given SaaS, looked up by hostname. No authentication required.
| Parameter | Type | Description |
|---|---|---|
host
|
string |
Hostname of the SaaS, e.g. lumen.ai. Protocol, www. and any path are stripped for you.
|
curl "https://saasbrowser.com/api/alternatives?host=lumen.ai"
{
"alternatives": [
{
"name": "Beacon Analytics",
"icon_url": "https://files.saasbrowser.com/abc123",
"description": "Self-serve product analytics for small teams.",
"profile_url": "https://saasbrowser.com/en/saas/912/beacon-analytics"
}
]
}
Search Suggestions API
/api/search-suggestions
Autocomplete suggestions for a partial query, as used by the search box on this site. No authentication required, and the response is cached at the edge.
| Parameter | Type | Description |
|---|---|---|
q
|
string | The partial query typed so far. |
curl "https://saasbrowser.com/api/search-suggestions?q=analy"
{ "query": "analy", "suggestions": ["analytics", "analytics dashboard"] }
Domain Rating History API
/api/domain-rating-history/:serial_id
The monthly domain rating series behind the chart in the search
results table, for the SaaS with the given
serial_id. This endpoint authenticates with your
signed-in session rather than an API key, and is available to
subscribers only. It is limited to 60 requests per minute and
1,000 per day per account.
{
"points": [
{ "date": "2026-01-01", "domain_rating": 41 },
{ "date": "2026-02-01", "domain_rating": 43 }
]
}
MCP server
/mcp
SaaS Browser runs a Model Context Protocol server, so AI assistants
can search the database directly. It exposes tools for searching
SaaS, categories, technologies and alternatives, plus resources for
database statistics, categories, countries and technologies.
Discovery metadata is served from
/.well-known/mcp.json. See the
MCP server page for setup
instructions for your assistant.
Feeds and datasets
Two more machine-readable endpoints sit outside the JSON API and need no authentication:
-
/rss/latest-saas-funding-mergers-acquisitions-news.rss— an RSS feed of the latest funding, merger and acquisition events. -
/data/saas-share-of-the-web— the SaaS Share of the Web dataset, as.csvor.json. See the research page for methodology and citation.
Support
Need the Search API enabled, a higher limit, a bulk export, or reseller terms? Get in touch and tell us what you are building — we are happy to help you fit the data into your pipeline, CRM or product.