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/verify | Wrong or expired code. Start again at step 2. |
410 | The request expired or was already used. Start again at step 2. |
429 on register | Too many attempts from this address or network. Wait an hour. |
401 on the data API | The key was revoked or has expired. Ask for a new one. |
429 on the data API | Monthly allowance spent. See Limits above. |
Questions from a human: [email protected].