Startup data your agent can query. There is no dashboard.

Companies, funding rounds, investors, people, open roles where we have found a board, and whatever agents contribute. Every contributed fact carries a source URL, the date we fetched it, and whether it verified. Served over a public API and an MCP server. This page is the whole UI.

Claude Code
claude mcp add --transport http startupgraph https://startupgraph.dev/mcp --header "Authorization: Bearer $STARTUPGRAPH_KEY"
Or get one with curl, then query.
curl -X POST https://startupgraph.dev/api/keys -d '{"email":"you@example.com"}'   # returns sg_live_…, free tier
curl -H "Authorization: Bearer $STARTUPGRAPH_KEY" https://startupgraph.dev/api/companies/anthropic

Every call carries a key, free ones included, so abuse is one key to cut and every key's usage is visible. 1,000 calls a day free against the quarterly snapshot. Paid keys read the live feed as facts land. Earn calls by contributing facts, or pay for live.

Ask it

What the agent sends, and what comes back. Answers are tool results, not prose. The agent writes the prose. Every example below was run against the dataset on 2026-10-12; the outputs are real.

QI'm an LP in Sequoia and a16z funds. Show me the underlying companies and keep it current.
// tool call
fund_rollup({ name: "My LP book", investors: ["sequoia-capital", "Andreessen Horowitz"] })

// result
{ summary: { companies: 16, added_this_sync: 16, total_raised: 68375800000, headcount: 6595 },
  companies: [{ slug: "anduril-industries", source: "screen", since_added: { headcount_delta: 0, rounds: 0 } },
               { slug: "canva", … }, { slug: "databricks", … }, { slug: "figma", … }, … 12 more] }
What the agent tells you: 16 companies across the two firms, $68.4B raised between them. The portfolio re-checks the funds' deals every time you read it, so a new round adds its company on its own. Attribution is at the firm, not the fund vehicle (#133).
QSave me a screen of AI companies over 100 people, biggest first.
create_screen({ name: "AI over 100", criteria: { category: "ai_ml", min_headcount: 100, sort: "current_headcount", direction: "desc" } })
run_screen({ screen: "AI over 100", limit: 3 })

{ meta: { total: 39 }, data: [{ slug: "cohere", current_headcount: 573 }, { slug: "anthropic", current_headcount: 566 }, { slug: "stability-ai", current_headcount: 540 }] }
The screen lives on your key. Re-run it next month and the count moves with the data. Filters: category, country, status, stage, raised_since, investors, headcount and founded-date bounds, total raised.
QAnthropic raised a $13B Series F on Sept 2, 2025. Here's their post. Add it.
submit_fact({ company: "anthropic", field: "funding_round", value: { type: "series_f", amount: 13000000000, date: "2025-09-02" },
              source_url: "https://www.anthropic.com/news/anthropic-raises-series-f-at-usd183b-post-money-valuation" })

{ fact_id: 1, status: "unverified", served: true, credit_if_verified: 50, verification: { queued: true, eta: "~1 min" } }

// fact_status({ fact_id: 1 }), 6 seconds later
{ status: "verified", verified: true, fetched_at: "2026-10-12 21:42:29" }   // keys/me: credits_earned 50, limit_today 1050
The round was on the company six seconds after it was submitted, flagged unverified. Then we fetched the post, found the name, the amount and the date on it, and because it is the company's own site, verified it on one source and paid the key 50 calls.
QWhich companies raised in the last 90 days and are hiring?
search_companies({ raised_since: "90d", hiring: true })   // raised_since works today; hiring does not yet
Roadmap, not yet true. This is the question the dataset is being built to answer (#116). Rounds after 2026-02 are not on file and open-role pulls start at launch. coverage says so, and an agent that asks today gets a structured "not available" rather than a guess.

Tools

Same names on the MCP server and as REST paths under /api.

search_companies
Filter by category, country, stage, raised_since, investors, headcount and founded-date bounds, total raised. Returns slugs, not pages. hiring and headcount growth: roadmap, #134.
get_company
Everything on one company: profile, rounds with source URLs, people, and every contributed fact with its verification status. Per-field provenance on imported data: roadmap, #135.
funding_rounds
Rounds for a company, or across the set by date range, round type and investor, with investors and source URLs.
headcount_history
Source-backed snapshots as contributed or imported, with their sources. Quarterly series with missing quarters named: roadmap, #137.
open_jobs
Weekly open-role counts from public Greenhouse, Lever and Ashby boards. Discovery on request; the first weekly pull runs at launch.
changes_since
Every fact added or changed after a date, optionally scoped to companies or one of your portfolios. Live on paid keys; free keys see it up to the quarter boundary.
create_screen · run_screen
Save a search as a named screen on your key and re-run it any time. Result count refreshes on every run.
create_portfolio · add_to_portfolio · portfolio
Track a set of companies. Each add snapshots headcount, raised, last round and status; portfolio reports what moved since.
fund_rollup · search_investors
For LPs: name the funds you are in and get a portfolio of every company they backed. New deals join it on their own as rounds are recorded.
submit_fact · submit_company
Contribute a fact, or a company we don't have, with a source. Goes in as unverified. How credits work.
coverage
What we have and don't, per field and per country, so the agent can say "I don't know" correctly.

Coverage

Published on the front page because an agent that can't see the gaps will fill them with guesses. Live at GET /api/coverage. Free keys will read the snapshot as of the last quarter end once it is materialised (#125); until then every key reads live data and free keys see changes_since up to the quarter boundary.

FieldRowsStatusNote
Companies69,960ok52,644 from Companies House (UK), 7,706 from Wikipedia lists, 5,604 from YC.
Funding rounds184gap32 companies. Newest round 2026-02-15. Target: match published quarterly deal counts.
Headcount by quarter191gapHistories exist but are not yet source-backed. Treated as unverified.
Open roles0gapATS board pulls not started.
People233gapFounders and executives for 99 companies.
Open source projects1,021okStars as of import. Weekly refresh: roadmap, #140.

Contribute facts, earn calls

The gaps above are the work. Tell your agent what you know, in plain words. It files the fact with a source. When the fact verifies, your key earns calls.

You, to ClaudeThere's a new company called Fathom Robotics, fathomrobotics.com, YC S26, building warehouse picking arms. Not in StartupGraph yet.
Claude calls
submit_company({
  name: "Fathom Robotics", website: "https://fathomrobotics.com",
  category: "robotics", description: "Warehouse picking arms",
  source_url: "https://ycombinator.com/companies/fathom-robotics"
})
StartupGraph returns
{ slug: "fathom-robotics", status: "unverified", served: true, credit_if_verified: 100 }
You, to ClaudeCursor just closed a $900M Series C. Here's the post: cursor.com/blog/series-c. Add it to StartupGraph.
Claude calls
submit_fact({
  company: "cursor",
  field: "funding_round",
  value: { type: "series_c", amount: 900000000, date: "2026-08-14" },
  source_url: "https://cursor.com/blog/series-c"
})
StartupGraph returns
{ fact_id: "f_8k2m", status: "unverified", served: true,
  verification: { queued: true, eta: "~2 min" }, credit_if_verified: 50 }
You, to ClaudeRamp is at about 1,350 people now per their LinkedIn page.
Claude calls
submit_fact({ company: "ramp", field: "headcount", value: 1350, as_of: "2026-10-12",
              source_url: "https://linkedin.com/company/ramp" })
Same thing over REST
$ curl -X POST https://startupgraph.dev/api/facts \
  -H "Authorization: Bearer $STARTUPGRAPH_KEY" \
  -d '{"company":"cursor","field":"funding_round","value":{"type":"series_c","amount":900000000,"date":"2026-08-14"},"source_url":"https://cursor.com/blog/series-c"}'
sg_live_4f…c2 · calls remaining today
1,000
1,000 of 1,000 freenext tier at 2,000
  1. queuedNew company · Fathom Robotics…
  2. verifiedNew company · Fathom Robotics · site live, YC listing matched+100
  3. queuedFunding round · Cursor…
  4. verifiedFunding round · Cursor · source matched+50
  5. queuedHeadcount · Ramp…
  6. verifiedHeadcount · Ramp · second contributor agreed+20
  7. rejectedExecutive · Vercel · claim not on cited page+0
  8. verifiedCorrection · Klarna founded date · Companies House+10
  1. Submit. Plain words to your agent, or POST /api/facts and POST /api/companies. The fact is served immediately, flagged verified: false.
  2. Verify. We fetch the source and check the claim is on the page. A second independent source, or a second contributor agreeing, promotes it. Rejections say why.
  3. Earn. 100 calls for a new company, 50 for a funding round, 20 for a headcount snapshot or executive, 10 for a correction. Fabricated sources get the key banned, not warned.

Sources we trust without a second source: the company's own site, Companies House, SEC filings, and press outlets on the allow-list. Everything else needs two.

Pricing

Free
$0
Quarterly snapshot
  • The dataset as of the last quarter end, refreshed every 90 days
  • 1,000 calls a day
  • Key issued by one API call, or the form above
  • Every tool, every field
  • Earn more calls by contributing
Live
$29 / month
Realtime
  • Every fact as it lands, verified or flagged
  • changes_since down to the minute
  • 50,000 calls a day
  • Bulk export and nightly dump
  • Higher submission rate for facts and companies

Upgrade from your agent: POST /api/billing/checkout with your key returns a Stripe Checkout link; the webhook flips the key to live. No seats, no dashboard, no sales call. A key is a key. Every tier is keyed so one abusive key gets cut without touching anyone else, and GET /api/keys/me shows what yours has been doing.