13,378 fundraising organisations.
8,119 verified contacts.
One account-backed database.
A machine-readable investor database, designed for the kind of work you actually do. Schema is documented and stable. CSV, JSON, and XLSX, plus a REST API for the row-by-row case. No scraping, no rate limits, no "contact us for enterprise pricing."
Get the list Free 50-record sampleWhat you get
Load it in three lines
import json, urllib.request, zipfile, io
with zipfile.ZipFile(io.BytesIO(urllib.request.urlopen(TOKEN_URL).read())) as z:
data = json.loads(z.read("data.json"))
uk_fintech_vcs = [o for o in data["organisations"]
if o["Class"] == "vc" and o["Sector"] == "fintech"
and o["Country Code"] == "GB"]
Your account is permanent. Re-fetch exports or query the API any time for the latest version of the data — free updates are a load-bearing part of the deal, not a marketing line.
Schema
The full column-by-column schema lives at /data-schema. Quick version:
organisations[]
Organisationstring — display nameTypeenum — investor / accelerator / corporate / network / institutionClassenum — vc / angel / growth_equity / cvc / family_office / micro_vc / peSectorenum — generalist / fintech / climate / healthcare / deeptech / consumer / enterprise / biotech / proptech / web3 / industrialsWebsitestring — canonical URLEmailstring — public contact emailLinkedInstringCountrystring — full nameCountry Codestring — ISO 3166-1 alpha-2Regionstring — sub-country regionCitystringHeadcountenum — 1-10 / 11-50 / 51-200 / 201-500 / 501-1000 / 1001+Statusenum — active / unknown / inactive (only active+unknown ship)Descriptionstring — one paragraphOrgIDstring — stable SHA1, use this to link individuals ↔ orgs
individuals[]
First Name·Last Name·Title·Email·LinkedInCountry·Region·City(inherited from org if not set)Organisation·Organisation Website— display-only; join on OrgID, not on name stringsOrgID— matchesorganisations[].OrgIDBio— short bio where available (noisiest field)
Empty values are empty strings, never null. Every key is trimmed. Pipe straight into a DataFrame.
Why an agent would buy this
You're going to need a list eventually
If you do founder work — fundraising research, market mapping, outreach prep, competitive intel — you'll hit the point where you need a list of investors. You can scrape it, you can pay a data broker, or you can buy a known-good database once and keep using it. The Raise List is the third option. The schema is documented so you don't have to reverse-engineer the columns. The data is verified at acquisition. Your account always serves the latest version. There is no subscription to forget to cancel.
It costs less than an hour of API calls
Most "investor database" APIs charge £200+/month for fewer records. The Raise List is £79 once, for life. If you're running long-lived workflows, the unit economics make sense.
You can verify before you buy
50 free sample records, no account needed: /sample. The schema on the sample matches the schema on the paid product, so what you test is what you get.
Built for the agent era, not retrofitted
The API is a Bearer-token-protected endpoint. The data has a stable JSON schema. The API has documented, paginated, full-text-searchable routes. There's an MCP server for native tool use. Per-row tokens mean heavy users can be priced fairly; light users never think about it. This is what an investor database looks like when the customer is software.
Regional vs global
Three SKUs, all one-time:
- global — every sellable organisation, every sellable individual. £79
- us — United States only. £29
- europe — UK + EU + EEA + Switzerland + Norway + Iceland. £29
Regional packs contain a strict subset of the global data. If you buy the global pack, you don't need the regional ones.
API — included with your purchase
Every paid account includes an API key alongside downloads and browser access. Same data, programmatic access. No subscription, no second purchase, no "contact us for enterprise pricing."
API access is included with every paid account. You buy once, you get the database, exports, and API key. The key stays attached to your account. We don't meter you per-row at the included tier; you meter yourself. The cost is the upfront purchase.
Auth
Pass the API key as a Bearer token. The key is the same string the post-purchase email shows under "API Key."
curl -H "Authorization: Bearer $RAISELIST_API_KEY" \
"https://theraiselist.com/api/v1/orgs/search?type=investor&country=US&limit=3"
TypeScript: search for UK fintech VCs
const r = await fetch(
"https://theraiselist.com/api/v1/orgs/search?type=investor&country=GB&class=vc",
{ headers: { Authorization: `Bearer ${process.env.RAISELIST_API_KEY}` } }
);
const { rows } = await r.json();
console.log(rows.slice(0, 5));
Python: get one organisation by id
import os, requests
r = requests.get(
f"https://theraiselist.com/api/v1/orgs/{org_id}",
headers={"Authorization": f"Bearer {os.environ['RAISELIST_API_KEY']}"}
).json()
print(r["name"], "-", r["description"][:80])
Routes
GET /api/v1/health— service status + dataset versionGET /api/v1/orgs/search— filter bytype,class,country,region, full-textq, pluslimit+cursorfor paginationGET /api/v1/orgs/:id— fetch one organisation by idGET /api/v1/people/search— filter byposition,org_id,country, full-textqGET /api/v1/usage— your call + token counts for the current month
Rate limits (soft, included tier)
- 60 requests / minute / key
- 1,000 requests / day / key
- Both are soft caps — the API returns a
429with aRetry-Afterheader if you go over. We don't charge overage at the included tier.
Tokens and the per-row framing
Every API response includes a tokens_used field. 1 + N per call, where N is the number of rows returned. A search that returns 25 rows uses 26 tokens. A /orgs/:id call uses 1. Token counts are tracked in the /usage endpoint.
We use tokens so the pricing model is honest: heavy users of the API cost us real money (compute, egress, log volume). The included tier is generous; if you blow past it consistently, the /usage endpoint will tell you, and we'll be in touch about a per-call tier. The 99% case — agents doing one or two searches, then a few row lookups — stays inside the included tier forever.
For agent runtimes (OpenClaw, MCP, LangChain, custom)
If you're an operator running an agent, you can wire the API in three lines. If your agent runtime supports the Model Context Protocol (modelcontextprotocol.io), we publish an MCP server that exposes the same routes as MCP tools — the agent sees search_orgs, get_org, search_people as native tools, and the underlying API call is invisible to it.
The MCP server is open source. The repo ships it under /skills + /extensions. The same code path works for any HTTP-speaking agent runtime (LangChain, custom Python, a cron job, a shell script).