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 APICover image: Using the Recent Funding API
Published: .
Updated: .
Data snapshot: .
Tags: apideveloperstutorial.
On this page
  1. Endpoints
  2. First request
  3. Filtering and sorting
  4. Paging
  5. One company, every round
  6. Rounds and acquisitions
  7. Errors
  8. Using the data

The Recent Funding API is a read-only JSON API of recently funded startups, their funding rounds (each amount with its source URL), investors, founders and acquisitions. Every request needs a free API key sent as Authorization: Bearer <key>; it takes just an email and allows 50 requests a day.

The full reference is the API documentation, generated from the OpenAPI spec; agents can read it as Markdown at /docs.md or start from /llms.txt.

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/acquisitionsWho bought whom, when, and the price when a source states it
GET /api/v1/statsCounts by stage, industry and source

Investors, founders, categories, accelerators and the market map have endpoints too (docs). Everything lives under https://recentfunding.com, CORS is open, and successful responses can be cached for 60 seconds.

First request

Keep the key in an environment variable:

export RF_KEY=rf_live_…
curl -H "Authorization: Bearer $RF_KEY" "https://recentfunding.com/api/v1/companies?accelerator=yc&sort=raise&limit=1"

The response on October 9, 2026 (some fields left out):

{
  "companies": [
    {
      "slug": "river-ai",
      "name": "River AI",
      "stage": "series-a",
      "industry": "ai",
      "amount_usd": "1100000000.00",
      "announced_at": "2026-08-11T00:00:00.000Z",
      "raise_source_url": "https://techcrunch.com/2026/08/11/general-catalyst-leads-1-1b-round-into-2-month-old-river-ai/",
      "raise_provider": "agent-review",
      "investors": ["General Catalyst", "Temasek", "Y Combinator", "…"]
    }
  ],
  "count": 1,
  "next_offset": 1
}

That is River AI's $1.1B Series A. amount_usd is a decimal string, so large values keep their precision; raise_source_url is where the amount came from; a non-null next_offset means more results. Every response reports what is left of the day's quota in X-RateLimit-Remaining.

Filtering and sorting

ParameterExampleMeaning
stageseedCompany stage
industryai-agentsIndustry slug (listed by /api/v1/stats)
cryptotrueOnly crypto companies, or false to exclude them
acceleratorspeedrunBacked by an accelerator; any matches all
qprediction marketSearch over name, description, sector and investors
min_raise5000000Latest round of at least this many USD
sortraisenewest (default), oldest, raise, announced or name
curl -H "Authorization: Bearer $RF_KEY" "https://recentfunding.com/api/v1/companies?industry=ai-agents&min_raise=5000000&sort=raise"

Paging

Pages hold up to 2000 companies (limit, default 100). Request again with offset set to the previous next_offset until it is null:

const BASE = "https://recentfunding.com";
const headers = { Authorization: `Bearer ${process.env.RF_KEY}` };

async function allCompanies(filters = {}) {
  const out = [];
  for (let offset = 0; offset !== null; ) {
    const params = new URLSearchParams({ ...filters, sort: "oldest", limit: "500", offset: String(offset) });
    const res = await fetch(`${BASE}/api/v1/companies?${params}`, { headers });
    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;
}

sort=oldest puts newly found companies at the end, so they don't shift results across page boundaries during an export.

One company, every round

Company objects carry only the latest round. The slug endpoint returns {"company": {...}, "rounds": [...]}, each round with stage, amount_usd (null when unknown), announced_at and its own source_url:

curl -H "Authorization: Bearer $RF_KEY" "https://recentfunding.com/api/v1/companies/river-ai"

Rounds and acquisitions

/api/v1/rounds lists rounds with an amount, newest first, and also takes stage, crypto, limit (up to 500) and offset. /api/v1/acquisitions lists deals newest first; scope=startups keeps startup acquisitions, and a price_usd always comes with the price_source_url that states it. Acquisitions never appear as rounds. The same list is the acquisitions page.

curl -H "Authorization: Bearer $RF_KEY" "https://recentfunding.com/api/v1/rounds?since=2026-10-01&min_amount=10000000"
curl -H "Authorization: Bearer $RF_KEY" "https://recentfunding.com/api/v1/acquisitions?scope=startups&since=2026-10-01&limit=20"

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"}}
CodeStatusMeaning
invalid_parameter400A value is out of range, malformed or repeated
unknown_parameter400A parameter the API doesn't know, such as the typo stag
api_key_required401No key sent; the body says how to get one
invalid_api_key401Unknown or revoked key
not_found404Unknown slug or path
method_not_allowed405Anything other than GET, HEAD or OPTIONS
rate_limited429The day's 50 requests are used; Retry-After says when it resets (midnight UTC)
unavailable503Database temporarily unavailable; retry with backoff

Using the data

When you show an amount, link it to raise_source_url (or source_url on rounds), as Recent Funding does; how we source and verify funding data explains each provider. Cache responses for their Cache-Control lifetime, fetch the whole dataset at most a few times a day, and back off on 429 and 503 (rate limits).

Top raises, every week

The week's top funded startups and market insights, in your inbox every Monday.

Unsubscribe anytime · privacy