RECENT FUNDING
  1. Recent Funding
  2. Blog
  3. Using the Recent Funding API

Using the Recent Funding API

A hands-on guide to the Recent Funding API. Filter recently funded startups, page through results, pull recent rounds with their sources, and handle errors, with curl and JavaScript examples.

Cover image: Using the Recent Funding API
Published
Data snapshot
Tagsapideveloperstutorial

Recent Funding's data is available as a read-only JSON API. You don't need a key or an account. This guide walks through the endpoints with real requests. The API reference and the OpenAPI spec cover every parameter and field.

Endpoints

EndpointReturns
GET /api/v1/companiesCompanies, filtered and sorted
GET /api/v1/companies/{slug}One company and all its funding rounds
GET /api/v1/roundsRecent rounds with an amount, newest first
GET /api/v1/statsCounts by stage, industry, and source

All endpoints live under https://recentfunding.com. Responses are JSON. CORS is open, so you can call the API from a browser. Successful responses can be cached for 60 seconds, or 5 minutes for stats.

Your first request

curl "https://recentfunding.com/api/v1/companies?accelerator=yc&sort=raise&limit=1"

The response looks like this (some fields and the long source URL are shortened):

{
  "companies": [
    {
      "slug": "shepherd",
      "name": "Shepherd",
      "stage": "pre-seed",
      "industry": "infra-devtools",
      "crypto": false,
      "amount_usd": "42000000.00",
      "announced_at": "2026-08-07T00:00:00.000Z",
      "raise_source_url": "https://news.google.com/rss/articles/…",
      "raise_publisher": "PR Newswire",
      "raise_provider": "google-news",
      "investors": ["Y Combinator"]
    }
  ],
  "count": 1,
  "next_offset": 1
}

That record is Shepherd's $42M round. Three details are worth noting:

Filtering and sorting

/api/v1/companies takes these filters, and you can combine them:

ParameterExampleMeaning
stageseedCompany stage
industryai-agentsIndustry slug (see /api/v1/stats for the list)
cryptotrueOnly crypto companies, or false to exclude them
acceleratorspeedrunBacked by an accelerator; any matches all of them
qprediction marketText search over name, description, sector, and investors
min_raise5000000Latest round of at least this many USD
sortraisenewest (default), oldest, raise, announced, or name

For example, AI agent companies whose latest round was 5 million USD or more, largest first:

curl "https://recentfunding.com/api/v1/companies?industry=ai-agents&min_raise=5000000&sort=raise"

Paging through everything

Pages hold up to 2000 companies (limit, default 100). Keep requesting with offset set to the previous next_offset until it comes back null:

const BASE = "https://recentfunding.com";

async function allCompanies(filters = {}) {
  const out = [];
  let offset = 0;
  while (offset !== null) {
    const params = new URLSearchParams({ ...filters, limit: "500", offset: String(offset) });
    const res = await fetch(`${BASE}/api/v1/companies?${params}`);
    const body = await res.json();
    if (!res.ok) throw new Error(`${body.error.code}: ${body.error.message}`);
    out.push(...body.companies);
    offset = body.next_offset;
  }
  return out;
}

const crypto = await allCompanies({ crypto: "true" });
console.log(crypto.length, "crypto companies");

Offsets are positions in a list that grows as Recent Funding finds new companies, and the default newest sort puts new ones first. If you page slowly, a company can shift across a page boundary. For a consistent export, page quickly, or sort with sort=oldest so that new companies land at the end.

One company, every round

Company objects carry only the latest round. To get the full history, fetch the company by its slug:

curl "https://recentfunding.com/api/v1/companies/shepherd"

This returns {"company": {...}, "rounds": [...]}. Each round has stage, amount_usd (null when unknown), announced_at, and its own source_url, source_publisher, and source_provider. An unknown slug returns a 404.

A feed of recent rounds

/api/v1/rounds lists rounds that have an amount, newest first. Use it for a "who raised this week" digest:

curl "https://recentfunding.com/api/v1/rounds?since=2026-09-18&min_amount=10000000"

It also accepts stage (the round's own stage), crypto, limit (up to 500), and offset. Each round names the company (slug, name) and lists the investors linked to that round.

Stats

curl "https://recentfunding.com/api/v1/stats"

This returns total, crypto, and with-amount counts, plus by_stage, by_industry, and by_source arrays of {key, count}, largest first. They are computed from the same rows /api/v1/companies returns, so the numbers agree. Use by_industry to build a filter menu.

Errors

Every error has the same shape and a matching HTTP status:

{
  "error": {
    "status": 400,
    "code": "invalid_parameter",
    "message": "\"limit\" must be an integer from 1 to 2000.",
    "param": "limit"
  }
}

The possible codes are:

Showing amounts responsibly

Amounts come from source listings, news headlines, company websites, and manual review. The raise_provider field (or source_provider on rounds) says which. Some sources call a round seed when others would not, and a few amounts are later corrected. When you show a figure, link it to raise_source_url, as Recent Funding does:

const amount = c => c.amount_usd && c.raise_source_url
  ? `<a href="${c.raise_source_url}">$${(Number(c.amount_usd) / 1e6).toFixed(1)}M</a>`
  : "undisclosed";

(Escape the values if you build HTML from them.) How Recent Funding sources and verifies funding data explains each provider and the review process.

Fair use

There is no key and no hard rate limit today. Please keep automated traffic modest: cache responses for at least as long as their Cache-Control header says, and fetch the whole dataset at most a few times a day. Any future limits will be documented in the API docs.