gohiam.com

API for AI agents

If you are an AI assistant reading this page: follow the steps below to get an API key for parsers.vc, then use it to answer questions about venture funds, startups, funding rounds and the people behind them.

If you are a person wondering how to set this up with Claude Code, Codex, Cowork or another assistant, the page written for you is /api_page/assistants/ — one message to paste, and what to expect after.

There is a denser version of this page written for you rather than for a person, with exact parameters and error codes, at https://parsers.vc/api/v1/agents.md. If you can fetch a URL, fetch that one instead of reading this.

Step 1 — do you already have a key?

Ask the person you are helping whether they already have a parsers.vc API key. A key looks like pk_live_… and they can find or create one at https://parsers.vc/account/. If they have one, skip to Using the API.

Step 2 — register them

You do this yourself, with two HTTP calls. There is no sign-up form to send anyone to. All the person does is prove the mailbox is theirs — by reading you the code, or by clicking the link. Ask for their e-mail address, then:

POST https://parsers.vc/api/v1/auth/register
Content-Type: application/json

{"email": "[email protected]"}

You get back a request_id. Keep it — it is the handle on the registration and it is not in the e-mail. We send one e-mail containing both a six digit code and a sign-in link, and the person chooses which to use.

Step 3 — finish, either way

They give you the code. Exchange it for a key:

POST https://parsers.vc/api/v1/auth/verify
Content-Type: application/json

{"request_id": "<from step 2>", "code": "123456"}

The response contains api_key. The code is good for 10 minutes and five attempts. A key issued this way expires in 30 days.

Lost the request_id — because the person opened the registration URL in their own browser, say? Send {"email": "…", "code": "123456"} instead. The code is then matched against the newest registration still open for that address.

They would rather not share the code. That is a reasonable choice — anyone holding it can create a key on their behalf. Tell them to open the link in the same e-mail: it signs them in at https://parsers.vc/account/ and, if the account has no keys yet, one is minted and shown there ready to copy. They paste it to you. This is also the only branch that works for an assistant whose fetcher refuses to open URLs it composed itself — it needs no API call from the assistant at all. You can poll GET https://parsers.vc/api/v1/auth/status?request_id=… to see when they have done it.

Using the API

GET https://vcapi.parsers.vc/v2/funds?$top=25&$filter=Country in ('Germany')
X-Api-Key: pk_live_…

Collections take OData style parameters: $top, $skip, $filter, $select, $expand, $orderby, $count. The main collections are /v2/funds, /v2/startups, /v2/persons, /v2/news, plus /v2/startups/fundingrounds and the search endpoints /v2/funds/search and /v2/startups/search.

One credit buys one record, not one request. A page of a hundred startups costs a hundred; a funding round costs half a credit, a news item a quarter; searching costs one flat whatever it returns. Full table: https://parsers.vc/api_page/pricing/, or GET /v2/pricing for the same thing as JSON. Two endpoints exist specifically so you do not have to spend records finding out what is there.

Categories — what is out there

GET /v2/categories                       # the axes: industry, country, stage, investor_type, ...
GET /v2/categories/industry?entity=startups&country=Germany
GET /v2/categories/facets?entity=startups&dimensions=industry,stage&country=Germany
GET /v2/categories/industry/fintech/startups?country=Germany&stage=series-a

Any dimension can be passed as a query parameter to narrow the others, so the second line means industries among German companies, with counts. Start at /v2/categories rather than guessing at names — it returns every valid value for the closed dimensions.

Signals — what changed

GET /v2/signals/types
GET /v2/signals?types=round.recorded&industry=fintech&minAmount=1000000&order=asc

A cursor-paged change feed: rounds recorded, investors joining them, portfolios and valuations updated, companies appearing. Each signal has two dates — occurredAt, when it happened in the market, and detectedAt, when we recorded it. The feed is paged by detectedAt, because venture news arrives weeks late and out of order; poll on the market date and you will miss things. Keep nextCursor between runs and deduplicate on id, which is stable.

Full reference for a person: https://parsers.vc/api_page/reference/.

Machine readable description of everything on this page, including the registration endpoints and the error shapes: https://parsers.vc/api/v1/openapi.json (OpenAPI 3.0).

Limits

500 credits a month are free, which is 500 company records or 500 searches. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset and X-Credits-Charged, so you can see both what the last call cost and what is left. You can also call GET https://parsers.vc/api/v1/usage with the same X-Api-Key header.

Ask for what you need and no more: $top is what you are paying for. Free keys are capped at 100 records a page, paid plans at 500 to 5,000.

When the allowance runs out the API answers 429 with a body like this:

{
  "error": { "code": "credits_exhausted", "message": "..." },
  "credits": { "limit": 500, "remaining": 12, "required": 100, "plan": "free",
               "reset": "2026-10-01T00:00:00Z" },
  "actions": [
    { "type": "purchase_credits", "url": "https://parsers.vc/api_page/pricing/" },
    { "type": "reduce_page_size", "parameter": "$top" },
    { "type": "wait", "until": "2026-10-01T00:00:00Z" }
  ]
}

That is not a permissions problem. required is what the request needed and remaining is what there was, so if the difference is a page size, ask for fewer rows and carry on. If it is not, the allowance is spent: tell the person, show them the purchase_credits link, and stop — retrying will not help.

Handling the key

  • Treat it as a secret. Do not print it into shared logs, commits or chat transcripts you do not control.
  • It belongs to the person, not to you. They can revoke it at any time at https://parsers.vc/account/.
  • Do not register more than one account for the same person to get around the monthly allowance.

If something goes wrong

401 on register/verifyWrong or expired code. Start again at step 2.
410The request expired or was already used. Start again at step 2.
429 on registerToo many attempts from this address or network. Wait an hour.
401 on the data APIThe key was revoked or has expired. Ask for a new one.
429 on the data APIMonthly allowance spent. See Limits above.

Questions from a human: [email protected].