/

Get started

Pagination

Lists return a page and a next_cursor. Pass it back as cursor for the next page; it is null on the last one. Keep the other parameters the same.

Response200
{
  "firms": [
    "…"
  ],
  "next_cursor": "2~sequoia-capital"
}

Page size and depth

limit sets the page size, up to 25 on Free and 100 on Pro and Team. Each plan also has a number of pages per query: 2 on Free, 40 on paid plans. Past it the API answers 429 with depth_limit, so narrow the query with filters instead of reading the whole catalog.

Walking every page

async function* pages(path) {
  let cursor = null;
  do {
    const url = new URL(`https://api.vcinfo.io${path}`);
    if (cursor) url.searchParams.set("cursor", cursor);
    const res = await fetch(url, { headers: { "X-API-Key": process.env.VCINFO_KEY } });
    if (!res.ok) throw new Error((await res.json()).error.code);
    const page = await res.json();
    yield page;
    cursor = page.next_cursor;
  } while (cursor);
}

for await (const page of pages("/v1/firms?country=Germany&stage=seed")) {
  for (const firm of page.firms) console.log(firm.name);
}

Paged lists: /v1/firms, /v1/companies, /v1/firms/{ref}/portfolio, /v1/firms/{ref}/events, /v1/events and the /news lists. The rest return one page, sized by limit.