Use it inside no-code tools too: n8n (native node) · Clay · Zapier · Make
See all integrations

StartupHub.ai API

Access the world's most comprehensive startup intelligence platform programmatically. Search millions of data points across startups, investors, people, products, funding rounds, exits, news, research and patents. Enrich profiles with AI, find logos, discover and validate emails.

Search & Filter startups and investors across 50+ fields
AI Enrichment with live web data via RAG pipeline
Email Discovery and validation with 100% accuracy
MCP Server for Claude, Cursor, Windsurf, and other AI tools

Paste the MCP URL into Claude / Cursor / ChatGPT / Gemini. Paste the docs markdown into any AI to get help integrating the REST API.

Quick start

bash
curl "https://www.startuphub.ai/api/v1/startups?q=anthropic" \
  -H "Authorization: Bearer sk_live_..."

Authentication

All API requests require a Bearer token in the Authorization header.

2Create an API key (up to 3 per account)
3Copy the key immediately (shown only once)
4Pass it as Bearer sk_live_...
API keys are sensitive. Never expose them in client-side code, public repos, or browser requests.

Header format

http
Authorization: Bearer sk_live_a1b2c3d4e5f6...

Example with curl

bash
curl "https://www.startuphub.ai/api/v1/startups?q=ai" \
  -H "Authorization: Bearer sk_live_a1b2c3d4e5f6..."
GET/startups

Search and filter the startup database by name, sector, country, status, and more. Returns paginated results with metadata.

Cost:
1 credit per request

Query Parameters

qstring

Search query (matches name, description)

sectorstring

Filter by sector (e.g. "AI", "Fintech")

countrystring

Filter by HQ country

statusstring

Operating status: Active, Acquired, Closed

limitintegerdefault: 20

Results per page (1-100)

offsetintegerdefault: 0

Pagination offset

Errors

401
Invalid or missing API key
429
Daily rate limit exceeded

Request

cURL
curl
curl "https://www.startuphub.ai/api/v1/startups?q=anthropic&limit=5" \
  -H "Authorization: Bearer sk_live_..."
JavaScript
javascript
const res = await fetch(
  "https://www.startuphub.ai/api/v1/startups?q=anthropic&limit=5",
  {
    headers: {
      Authorization: "Bearer sk_live_...",
    },
  }
);

const { data, pagination } = await res.json();
Python
python
import requests

resp = requests.get(
    "https://www.startuphub.ai/api/v1/startups",
    params={"q": "anthropic", "limit": 5},
    headers={"Authorization": "Bearer sk_live_..."},
)

data = resp.json()

Response

json
{
  "data": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "Anthropic",
      "slug": "anthropic",
      "one_liner": "AI safety company building reliable AI systems",
      "website": "https://anthropic.com",
      "hq_country": "United States",
      "hq_city": "San Francisco",
      "founded_date": "2021-01-01",
      "operating_status": "Active",
      "sectors": ["AI", "Machine Learning"],
      "total_score": 92.5,
      "logo_url": "https://cdn.startuphub.ai/..."
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 5,
    "offset": 0
  },
  "credits": {
    "used": 1,
    "remaining": 49
  }
}
GET/startups/:slug

Retrieve the full profile for a startup by its URL slug. Fields returned depend on your plan tier (Free returns basic fields, Pro+ returns everything).

Cost:
1 credit per request

Query Parameters

slugstringrequired

The startup slug (URL identifier)

Errors

401
Invalid or missing API key
403
Stealth profile (Pro+ required)
404
Startup not found

Request

cURL
curl
curl "https://www.startuphub.ai/api/v1/startups/anthropic" \
  -H "Authorization: Bearer sk_live_..."
JavaScript
javascript
const res = await fetch(
  "https://www.startuphub.ai/api/v1/startups/anthropic",
  {
    headers: {
      Authorization: "Bearer sk_live_...",
    },
  }
);

const { data } = await res.json();
Python
python
import requests

resp = requests.get(
    "https://www.startuphub.ai/api/v1/startups/anthropic",
    headers={"Authorization": "Bearer sk_live_..."},
)

data = resp.json()

Response

json
{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Anthropic",
    "slug": "anthropic",
    "one_liner": "AI safety company...",
    "description": "Anthropic is an AI safety...",
    "website": "https://anthropic.com",
    "hq_country": "United States",
    "total_funding": 15000000000,
    "employee_count": 1500,
    "sectors": ["AI", "ML"],
    "total_score": 92.5,
    "logo_url": "https://cdn.startuphub.ai/..."
  }
}
GET/investors

Search VCs, angels, accelerators, and other investor types by name, country, or investor type.

Cost:
1 credit per request

Query Parameters

qstring

Search query (name, description)

countrystring

Filter by country

typestring

Investor type: VC, Angel, Accelerator, CVC, PE

limitintegerdefault: 20

Results per page (1-100)

offsetintegerdefault: 0

Pagination offset

Request

cURL
curl
curl "https://www.startuphub.ai/api/v1/investors?q=sequoia&type=VC" \
  -H "Authorization: Bearer sk_live_..."
JavaScript
javascript
const res = await fetch(
  "https://www.startuphub.ai/api/v1/investors?q=sequoia&type=VC",
  {
    headers: {
      Authorization: "Bearer sk_live_...",
    },
  }
);
Python
python
import requests

resp = requests.get(
    "https://www.startuphub.ai/api/v1/investors",
    params={"q": "sequoia", "type": "VC"},
    headers={"Authorization": "Bearer sk_live_..."},
)

Response

json
{
  "data": [
    {
      "id": "uuid",
      "name": "Sequoia Capital",
      "investor_type": "VC",
      "country": "United States",
      "description": "...",
      "total_score": 95.0
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "offset": 0
  }
}
GET/people

Search founders, executives, board members, and key team members by name, title, country, or sector.

Cost:
1 credit per request

Query Parameters

qstring

Search query (matches name, title)

countrystring

Filter by country

titlestring

Filter by current title (partial match)

sectorstring

Filter by sector

tagstring

Filter by tag: Unit 8200, Unit 81, Serial Entrepreneur, AI Expert, Investor, Has Exits

limitintegerdefault: 20

Results per page (1-100)

offsetintegerdefault: 0

Pagination offset

Errors

401
Invalid or missing API key
429
Daily rate limit exceeded

Request

cURL
curl
curl "https://www.startuphub.ai/api/v1/people?tag=Unit+8200&limit=10" \
  -H "Authorization: Bearer sk_live_..."
JavaScript
javascript
const res = await fetch(
  "https://www.startuphub.ai/api/v1/people?tag=Unit+8200&limit=10",
  {
    headers: {
      Authorization: "Bearer sk_live_...",
    },
  }
);

const { data, pagination } = await res.json();
Python
python
import requests

resp = requests.get(
    "https://www.startuphub.ai/api/v1/people",
    params={"tag": "Unit 8200", "limit": 10},
    headers={"Authorization": "Bearer sk_live_..."},
)

data = resp.json()

Response

json
{
  "data": [
    {
      "id": "uuid",
      "name": "Avi Shua",
      "slug": "avi-shua",
      "title": "CIO",
      "current_title": "Chief Innovation Officer at Orca Security",
      "city": "Tel Aviv",
      "country": "Israel",
      "sectors": ["Cybersecurity", "Cloud"],
      "total_score": 85.0,
      "tags": ["Unit 8200", "Serial Entrepreneur", "Has Exits"],
      "avatar_url": "https://cdn.startuphub.ai/..."
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 5,
    "offset": 0
  },
  "credits": {
    "used": 1,
    "remaining": 49
  }
}
POST/enrich

Full AI-powered RAG enrichment. Creates a new profile if the company doesn't exist, triggers enrichment with live web data, and returns cached results if already enriched. Requires Pro Lite or higher.

Cost:
5 credits per request

Body Parameters

namestringrequired

Company name

websitestring

Company website (improves matching)

linkedin_urlstring

Company LinkedIn profile URL

Errors

403
Requires Pro Lite or higher plan

Request

cURL
curl
curl -X POST "https://www.startuphub.ai/api/v1/enrich" \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"name": "Anthropic", "website": "https://anthropic.com"}'
JavaScript
javascript
const res = await fetch("https://www.startuphub.ai/api/v1/enrich", {
  method: "POST",
  headers: {
    Authorization: "Bearer sk_live_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    name: "Anthropic",
    website: "https://anthropic.com",
  }),
});
Python
python
import requests

resp = requests.post(
    "https://www.startuphub.ai/api/v1/enrich",
    json={
        "name": "Anthropic",
        "website": "https://anthropic.com",
    },
    headers={"Authorization": "Bearer sk_live_..."},
)

Response

json
{
  "data": {
    "id": "uuid",
    "name": "Anthropic",
    "slug": "anthropic",
    "description": "Anthropic is an AI safety...",
    "website": "https://anthropic.com",
    "total_funding": 15000000000,
    "employee_count": 1500
  },
  "source": "cache",
  "enriched": true
}
POST/email/discover

Find a professional email address given a person's name and company domain.

Cost:
3 credits per request

Body Parameters

firstNamestringrequired

Person's first name

lastNamestringrequired

Person's last name

domainstringrequired

Company email domain (e.g. anthropic.com)

Request

cURL
curl
curl -X POST "https://www.startuphub.ai/api/v1/email/discover" \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"firstName":"Dario","lastName":"Amodei","domain":"anthropic.com"}'
JavaScript
javascript
const res = await fetch("https://www.startuphub.ai/api/v1/email/discover", {
  method: "POST",
  headers: {
    Authorization: "Bearer sk_live_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    firstName: "Dario",
    lastName: "Amodei",
    domain: "anthropic.com",
  }),
});
Python
python
import requests

resp = requests.post(
    "https://www.startuphub.ai/api/v1/email/discover",
    json={
        "firstName": "Dario",
        "lastName": "Amodei",
        "domain": "anthropic.com",
    },
    headers={"Authorization": "Bearer sk_live_..."},
)

Response

json
{
  "found": true,
  "email": "[email protected]",
  "domain": "anthropic.com",
  "totalCombinationsTested": 12
}
POST/email/validate

Verify if an email address is valid and deliverable.

Cost:
1 credit per request

Body Parameters

emailstringrequired

Email address to validate

Request

cURL
curl
curl -X POST "https://www.startuphub.ai/api/v1/email/validate" \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]"}'
JavaScript
javascript
const res = await fetch("https://www.startuphub.ai/api/v1/email/validate", {
  method: "POST",
  headers: {
    Authorization: "Bearer sk_live_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    email: "[email protected]",
  }),
});
Python
python
import requests

resp = requests.post(
    "https://www.startuphub.ai/api/v1/email/validate",
    json={"email": "[email protected]"},
    headers={"Authorization": "Bearer sk_live_..."},
)

Response

json
{
  "email": "[email protected]",
  "valid": true,
  "reason": "Verified",
  "details": null
}
POST/startups/submit

Agent-friendly endpoint that lets an AI agent (or any API client) submit a new startup for inclusion on StartupHub.ai. Submissions enter a moderation queue and become public after admin approval (typically within 24h). Strict format: third-person prose, no HTML/markdown, no listicle titles. On bad input returns 400 with field-level errors and copy-paste suggestions so the agent can self-correct without human help. Optional logo_url is fetched and stored automatically (≤2MB).

Cost:
5 credits per request

Body Parameters

namestringrequired

Official company name (≤80 chars; no listicle words like "best/top/2026")

websitestringrequired

Company website URL

one_linerstringrequired

One-sentence pitch in third person, 20–200 chars

descriptionstringrequired

Full description in third person, 30–400 words, plain text only

sectorsarrayrequired

1–5 sectors from the controlled vocabulary

founded_datestring

YYYY, YYYY-MM, or YYYY-MM-DD

hq_countrystring

Country

hq_citystring

City

linkedin_urlstring

Company LinkedIn URL

twitter_urlstring

Company Twitter/X URL

github_urlstring

Company GitHub URL

logo_urlstring

Optional logo image URL — server fetches and stores (≤2MB, PNG/JPEG/WebP/SVG/GIF)

stagestring

Pre-seed | Seed | Series A/B/C/D | Series E+ | Growth | Late Stage | Pre-IPO | Public | Acquired | Bootstrapped

business_modelstring

B2B SaaS | B2C SaaS | Marketplace | API/Developer Tools | Hardware | ...

employee_countnumber

total_fundingnumber

USD

latest_funding_roundstring

e.g. "Series B"

latest_funding_datestring

YYYY or YYYY-MM-DD

latest_valuationnumber

USD

stock_exchangestring

NASDAQ | NYSE | ... — for public companies

tickerstring

linkedin_followersnumber

github_starsnumber

former_namesarray

Previous company names

facebook_urlstring

youtube_urlstring

blog_urlstring

substack_urlstring

discord_urlstring

slack_urlstring

community_urlstring

status_urlstring

changelog_urlstring

roadmap_urlstring

api_docs_urlstring

security_page_urlstring

demo_urlstring

demo_video_urlstring

coding_languagesarray

e.g. ["Python", "TypeScript", "Rust"]

frameworks_toolsarray

cloud_providersarray

e.g. ["AWS", "GCP"]

certificationsarray

SOC 2 | SOC 2 Type II | ISO 27001 | HIPAA | GDPR | PCI DSS | FedRAMP | ...

is_raisingboolean

raising_roundstring

raising_targetnumber

USD

raising_use_of_fundsstring

pitch_deck_urlstring

is_hiringboolean

careers_urlstring

contact_emailstring

partnerships_emailstring

press_emailstring

foundersarray

Array of { name, role, linkedin_url, email } — matched to existing people by slug / name / LinkedIn; unmatched stashed in admin review queue

team_membersarray

Same shape as founders

notable_investorsarray

Array of { name, slug, website } — matched to existing investors

competitorsarray

Array of { name, slug, website } — matched to existing startups

mentioned_articlesarray

Array of { slug } or { url } — links to StartupHub.ai posts; bidirectional

productsarray

Array of { name, description, url } — stashed in meta_fields for admin promotion

Errors

400
validation_failed — response includes errors[] with field, message, suggestion
409
duplicate — a profile with this website domain already exists
429
rate_limit — daily/monthly credit cap reached

Request

cURL
curl
curl -X POST "https://www.startuphub.ai/api/v1/startups/submit" \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Anthropic",
    "website": "https://anthropic.com",
    "one_liner": "Anthropic builds reliable, interpretable, and steerable AI systems for the safety-conscious enterprise.",
    "description": "Anthropic is an AI safety company building large-scale language models with a focus on reliability and interpretability. Founded in 2021 by former OpenAI executives, the company researches techniques for making AI systems more honest, harmless, and helpful. Anthropic offers Claude, an enterprise-grade chat assistant, alongside research APIs.",
    "sectors": ["Artificial Intelligence", "AI Research"],
    "founded_date": "2021",
    "hq_country": "United States",
    "hq_city": "San Francisco",
    "logo_url": "https://anthropic.com/logo.png"
  }'
JavaScript
javascript
const res = await fetch("https://www.startuphub.ai/api/v1/startups/submit", {
  method: "POST",
  headers: {
    Authorization: "Bearer sk_live_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    name: "Anthropic",
    website: "https://anthropic.com",
    one_liner: "Anthropic builds reliable, interpretable, and steerable AI systems...",
    description: "Anthropic is an AI safety company...",
    sectors: ["Artificial Intelligence", "AI Research"],
    founded_date: "2021",
    hq_country: "United States",
    logo_url: "https://anthropic.com/logo.png",
  }),
});
const data = await res.json();
if (!res.ok && data.error === "validation_failed") {
  // Each error has { field, message, suggestion } — fix and retry
  for (const err of data.errors) {
    console.warn(`${err.field}: ${err.message} — ${err.suggestion}`);
  }
}
Python
python
import requests

resp = requests.post(
    "https://www.startuphub.ai/api/v1/startups/submit",
    json={
        "name": "Anthropic",
        "website": "https://anthropic.com",
        "one_liner": "Anthropic builds reliable, interpretable, and steerable AI systems...",
        "description": "Anthropic is an AI safety company...",
        "sectors": ["Artificial Intelligence", "AI Research"],
        "founded_date": "2021",
        "hq_country": "United States",
        "logo_url": "https://anthropic.com/logo.png",
    },
    headers={"Authorization": "Bearer sk_live_..."},
)
data = resp.json()
if resp.status_code == 400 and data.get("error") == "validation_failed":
    for err in data["errors"]:
        print(f"{err['field']}: {err['message']} -- {err.get('suggestion', '')}")

Response

json
{
  "success": true,
  "status": "pending_review",
  "message": "Submission received. An admin will review within 24 hours. The profile is not publicly visible until approved.",
  "startup": {
    "id": "uuid",
    "slug": "anthropic",
    "name": "Anthropic",
    "url": "https://www.startuphub.ai/startups/anthropic",
    "moderation_status": "flagged_pending",
    "logo_url": "https://bsmromhjxdnndenlrpgx.supabase.co/storage/v1/object/public/entity-images/startups/uuid.png"
  },
  "credits": { "used": 5, "limit": 100, "remaining": 95 }
}
POST/investors/submit

Submit a new investor profile (VC, angel, accelerator, etc.) for moderation review. Same flow as Submit a Startup. Deduped by website domain or name+country.

Cost:
5 credits per request

Body Parameters

namestringrequired

Official firm name (≤100 chars)

typestringrequired

VC | Angel | Accelerator | Incubator | Corporate VC | Family Office | Sovereign Wealth Fund | Crowdfunding | PE | Hedge Fund | Syndicate

descriptionstringrequired

Third-person, 20–400 words

websitestring

Firm website

countrystring

citystring

sector_focusarray

Up to 10 sectors invested in

stage_focusarray

Pre-seed | Seed | Series A | Series B | Series C | Series D | Growth | Late Stage

logo_urlstring

Optional logo URL (≤2MB)

Request

cURL
curl
curl -X POST "https://www.startuphub.ai/api/v1/investors/submit" \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Sequoia Capital",
    "type": "VC",
    "description": "Sequoia Capital is a venture capital firm founded in 1972 with a focus on technology and consumer companies. The firm invests across stages from seed to growth and has backed companies including Apple, Google, and Nvidia.",
    "website": "https://sequoiacap.com",
    "country": "United States",
    "city": "Menlo Park",
    "stage_focus": ["Seed", "Series A", "Series B", "Growth"]
  }'
JavaScript
javascript
const res = await fetch("https://www.startuphub.ai/api/v1/investors/submit", {
  method: "POST",
  headers: { Authorization: "Bearer sk_live_...", "Content-Type": "application/json" },
  body: JSON.stringify({
    name: "Sequoia Capital",
    type: "VC",
    description: "Sequoia Capital is a venture capital firm...",
    website: "https://sequoiacap.com",
    stage_focus: ["Seed", "Series A", "Growth"],
  }),
});
Python
python
import requests
resp = requests.post(
    "https://www.startuphub.ai/api/v1/investors/submit",
    json={
        "name": "Sequoia Capital",
        "type": "VC",
        "description": "Sequoia Capital is a venture capital firm...",
        "website": "https://sequoiacap.com",
        "stage_focus": ["Seed", "Series A", "Growth"],
    },
    headers={"Authorization": "Bearer sk_live_..."},
)

Response

json
{
  "success": true,
  "status": "pending_review",
  "investor": { "id": "uuid", "slug": "sequoia-capital", "name": "Sequoia Capital",
    "url": "https://www.startuphub.ai/investors/sequoia-capital",
    "moderation_status": "flagged_pending" },
  "credits": { "used": 5, "limit": 100, "remaining": 95 }
}
POST/people/submit

Submit a new person profile (founder, executive, board member). Requires either current_title or linkedin_url to disambiguate from common-name dupes. Third-person bio, plain text, ≤300 words.

Cost:
5 credits per request

Body Parameters

namestringrequired

Person's full name (≤80 chars)

current_titlestring

e.g. "CEO at OpenAI" — required if no linkedin_url

linkedin_urlstring

Personal LinkedIn (linkedin.com/in/...) — required if no current_title

descriptionstring

Third-person bio, ≤300 words

citystring

countrystring

twitter_urlstring

github_urlstring

avatar_urlstring

Optional avatar image URL (≤2MB)

Request

cURL
curl
curl -X POST "https://www.startuphub.ai/api/v1/people/submit" \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Dario Amodei",
    "current_title": "CEO and Co-founder at Anthropic",
    "linkedin_url": "https://linkedin.com/in/darioamodei",
    "description": "Dario Amodei is the CEO and co-founder of Anthropic. He previously served as VP of Research at OpenAI.",
    "country": "United States"
  }'
JavaScript
javascript
const res = await fetch("https://www.startuphub.ai/api/v1/people/submit", {
  method: "POST",
  headers: { Authorization: "Bearer sk_live_...", "Content-Type": "application/json" },
  body: JSON.stringify({
    name: "Dario Amodei",
    current_title: "CEO and Co-founder at Anthropic",
    linkedin_url: "https://linkedin.com/in/darioamodei",
  }),
});
Python
python
import requests
resp = requests.post(
    "https://www.startuphub.ai/api/v1/people/submit",
    json={"name": "Dario Amodei", "current_title": "CEO and Co-founder at Anthropic",
          "linkedin_url": "https://linkedin.com/in/darioamodei"},
    headers={"Authorization": "Bearer sk_live_..."},
)

Response

json
{
  "success": true,
  "status": "pending_review",
  "person": { "id": "uuid", "slug": "dario-amodei", "name": "Dario Amodei",
    "url": "https://www.startuphub.ai/people/dario-amodei",
    "moderation_status": "flagged_pending" },
  "credits": { "used": 5, "limit": 100, "remaining": 95 }
}
POST/agent-readiness

Scans any website and scores how well it is optimised for AI agents — robots.txt, sitemap, llms.txt, llms-full.txt, markdown content-negotiation, MCP server card, and more. Returns a score out of 100, a letter grade, and per-check pass/warn/fail results with improvement suggestions. Using Clay? See /integrations/clay for the copy-paste HTTP API column setup.

Cost:
1 credit per request

Body Parameters

urlstringrequired

Full URL of the website to scan (e.g. https://anthropic.com)

Request

cURL
curl
curl -X POST "https://www.startuphub.ai/api/v1/agent-readiness" \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://anthropic.com" }'
JavaScript
javascript
const res = await fetch("https://www.startuphub.ai/api/v1/agent-readiness", {
  method: "POST",
  headers: {
    Authorization: "Bearer sk_live_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ url: "https://anthropic.com" }),
});

const { data } = await res.json();
console.log(data.totalScore, data.grade);
Python
python
import requests

resp = requests.post(
    "https://www.startuphub.ai/api/v1/agent-readiness",
    headers={"Authorization": "Bearer sk_live_..."},
    json={"url": "https://anthropic.com"},
)

data = resp.json()["data"]
print(data["totalScore"], data["grade"])

Response

json
{
  "data": {
    "url": "https://anthropic.com",
    "totalScore": 82,
    "grade": "A",
    "categories": [
      { "category": "crawlability", "label": "Crawlability", "score": 100, "passed": 3, "total": 3 },
      { "category": "content", "label": "Content", "score": 75, "passed": 3, "total": 4 },
      { "category": "agent_protocols", "label": "Agent Protocols", "score": 60, "passed": 2, "total": 3 }
    ],
    "checks": [
      {
        "id": "robots-txt",
        "label": "robots.txt present",
        "status": "pass",
        "category": "crawlability",
        "weight": 3,
        "detail": "robots.txt found and accessible."
      },
      {
        "id": "llms-txt",
        "label": "llms.txt present",
        "status": "fail",
        "category": "agent_protocols",
        "weight": 3,
        "detail": "No llms.txt found. Add one at /llms.txt to help agents discover your site structure.",
        "fix_prompt": "Create /llms.txt at your site root listing your most important URLs (one per line, plain text). Example:\nhttps://example.com/about\nhttps://example.com/products\nhttps://example.com/api-docs\nThis is the primary discovery file for AI agents."
      }
    ],
    "markdown": "## Agent Readiness Report\n**Score:** 82/100 (A)\n...",
    "scannedAt": "2026-04-23T12:00:00.000Z",
    "totalMs": 1840
  },
  "credits": { "used": 1, "limit": 50, "remaining": 49 }
}
GET/advertiser/analytics

Live performance for ads owned by your account: impressions, clicks, CTR, daily trend, by-placement and by-variant breakdown. Same JSON shape your /my-account?tab=ads dashboard renders. Free for own data — no credit cost.

Cost:
1 credit per request

Query Parameters

ad_idinteger

Filter to a single ad (must be owned by you). Omit for all of your ads.

daysinteger

Lookback window in days (default 30, max 365).

Request

cURL
curl
curl -H "Authorization: Bearer sk_live_..." \
  "https://www.startuphub.ai/api/v1/advertiser/analytics?days=30"
JavaScript
javascript
const res = await fetch("https://www.startuphub.ai/api/v1/advertiser/analytics?days=30", {
  headers: { Authorization: "Bearer sk_live_..." },
});
const { ads, totals } = await res.json();
console.log(totals.impressions, totals.clicks, totals.ctr);
Python
python
import requests
resp = requests.get(
    "https://www.startuphub.ai/api/v1/advertiser/analytics",
    headers={"Authorization": "Bearer sk_live_..."},
    params={"days": 30},
)
data = resp.json()
print(data["totals"])

Response

json
{
  "ads": [
    {
      "ad": { "id": 1234, "title": "Airwallex for global startups", "status": "active", "is_published": true },
      "impressions": 48210,
      "clicks": 312,
      "ctr": 0.6,
      "surface_breakdown": {
        "article": { "impressions": 28100, "clicks": 178 },
        "profile_page": { "impressions": 14210, "clicks": 95 },
        "search": { "impressions": 5900, "clicks": 39 }
      },
      "variant_breakdown": {
        "v1-uuid": { "impressions": 24000, "clicks": 165, "ctr": 0.7 },
        "v2-uuid": { "impressions": 24210, "clicks": 147, "ctr": 0.6 }
      },
      "series": [
        { "day": "2026-04-01", "impressions": 1620, "clicks": 11 },
        { "day": "2026-04-02", "impressions": 1750, "clicks": 9 }
      ]
    }
  ],
  "totals": { "impressions": 48210, "clicks": 312, "ctr": 0.6 },
  "window_days": 30
}

Rate Limits

Daily credit limits reset at midnight UTC. Your current usage is visible in real-time at My Account → API.

EndpointCreditsFreeMarket Map MakerPro LiteProPro+
Email Validate150/day500/day2,000/day10,000/day
Email Discover35/day50/day200/day1,000/day
Search / DB150/day500/day2,000/day10,000/day
Profile125/day250/day1,000/day5,000/day
Logo110/day100/day500/day2,500/day
Enrich5--25/day100/day500/day

Hit your daily limit? Top up credits one-off or upgrade your plan for a higher daily ceiling.

Errors

The API uses standard HTTP status codes. All error responses include an error field with a human-readable message.

400

Bad Request

Missing or invalid parameters

401

Unauthorized

Invalid or missing API key

403

Forbidden

Feature requires a higher plan tier

404

Not Found

Resource does not exist

429

Rate Limited

Daily credit limit exceeded

500

Server Error

Internal error (retry after a moment)

Error response format

json
{
  "error": "Rate limit exceeded",
  "message": "You've reached your daily limit of 50 search requests. Upgrade to Pro Lite for higher limits.",
  "upgrade_url": "https://www.startuphub.ai/pricing"
}

MCP Server

Connect StartupHub.ai data directly to Claude Desktop, Cursor, Windsurf, or any MCP-compatible AI tool. All API endpoints are available as MCP tools.

Search startups and investors from your AI chat

Enrich companies with live web data

Discover and validate emails inline

Find company logos for presentations

Endpoint URL

https://www.startuphub.ai/api/mcp

claude_desktop_config.json / .cursor/mcp.json

json
{
  "mcpServers": {
    "startuphub": {
      "url": "https://www.startuphub.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer sk_live_..."
      }
    }
  }
}

The `Authorization` header is optional — without it you get the free tools (email validate, email discover, agent readiness, logo, trends). Add a key to unlock startup search, submit, edit, and profile tools.

Use it in your favourite AI client

StartupHub speaks Model Context Protocol over HTTP — paste one URL into any of these and your assistant gains 30+ tools for searching, enriching, finding emails, validating emails, scanning AI-readiness, and submitting startup data. See the full tool catalog →

Claude Desktop

The reference MCP client. Free + Pro.

%APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "startuphub": {
      "url": "https://www.startuphub.ai/api/mcp",
      "headers": { "Authorization": "Bearer sk_live_..." }
    }
  }
}

Claude Code

Anthropic's terminal coding agent.

one command

claude mcp add startuphub --transport http https://www.startuphub.ai/api/mcp \
  --header "Authorization: Bearer sk_live_..."

OpenAI Codex CLI

OpenAI's open-source coding agent. STDIO + HTTP MCP.

~/.codex/config.toml

[mcp_servers.startuphub]
url = "https://www.startuphub.ai/api/mcp"
[mcp_servers.startuphub.http_headers]
Authorization = "Bearer sk_live_..."

Cursor

AI-native code editor.

.cursor/mcp.json (project) or ~/.cursor/mcp.json (global)

{
  "mcpServers": {
    "startuphub": {
      "url": "https://www.startuphub.ai/api/mcp",
      "headers": { "Authorization": "Bearer sk_live_..." }
    }
  }
}

Windsurf

Codeium's AI IDE.

Settings → MCP servers → Add

{
  "mcpServers": {
    "startuphub": {
      "serverUrl": "https://www.startuphub.ai/api/mcp",
      "headers": { "Authorization": "Bearer sk_live_..." }
    }
  }
}

Zed

High-performance collaborative editor.

Settings → context_servers

{
  "context_servers": {
    "startuphub": {
      "command": null,
      "url": "https://www.startuphub.ai/api/mcp",
      "headers": { "Authorization": "Bearer sk_live_..." }
    }
  }
}

Continue.dev

Open-source AI extension for VS Code & JetBrains.

~/.continue/config.json

{
  "mcpServers": [
    {
      "name": "startuphub",
      "url": "https://www.startuphub.ai/api/mcp",
      "headers": { "Authorization": "Bearer sk_live_..." }
    }
  ]
}

Cline (VS Code)

AI coding assistant inside VS Code.

Cline settings → MCP servers

{
  "startuphub": {
    "url": "https://www.startuphub.ai/api/mcp",
    "headers": { "Authorization": "Bearer sk_live_..." }
  }
}

Goose (Block)

Open-source AI agent from Block.

~/.config/goose/config.yaml

extensions:
  startuphub:
    type: streamable_http
    uri: https://www.startuphub.ai/api/mcp
    headers:
      Authorization: "Bearer sk_live_..."

ChatGPT Desktop

Plus / Team / Enterprise. Web ChatGPT does not support MCP.

Settings → Beta features → Connectors

URL:    https://www.startuphub.ai/api/mcp
Header: Authorization: Bearer sk_live_...

Gemini CLI

Google's terminal Gemini agent.

~/.gemini/settings.json

{
  "mcpServers": {
    "startuphub": {
      "httpUrl": "https://www.startuphub.ai/api/mcp",
      "headers": { "Authorization": "Bearer sk_live_..." }
    }
  }
}

JetBrains AI Assistant

IntelliJ / WebStorm / PyCharm.

Settings → Tools → AI Assistant → MCP

Add server →
  URL: https://www.startuphub.ai/api/mcp
  Header: Authorization: Bearer sk_live_...

Building your own agent?

The endpoint speaks streamable-HTTP MCP, so it works with the official OpenAI Agents SDK (MCPServerStreamableHttp), LangChain's MultiServerMCPClient, LlamaIndex, LibreChat, and the broader MCP ecosystem. Without a Bearer header you get five free tools rate-limited per IP; with a key you get all 30+ tools and your plan’s quota.

Ready to get started?

Create a free API key and start building in minutes. No credit card required.