Startup data your agent can query.

No dashboard. A public API and an MCP server. Companies, funding rounds, investors, people, open roles, and what agents contribute, each contributed fact with its source URL, fetch date, and verification status.

Claude Code
claude mcp add --transport http --scope user startupgraph https://startupgraph.dev/mcp --header "Authorization: Bearer $STARTUPGRAPH_KEY"
Terminal
curl -X POST https://startupgraph.dev/api/keys -d '{"email":"you@example.com"}'   # a one-time link to your key arrives by email
curl -H "Authorization: Bearer $STARTUPGRAPH_KEY" https://startupgraph.dev/api/companies/anthropic

Every call carries a key, so abuse is one key to cut. Free keys get 10,000 tokens on the quarterly snapshot; a token is about four bytes of what we return. Paid keys read live. Contribute facts to earn tokens, or pay for live.

What landed

Counted from the change log as this page loads, and again every minute.

Past hour
–
Past day
–
Past week
–
Past month
–

    Facts are what agents and our own pulls submit; a change is a field that moved because of one. Live on GET /api/pulse, no key needed.

    Ask it

    Tool calls and what came back, recorded against the dataset on 2026-10-12. The agent writes the prose.

    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 (roadmap).
    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 })   // both filters run; hiring matches only a company with two open-role readings
    Roadmap, not yet true. This is the question the dataset is being built to answer (roadmap). Rounds after 2026-02 are not on file and open-role pulls start at launch. coverage says so. A company without two open-role readings is never counted as hiring or as not hiring.

    Tools

    Same names on the MCP server and under /api.

    search_companies
    Filter by category, country, stage, raised_since, investors, headcount and founded-date bounds, total raised. Returns slugs, not pages. The hiring filter matches only companies with two open-role readings, the latest under 30 days old. The open_jobs_delta sort puts those companies first and the rest last. Headcount growth: roadmap.
    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.
    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.
    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

    An agent that can't see the gaps fills them with guesses. Counts live at GET /api/coverage, per field and per country, and stay off this page until the imports finish. Free keys read the last quarter's snapshot once it is built (roadmap); until then every key reads live.

    FieldNote
    CompaniesCompanies House (UK), Wikipedia lists, YC.
    Funding roundsTarget: match published quarterly deal counts.
    Headcount by quarterHistories exist but are not yet source-backed. Treated as unverified.
    Open rolesWeekly ATS board pulls start with the first Monday run.
    PeopleFounders and executives, a small set of companies so far.
    Open source projectsStars as of import. Weekly refresh: roadmap.

    Contribute

    Tell your agent what you know. It files the fact with a source. When the fact verifies, your key earns tokens.

    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: 10000 }
    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: 5000 }
    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 · tokens remaining
    10,000
    10,000 tokensfree allowance plus what you earn
    1. queuedNew company · Fathom Robotics…
    2. verifiedNew company · Fathom Robotics · site live, YC listing matched+10,000
    3. queuedFunding round · Cursor…
    4. verifiedFunding round · Cursor · source matched+5,000
    5. queuedHeadcount · Ramp…
    6. verifiedHeadcount · Ramp · second contributor agreed+2,000
    7. rejectedExecutive · Vercel · claim not on cited page+0
    8. verifiedCorrection · Klarna founded date · Companies House+1,000
    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. 10,000 tokens for a new company, 5,000 for a funding round, 2,000 for a headcount snapshot or executive, 1,000 for a correction. Fabricated sources get the key banned, not warned.

    Trusted on one source: the company's own site, Companies House, SEC filings, and allow-listed press. Everything else needs two.

    Pricing

    Free
    $0
    Quarterly snapshot
    • 10,000 tokens to start. They do not renew; contributing facts earns more
    • The dataset as of the last quarter end
    • 60 calls a minute
    • Every tool, every field
    Live
    $49 / month
    Realtime
    • 1,000,000 tokens a month
    • 100,000 tokens a day, 300 calls a minute
    • Every fact as it lands, verified or flagged
    • changes_since down to the minute
    Scale
    $199 / month
    Realtime, bulk
    • 5,000,000 tokens a month
    • 500,000 tokens a day, 1,000 calls a minute
    • Everything in Live
    • Bulk export and nightly dump on request

    A token is about four bytes of what a call returns, ten at the least, so a search that returns twenty companies costs more than one that returns two. Every response says what it cost in X-Tokens-Charged, and GET /api/keys/me shows what is left today and this month.

    Need more than the allowance, a bulk export, or the nightly dump? Contact us. Pay as you go is set up by hand on Live and Scale: calls past the monthly allowance keep working at $0.10 per 1,000 tokens, billed on the next invoice. The daily and per-minute limits still hold.

    Upgrade from your agent: POST /api/billing/checkout {"plan": "live"} or {"plan": "scale"} returns a Stripe Checkout link and the webhook flips the key. No seats, no sales call.