# Funding Alert Configurations API
Source: https://docs.tryfundable.ai/api-reference/alerts/configurations
openapi.json GET /alerts/configurations
List the authenticated user's funding alert configurations: filters, frequency, and descriptions.
**Plan requirement:** Available on Pro+ and Enterprise plans. This
endpoint does not consume credits.
# Funding Alerts API
Source: https://docs.tryfundable.ai/api-reference/alerts/list
openapi.json GET /alerts
Retrieve saved funding alert data with matching deals, reasoning, and source articles in a date range.
**Plan requirement:** Available on Pro+ and Enterprise plans. This
endpoint does not consume credits.
# Startup Funding History
Source: https://docs.tryfundable.ai/api-reference/companies/deals
openapi.json GET /company/deals
Retrieve a company's complete funding history and source articles by any identifier, paginated.
# Startup by ID
Source: https://docs.tryfundable.ai/api-reference/companies/get
openapi.json GET /company
Retrieve company data, the latest funding round, and its source articles by UUID, domain, LinkedIn, or Crunchbase.
# Startup Search API
Source: https://docs.tryfundable.ai/api-reference/companies/list
openapi.json POST /companies
Retrieve companies and latest-deal source articles with advanced filtering, pagination, sorting, and semantic search.
Filtering by location, industry, or round type? Use **exact permalinks** — a wrong
value for `locations`, `industries`, or `super_categories` returns zero results
with no error. Resolve them via [`/location/search`](/api-reference/locations/search)
and [`/industry/search`](/api-reference/industries/search) first. See
[Filtering & Permalinks](/api-reference/filtering).
# Startup Lookup API
Source: https://docs.tryfundable.ai/api-reference/companies/search
openapi.json GET /company/search
Look up a company by name, domain, LinkedIn, or Crunchbase with fuzzy matching.
# Funding Round by ID
Source: https://docs.tryfundable.ai/api-reference/deals/get
openapi.json GET /deals/{id}
Retrieve full details and source articles for a venture capital funding round by its unique ID.
# Investors by Funding Round ID
Source: https://docs.tryfundable.ai/api-reference/deals/investors
openapi.json GET /deals/{id}/investors
Retrieve the full investor lineup for a funding round: lead status, partners, angels, and links.
# Funding Round Search API
Source: https://docs.tryfundable.ai/api-reference/deals/list
openapi.json POST /deals
Retrieve venture capital deals and source articles with advanced filtering, pagination, and sorting.
Filtering by location, industry, or round type? Use **exact permalinks** — a wrong
value for `locations`, `industries`, or `super_categories` returns zero results
with no error. Resolve them via [`/location/search`](/api-reference/locations/search)
and [`/industry/search`](/api-reference/industries/search) first. See
[Filtering & Permalinks](/api-reference/filtering).
# Filter Funding Rounds by Industry and Location
Source: https://docs.tryfundable.ai/api-reference/filtering
How to filter by location, industry, and round type without getting empty results
Most "why is my query returning nothing?" problems come from one mistake: filtering
by a **display name** instead of the **canonical permalink** the API expects.
**Locations, industries, and super categories are matched by exact permalink — not
by the name you'd type in a search box.** A wrong permalink is silently ignored:
the filter is dropped and you get **zero or unrelated results with no error**.
Always resolve the permalink first.
| You type | What the API actually wants |
| ----------------- | ------------------------------------------------------------------------------------------- |
| `"San Francisco"` | `"san-francisco-california"` |
| `"fintech"` | `"fintech-e067"` |
| `"AI"` | `"artificial-intelligence"` (industry) or `"artificial-intelligence-e551"` (super category) |
| `"Series A"` | `"SERIES_A"` |
## Resolve, then query
For **locations** and **industries**, never hand-write the permalink — look it up.
Both lookup endpoints are **free (0 credits)** and use fuzzy matching, so a rough
name is fine.
Call the relevant search endpoint with a plain-English name.
```bash Locations theme={null}
curl "https://www.tryfundable.ai/api/v1/location/search?name=san francisco" \
-H "Authorization: Bearer YOUR_API_KEY"
```
```json Response theme={null}
{
"success": true,
"data": {
"locations": [
{ "permalink": "san-francisco-california", "name": "San Francisco", "location_type": "CITY" },
{ "permalink": "san-francisco-bay-area", "name": "San Francisco Bay Area", "location_type": "REGION" },
{ "permalink": "california", "name": "California", "location_type": "STATE" }
]
}
}
```
Pick the row at the level you actually want — a **CITY**, **STATE**, **REGION**,
or **COUNTRY** are all distinct permalinks. Industry search works the same way
via [`GET /industry/search`](/api-reference/industries/search) and returns an
`industry_type` of `INDUSTRY` or `SUPER_CATEGORY`.
Paste the exact `permalink` value into your query.
```json POST /deals theme={null}
{
"company": {
"locations": ["san-francisco-california"],
"industries": ["fintech-e067"]
},
"deal": {
"financing_types": [{ "type": "SERIES_A" }]
}
}
```
## Permalink format
Permalinks are lowercase, kebab-case slugs. Many carry a short **hex disambiguator
suffix** (`fintech-e067`, `artificial-intelligence-e551`) that distinguishes
duplicate names — it is part of the value and must be included **verbatim**.
Don't try to construct a permalink by hand (e.g. guessing `"fintech"` →
`"fintech-e067"`). Always copy it from `/industry/search` or `/location/search`.
### Industry vs. super category
`industries` are specific (e.g. `machine-learning`); `super_categories` are broad
groupings that **automatically include their related industries** (e.g.
`artificial-intelligence-e551` pulls in many AI sub-industries). Use a super
category when you want wide coverage, an industry when you want precision. Both come
from `/industry/search` — check the `industry_type` field to tell them apart.
## Round / financing types
Round types are the exception: there is **no lookup endpoint** because the set is a
fixed enum. Pass them as objects under `deal.financing_types`, using the exact
canonical value — **not** the human label.
Unlike locations and industries, an invalid `financing_types` value **does** return
a `422` error (e.g. `Invalid financing type(s): series-a`). So you'll know
immediately — but you still have to use the canonical form below.
| Round (human) | Canonical value | Round (human) | Canonical value |
| --------------------------- | ------------------ | --------------------- | ----------------------- |
| Seed | `SEED` | Series A–M | `SERIES_A` … `SERIES_M` |
| SAFE | `SAFE` | Convertible Note | `CONVERTIBLE_NOTE` |
| Equity | `EQUITY` | Preferred | `PREFERRED` |
| Secondary Market | `SECONDARY_MARKET` | Debt Financing | `DEBT_FINANCING` |
| Grant | `GRANT` | Non-Equity Assistance | `NON_EQUITY_ASSISTANCE` |
| Crowdfunding | `CROWDFUNDING` | Initial Coin Offering | `INITIAL_COIN_OFFERING` |
| Funding Round (unspecified) | `FUNDING_ROUND` | | |
Pre-rounds and extensions are modifiers on the same value, not separate types:
```json theme={null}
{
"deal": {
"financing_types": [
{ "type": "SEED", "pre": true }, // Pre-Seed
{ "type": "SERIES_A" }, // Series A
{ "type": "SERIES_B", "extension": true } // Series B extension
]
}
}
```
## Common mistakes
| Mistake | Result | Fix |
| ---------------------------------------------------------- | ------------------------------ | ---------------------------------------------------------------- |
| `locations: ["San Francisco"]` | Silent zero results | Resolve via `/location/search` → `"san-francisco-california"` |
| `industries: ["fintech"]` | Silent zero results | Resolve via `/industry/search` → `"fintech-e067"` |
| Dropping the hex suffix (`"fintech"` for `"fintech-e067"`) | Silent zero results | Copy the full permalink verbatim |
| Using an industry where you meant a super category | Narrower results than expected | Check `industry_type`; use `super_categories` for broad coverage |
| `financing_types: ["Series A"]` | `422` error | Use `[{ "type": "SERIES_A" }]` |
The **Alerts** API currently accepts round types as human-readable strings (e.g.
`["Series A"]`) rather than the `SERIES_A` enum used by `/deals` and `/companies`.
This is a known inconsistency — follow the format shown in each endpoint's own
reference.
# Industry Lookup API
Source: https://docs.tryfundable.ai/api-reference/industries/search
openapi.json GET /industry/search
Look up industries and super categories by name with fuzzy matching. Free, 0 credits.
# Fundable API Reference
Source: https://docs.tryfundable.ai/api-reference/introduction
Full REST reference for the Fundable API: deals, companies, investors, and people endpoints, with parameters and examples.
## Base URL
All API requests use the following base URL:
```
https://www.tryfundable.ai/api/v1
```
The canonical OpenAPI document is available at
[`/openapi.json`](/openapi.json).
## Authentication
All endpoints require Bearer token authentication. See the [Authentication](/authentication) page for details.
## Endpoints
Choose the collection endpoint based on the entity the response should contain.
`POST /companies` is the default for most company-sourcing workflows. Use
`POST /deals` when the result should be funding rounds or when round filters must
match historical deals rather than only each company's latest deal. Use
`POST /investors` for firms and `POST /people` for individuals.
### Deals
* **POST /deals** -- Search rounds across complete company histories. Use it for round-level analysis where filters must match any historical deal. Deal records include full round details and reference related entities by ID.
* **GET /deals/** -- Retrieve full details and related source articles for a single known funding round by UUID.
* **GET /deals//investors** -- Resolve a deal's investor IDs into the full lineup, including firms, associated partners, angel investors, lead status, and profile links.
### Companies
* **POST /companies** -- Default endpoint for company discovery. It returns company metadata and the full latest deal. `latest_deal` filters apply only to the most recent round; investor filters can match across all rounds.
* **GET /company** -- Get full company details and the latest funding round by UUID, domain, LinkedIn, or Crunchbase. Pass a known domain or LinkedIn URL directly instead of searching first.
* **GET /company/deals** -- Retrieve a company's complete funding history, including related source articles for every deal, by any identifier.
* **GET /company/search** -- Resolve a fuzzy company name or uncertain identifier. Skip it when a reliable domain or LinkedIn URL is already available.
### Investors
* **POST /investors** -- Discover investor firms. Investment filters identify qualifying portfolio companies and deals, then return participating firms. `filtered_deal_count` and `filtered_lead_count` count only deals matching those filters.
* **GET /investor** -- Get an investor firm's full profile, statistics, and portfolio summary by UUID, domain, LinkedIn, or Crunchbase. Pass a known domain or LinkedIn URL directly.
* **GET /investor/deals** -- Retrieve an investor's complete deal history, including related source articles for every deal, by any identifier.
* **GET /investor/search** -- Resolve a fuzzy firm name or uncertain identifier. Skip it when a reliable domain or LinkedIn URL is already available.
### People
* **POST /people** -- Discover individuals. Company mode returns founders or employees and can filter on the current employer's latest round without returning that funding data. Investor mode returns angels or lead partners attached to firms.
* **GET /person** -- Get full person detail by UUID, LinkedIn, Crunchbase, or Twitter. Pass a known LinkedIn URL directly instead of searching first.
* **GET /person/email** -- Unlock a person's verified email by UUID, LinkedIn, Crunchbase, or Twitter. Available on non-trial Pro+ and Enterprise plans. New unlocks consume 5 credits; previously unlocked emails consume 0 credits.
* **GET /person/deals** -- Retrieve every deal a person has participated in as an investor (angel plus lead/firm deals), including related source articles.
* **GET /person/search** -- Resolve a fuzzy person name or uncertain identifier across both investors and non-investors. Skip it when a reliable LinkedIn URL is already available.
### Filters
* **GET /industry/search** -- Look up industries and super categories by name with fuzzy matching and relevance scoring; optionally filter by type (`INDUSTRY` or `SUPER_CATEGORY`).
* **GET /location/search** -- Look up locations by name with fuzzy matching and relevance scoring; optionally filter by type (`CITY`, `STATE`, `REGION`, or `COUNTRY`).
`locations`, `industries`, and `super_categories` filters must use **exact
permalinks** — a wrong value is silently ignored and returns zero results. Always
resolve labels via the search endpoints above first. See
[Filtering & Permalinks](/api-reference/filtering) for the full workflow and the
round-type enum values. Use semantic `search_query` only when the industry taxonomy
cannot express the requested niche; semantic results are capped at 150 matches.
See [Endpoint and Filter Selection](/guides/endpoint-and-filter-selection) for complete
route-selection rules, filter guidance, and common multi-endpoint workflows.
### Alerts
* **GET /alerts** -- Retrieve saved alert data with all matching deals in a date range (up to 10 alerts per request). Available on Pro+ and Enterprise plans.
* **GET /alerts/configurations** -- List the authenticated user's alert configurations (filters, frequency, descriptions). Available on Pro+ and Enterprise plans.
Both alert endpoints return `credits_used: 0`; they do not consume API credits.
## Error Handling
All endpoints return consistent error responses:
| Status Code | Description |
| ----------- | -------------------------------------------------------- |
| **400** | Bad request (invalid parameters) |
| **401** | Unauthorized (missing or invalid API key) |
| **402** | Insufficient credits |
| **422** | Validation error (unknown parameter, invalid enum value) |
| **429** | Rate limit exceeded |
| **500** | Internal server error |
# Investor Portfolio by ID
Source: https://docs.tryfundable.ai/api-reference/investors/deals
openapi.json GET /investor/deals
Retrieve an investor's complete deal history and source articles by any identifier, paginated.
# Investor by ID
Source: https://docs.tryfundable.ai/api-reference/investors/get
openapi.json GET /investor
Retrieve an investor's full profile, stats, and portfolio summary by any identifier.
# Investor Search API
Source: https://docs.tryfundable.ai/api-reference/investors/list
openapi.json POST /investors
Retrieve a paginated list of investors with optional filtering.
Filtering by location, industry, or round type? Use **exact permalinks** — a wrong
value for `locations`, `industries`, or `super_categories` returns zero results
with no error. Resolve them via [`/location/search`](/api-reference/locations/search)
and [`/industry/search`](/api-reference/industries/search) first. See
[Filtering & Permalinks](/api-reference/filtering).
# Investor Lookup API
Source: https://docs.tryfundable.ai/api-reference/investors/search
openapi.json GET /investor/search
Look up a VC firm or investor by name, domain, LinkedIn, or Crunchbase.
# Location Lookup API
Source: https://docs.tryfundable.ai/api-reference/locations/search
openapi.json GET /location/search
Look up cities, states, regions, and countries by name with fuzzy matching. Free, 0 credits.
# Person Investments by ID
Source: https://docs.tryfundable.ai/api-reference/people/deals
openapi.json GET /person/deals
Retrieve every deal a person joined as an angel or lead partner, including source articles, paginated.
# Person Email by ID
Source: https://docs.tryfundable.ai/api-reference/people/email
openapi.json GET /person/email
Unlock a person's verified email by UUID, LinkedIn, Crunchbase, or Twitter identifier.
**Plan requirement:** Available on non-trial Pro+ and Enterprise plans.
A new email unlock costs **5 credits**; requesting an email the same user has
already unlocked costs **0 credits**.
# Person by ID
Source: https://docs.tryfundable.ai/api-reference/people/get
openapi.json GET /person
Retrieve full person detail including employment and education history by any identifier.
# People Search API
Source: https://docs.tryfundable.ai/api-reference/people/list
openapi.json POST /people
Retrieve people with advanced filtering, pagination, sorting, and optional AI-powered semantic search.
Filtering by location, industry, or round type? Use **exact permalinks** — a wrong
value for `locations`, `industries`, or `super_categories` returns zero results
with no error. Resolve them via [`/location/search`](/api-reference/locations/search)
and [`/industry/search`](/api-reference/industries/search) first. See
[Filtering & Permalinks](/api-reference/filtering).
# Person Lookup API
Source: https://docs.tryfundable.ai/api-reference/people/search
openapi.json GET /person/search
Look up founders, executives, and investors by name, LinkedIn, Crunchbase, or Twitter.
# Fundable API Authentication and Keys
Source: https://docs.tryfundable.ai/authentication
Authenticate the Fundable API with a Bearer token. Get an API key and start with free credits.
## API Key Authentication
All Fundable API requests require authentication via a Bearer token in the `Authorization` header.
```bash theme={null}
Authorization: Bearer vg_xxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```
### Getting Your API Key
API keys are available through your Fundable account. Get your key [here](https://www.tryfundable.ai/api-access/) -- your first 200 credits are free. You can purchase credits directly or through a Fundable subscription.
### Key Format
API keys follow the format: `vg_[12_hex_chars]_[32_base64url_chars]`
### Usage
Include your API key as a Bearer token in every request:
```bash theme={null}
curl -X GET "https://www.tryfundable.ai/api/v1/deals" \
-H "Authorization: Bearer YOUR_API_KEY"
```
# Fundable MCP: Private-Market Research in Your AI Assistant
Source: https://docs.tryfundable.ai/fundable-mcp
Connect Fundable to an MCP-compatible AI assistant to source companies, research investors, map markets, and build prospect lists with private-market data.
Fundable MCP lets an AI assistant research private companies, funding rounds,
investors, founders, and verified contact information using Fundable's private-market
dataset. Describe the outcome you want in plain language; the assistant can explore
the dataset, run read-only queries, and—with your approval—export results or unlock
emails.
Turn an investment thesis or ideal customer profile into a qualified company list.
Analyze funding activity, competitive landscapes, investors, and syndicates.
## What you can do
### Venture and growth-equity sourcing
Turn an investment thesis into a targeted sourcing pipeline using sector, geography,
stage, funding, investor, and company-maturity signals.
```text Example prompt theme={null}
Find private companies that match this investment thesis: [sector or business model],
[target geography], [funding stage or company maturity], and [other investment
criteria]. Explain why each company fits, summarize its funding history, identify its
founders, and retrieve available contact information.
```
### GTM lead generation and sales prospecting
Build prospect lists for B2B products and services using funding events, company
stage, location, industry, and organizational information as buying signals.
```text Example prompt theme={null}
We sell [product or service] to [ideal customer profile]. Find companies at [target
stage or maturity] in [target region] that show relevant buying signals. Identify the
founders or likely decision-makers, retrieve available contact information, and draft
personalized outbound messages.
```
### Investor discovery for founders
Identify firms, angels, and partner-level professionals using sector, stage,
geography, round size, and evidence from previous investments.
```text Example prompt theme={null}
Using this company description, website, or fundraising deck, find angel investors,
venture firms, and relevant investment partners that could be a fit for our next
round. Explain why each investor matches, show relevant prior investments, and
retrieve available contact information.
```
### Venture and private-market landscape research
Compare funding activity across sectors, stages, geographies, and time periods to
identify active companies, investors, emerging categories, and shifts in momentum.
```text Example prompt theme={null}
Analyze funding activity in [sector] across [stages], [locations], and [time period].
Show changes in deal volume and capital invested, identify active companies and
investors, and summarize the most important market trends.
```
### Co-investor and syndicate research
Map disclosed investors, recurring co-investment relationships, partner-level
professionals, and other deals where relevant investors participated together.
```text Example prompt theme={null}
Find the disclosed investors and co-investors associated with [company, investor,
sector, or group of deals]. Identify recurring investment relationships, relevant
partners at each firm, and other deals where these investors participated together.
```
### Market mapping and competitive landscapes
Organize private companies by maturity, funding, geography, business model, customer
segment, and specialization to expose crowded categories and potential market gaps.
```text Example prompt theme={null}
Map the [market or industry] landscape. Find relevant private companies funded during
[time period] and organize them by stage, funding, geography, customer focus,
business model, and domain specialization. Identify mature platforms, emerging
specialists, crowded segments, and potential market gaps.
```
## Connect Fundable MCP
Fundable MCP uses remote OAuth, so you do not need to install a local server or copy
an API key into your AI assistant.
1. Open the MCP or integrations settings in your MCP-compatible assistant.
2. Add a custom remote MCP server using this URL:
```text Fundable MCP server URL theme={null}
https://mcp.tryfundable.ai/
```
3. Follow the browser prompt to sign in to Fundable and authorize the connection.
4. Start a new conversation and ask what Fundable tools are available.
MCP access requires an active Pro+ or Enterprise plan. [View Fundable
pricing](https://www.tryfundable.ai/home/#pricing).
## Available tools
| Tool | What it does | Cost and limits |
| -------------------- | ------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| `getDatasetContext` | Explains the dataset, business rules, and common joins. | Free |
| `listDatasetTables` | Lists the available dataset tables. | Free |
| `getTableDetails` | Returns the columns and constraints for one table. | Free |
| `getQueryExamples` | Returns example queries by research category. | Free |
| `previewData` | Runs a read-only SQL query for analysis and previews. | Free; up to 15 rows per response and 1,000 preview rows in a rolling 24-hour period |
| `exportData` | Creates a downloadable CSV from a read-only query. | 1 credit per exported row; up to 1,000 rows |
| `unlockPersonEmail` | Retrieves a verified email for one person when available. | Up to 5 credits; repeat unlocks for the same account cost 0 |
| `unlockPersonEmails` | Retrieves verified emails for an explicitly bounded batch of 1–20 people. | Up to 5 credits per new email; free outcomes use 0 |
## Previews, exports, and approval
Fundable separates research from paid retrieval:
* Analytical previews are free and return at most 15 rows at a time.
* Preview queries are read-only and cannot modify the dataset.
* A CSV export happens only after you explicitly request a file or download and
approve a maximum credit amount.
* Exports support up to 1,000 rows, 25 columns, 4,096 bytes per cell, and 10 MB per
file. A result above your approved ceiling or a file limit is rejected without a
charge.
* Retrying identical export SQL within 15 minutes recovers the same export without a
second charge.
* Email unlocks require explicit approval. Missing emails, invalid identifiers,
duplicates, and emails previously unlocked by the same account use 0 credits.
Begin broad research with a free preview. Ask for a CSV only after the filters and
columns look right.
## A reliable workflow
1. Ask the assistant to understand the Fundable dataset and your research goal.
2. Refine names, sectors, locations, stages, and time periods with a small preview.
3. Review the matches and adjust your criteria.
4. Ask for a CSV or verified contact information only when you want a paid action.
5. Confirm the scope and maximum credit amount before the assistant proceeds.
## Troubleshooting
### The connection says I do not have access
Confirm that you signed in with the Fundable account attached to an active Pro+ or
Enterprise plan. You can manage your plan from [Fundable billing](https://www.tryfundable.ai/billing).
### A query returns too few results
Ask the assistant to inspect the dataset schema, validate exact filter values, and
run a small diagnostic query. Avoid guessing internal identifiers or category names.
### The assistant will not export or unlock an email
Paid actions require an explicit request and a bounded credit approval. State that
you want the file or email, identify the intended scope, and approve the maximum
number of credits.
For help connecting Fundable MCP, contact [jacob@tryfundable.ai](mailto:jacob@tryfundable.ai).
# Enrich Your CRM with Funding Data
Source: https://docs.tryfundable.ai/guides/crm-enrichment
Match CRM accounts by domain and add Fundable company details, funding history, investors, and latest-round data.
Use `GET /company` to enrich a CRM account when you already have a domain, LinkedIn
URL, Crunchbase URL, or Fundable UUID. Domain is usually the simplest stable key for
company-level enrichment.
## 1. Normalize the account identifier
Before calling the API, lowercase the domain and remove the protocol, path, query
string, and leading `www.`. Keep your original CRM value unchanged for display.
Examples:
| CRM value | Lookup value |
| --------------------------------- | ----------------- |
| `https://www.example.com/pricing` | `example.com` |
| `EXAMPLE.COM` | `example.com` |
| `https://app.example.com` | `app.example.com` |
## 2. Retrieve the company
Provide exactly one identifier.
```bash theme={null}
curl --get "https://www.tryfundable.ai/api/v1/company" \
--header "Authorization: Bearer YOUR_API_KEY" \
--data-urlencode "domain=example.com"
```
If the domain is missing or does not resolve, use
[`GET /company/search`](/api-reference/companies/search) with the company name,
LinkedIn URL, or Crunchbase URL, then save the returned Fundable UUID for future
lookups.
## 3. Map source-owned fields
The company record is returned at `data.company`. Keep Fundable data in dedicated
CRM properties so enrichment does not overwrite values owned by sales or customer
success teams.
| Fundable field | Suggested CRM property |
| ---------------------- | -------------------------------------------------- |
| `id` | `fundable_company_id` |
| `total_raised` | `fundable_total_raised_usd` |
| `num_funding_rounds` | `fundable_funding_round_count` |
| `num_investors` | `fundable_investor_count` |
| `latest_valuation_usd` | `fundable_latest_valuation_usd` |
| `num_employees` | `fundable_employee_range` |
| `latest_deal` | Latest-round fields or a serialized source payload |
Also store an `enriched_at` timestamp and the Fundable UUID. The timestamp supports
freshness policies, and the UUID makes later refreshes independent of domain changes.
## 4. Upsert instead of append
Use the CRM account ID as the destination key and the Fundable UUID as the external
source key. On every sync:
1. Update source-owned enrichment fields.
2. Preserve user-entered CRM fields.
3. Clear a value only when your data policy explicitly treats `null` as authoritative.
4. Log the response's `meta.credits_used` value for cost monitoring.
For lists of target accounts, `POST /companies` can batch lookup up to 100 domains
through `identifiers.domains`.
Retrieve one company's full details and latest round.
Find new accounts before enriching them.
# Endpoint and Filter Selection
Source: https://docs.tryfundable.ai/guides/endpoint-and-filter-selection
Choose the right Fundable endpoints and filters for company, funding-round, investor, and people workflows.
Fundable's collection endpoints can apply similar filters while returning different
entity types. Choose the endpoint based first on the result you need, then on
whether funding-round filters should apply only to a company's latest round or to its
complete history.
## Choose the result type first
| Requested result | Default endpoint | Selection rule |
| -------------------------------------------- | -------------------------------------------------- | -------------------------------------------------------------------------------------- |
| Companies | [`POST /companies`](/api-reference/companies/list) | Default for most sourcing workflows; returns company metadata and the full latest deal |
| Funding rounds | [`POST /deals`](/api-reference/deals/list) | Use for deal analysis across complete company histories |
| Investor firms | [`POST /investors`](/api-reference/investors/list) | Finds matching investments and returns the participating firms |
| Founders, employees, or individual investors | [`POST /people`](/api-reference/people/list) | Returns people rather than companies, rounds, or firms |
## Choose companies or deals
Use `POST /companies` for most company discovery. Each result includes company
metadata such as its name and domain plus the full details of its latest funding
round. Filters inside `latest_deal` apply only to that most recent round. Filters
inside `investors` can match investor participation across all rounds.
> **Example:** "Find AI companies in San Francisco whose latest round was Seed" should
> use `POST /companies` with company industry and location filters plus a
> `latest_deal.financing_types` filter.
Use `POST /deals` when the requested result is a set of rounds or the analysis must
include historical rounds even when they are no longer a company's latest.
> **Example:** "Analyze every Seed round announced last year" should use `POST /deals`.
> A company that later raised Series A still belongs in this result.
Deal responses contain full round details, but related companies and investors are
represented primarily by IDs. Follow a returned company ID with
[`GET /company`](/api-reference/companies/get). Follow a deal ID with
[`GET /deals/{id}/investors`](/api-reference/deals/investors) to retrieve firm
investors, associated partners, angels, lead status, and profile links.
## Choose investor firms or people
Use `POST /investors` when the desired output is investor firms. Conceptually, its
`company_investments` filters identify qualifying portfolio companies and deals, then
return the firms that participated in them.
> **Example:** "Find San Francisco-based investors that participated in a Seed round
> during the last year" should use `POST /investors`. Put firm location filters under
> `investor` and round filters under `company_investments`.
When `company_investments` filters are active:
* `filtered_deal_count` is the number of deals that matched those filters.
* `filtered_lead_count` is the number of those matching deals the firm led.
Use `POST /people` when the desired output is individuals:
* `person_type: company` returns founders, executives, and employees based on their
current employer. `company.latest_deal` filters apply only to the employer's latest
round, but the returned person record does not include the employer's funding data.
* `person_type: investor` applies investment filters similarly to `POST /investors`,
but returns individual angels or lead partners attached to their firms.
> **Example:** "Find founders of AI companies in San Francisco whose latest round was
> Series A" should use `POST /people` with `person_type: company`, a founder role,
> current-employer filters, and `company.latest_deal.financing_types`.
## Skip search when a stable identifier is known
A domain or LinkedIn URL is usually a stronger identifier than a name. Pass it
directly to a detail endpoint instead of searching first:
| Known entity | Full detail | Name or uncertain identifier |
| ------------- | ----------------------------------------------- | --------------------------------------------------------- |
| Company | [`GET /company`](/api-reference/companies/get) | [`GET /company/search`](/api-reference/companies/search) |
| Investor firm | [`GET /investor`](/api-reference/investors/get) | [`GET /investor/search`](/api-reference/investors/search) |
| Person | [`GET /person`](/api-reference/people/get) | [`GET /person/search`](/api-reference/people/search) |
For batch lookup, pass arrays of known identifiers to the corresponding collection
endpoint. Use the singular `/search` routes primarily for fuzzy name resolution or
when an identifier might be ambiguous.
## Resolve filters before discovery
Do not guess location or industry permalinks.
1. Resolve a location label with
[`GET /location/search`](/api-reference/locations/search).
2. Resolve an industry or super category with
[`GET /industry/search`](/api-reference/industries/search).
3. Pass the selected exact permalinks to the collection endpoint.
See [Filtering & Permalinks](/api-reference/filtering) for permalink behavior and
round-type enum values.
## When to use semantic search
Semantic search is a fallback for category intent that Fundable's industry taxonomy
cannot express precisely. It matches the meaning of a company's product, technology,
or business model rather than treating the query as a literal keyword filter.
Use this decision sequence:
1. Call [`GET /industry/search`](/api-reference/industries/search) with the user's
category.
2. If the taxonomy contains an appropriate industry or super category, use its
permalink in the structured filter.
3. If no taxonomy result captures the requested niche, use `search_query`.
4. Apply location, stage, round date, funding, employee count, and other structured
requirements through their dedicated fields alongside the semantic query.
| Endpoint and mode | Semantic-search field | What it matches |
| ----------------------------- | ---------------------------------- | ---------------------------------------- |
| `POST /companies` | `company.search_query` | What the returned companies do |
| `POST /investors` | `company_investments.search_query` | What the firms' portfolio companies do |
| `POST /people`, company mode | `company.search_query` | What each person's current employer does |
| `POST /people`, investor mode | `investor.deals.search_query` | What companies the person invested in do |
**Use a taxonomy filter:** "AI companies in San Francisco" maps cleanly to an AI
industry permalink plus a San Francisco location permalink.
**Use semantic search:** "Infrastructure that reduces the cost of training foundation
models" describes a specific product and technology niche that may not have an exact
industry permalink.
Semantic searches return at most 150 matches. Results are relevance-ranked, and an
optional `min_relevance` threshold from 0 to 1 can exclude weaker matches. On
`POST /companies` and `POST /people`, semantic search overrides an explicit `sort_by`;
`POST /investors` ranks firms by how closely their portfolios match the query.
Do not include structured requirements such as "Seed," "San Francisco," "raised last
year," or "11-50 employees" inside `search_query`. Doing so makes the request less
predictable and bypasses filters designed for those constraints.
## Common endpoint sequences
| Goal | Sequence |
| -------------------------------------------------- | ------------------------------------------------------------- |
| Source companies | Resolve location and industry → `POST /companies` |
| Analyze historical rounds | Resolve location and industry → `POST /deals` |
| Inspect investors in returned rounds | `POST /deals` → `GET /deals/{id}/investors` |
| Find firms by investment history | Resolve filters → `POST /investors` |
| Find founders by employer and latest round | Resolve filters → `POST /people` with `person_type: company` |
| Find angels or lead partners by investment history | Resolve filters → `POST /people` with `person_type: investor` |
# Build a Funding Alert Workflow
Source: https://docs.tryfundable.ai/guides/funding-alert-workflow
Pull saved Fundable alert matches into a scheduled workflow with UTC checkpoints, deduplication, and retry-safe processing.
The Alerts API lets a scheduled job retrieve the deals matched by your saved
Fundable alerts. A reliable workflow first discovers the available configurations,
then requests matches for a bounded UTC time window.
`GET /alerts` and `GET /alerts/configurations` are available on Pro+
and Enterprise plans. Both endpoints consume zero credits. See
[Pricing and Credits](/usage).
## 1. List alert configurations
`GET /alerts/configurations` returns the authenticated user's alert IDs, filters,
frequency, and descriptions. It does not consume usage credits.
```bash theme={null}
curl "https://www.tryfundable.ai/api/v1/alerts/configurations" \
--header "Authorization: Bearer YOUR_API_KEY"
```
Store the alert IDs you want the workflow to process. You can request up to 10 alert
IDs at once.
## 2. Request matching deals
Pass a comma-separated list of alert IDs and an inclusive UTC date range.
```bash theme={null}
curl --get "https://www.tryfundable.ai/api/v1/alerts" \
--header "Authorization: Bearer YOUR_API_KEY" \
--data-urlencode "alert_ids=ALERT_UUID_1,ALERT_UUID_2" \
--data-urlencode "start_date=2026-07-20T00:00:00.000Z" \
--data-urlencode "end_date=2026-07-21T00:00:00.000Z"
```
The response returns each alert in `data.alerts` with a flattened `deals` array.
Deals are sorted newest first and deduplicated within the API response. Each match
also includes reasoning that explains why the deal satisfied the alert and an
`articles` array containing its related sources.
Use narrower date ranges or fewer alert IDs to keep response payloads smaller and
downstream processing faster.
## 3. Process matches safely
Use the deal UUID as the idempotency key in your destination.
1. Read the last successful UTC checkpoint.
2. Request a short overlapping time window.
3. Upsert or skip each deal by UUID.
4. Record per-item failures for retry.
5. Advance the checkpoint only when the complete batch succeeds.
An overlap is safe because the destination deduplicates by UUID. It also protects
against scheduler delays and partial failures.
## 4. Route by alert
Keep `alertId`, `alertName`, and the match reasoning with each downstream record.
Those fields let you route different alerts to different Slack channels, CRM lists,
email sequences, or analyst queues without reimplementing the filter logic.
Review query parameters and the response schema.
Retrieve the alerts available to the authenticated user.
# Track Newly Funded Startups with the API
Source: https://docs.tryfundable.ai/guides/track-newly-funded-startups
Find startups as funding rounds are added to Fundable, then filter by stage, industry, location, and company size.
Use `POST /companies` to build a repeatable feed of newly funded startups. Filter on
`latest_deal.created_start` when you care about when Fundable added a round, or use
`latest_deal.date_start` when you care about the round's announcement date.
For signal-based outbound, `created_start` is usually the better checkpoint. It
catches rounds when they enter Fundable, including older announcements that were
added recently.
## 1. Resolve filter permalinks
Location, industry, and super-category filters require exact permalinks. Resolve
human-readable names with the free [`GET /location/search`](/api-reference/locations/search)
and [`GET /industry/search`](/api-reference/industries/search) endpoints before you
build the company request.
```bash theme={null}
curl --get "https://www.tryfundable.ai/api/v1/industry/search" \
--header "Authorization: Bearer YOUR_API_KEY" \
--data-urlencode "name=artificial intelligence"
```
See [Filtering and Permalinks](/api-reference/filtering) for round-type enums and
common filtering mistakes.
## 2. Query companies with newly added rounds
This request returns private Seed and Series A companies whose latest funding round
was added to Fundable on or after July 1, 2026.
```bash theme={null}
curl --request POST "https://www.tryfundable.ai/api/v1/companies" \
--header "Authorization: Bearer YOUR_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"company": {
"locations": ["san-francisco-california"],
"super_categories": ["artificial-intelligence-e551"],
"ipo_status": ["private"]
},
"latest_deal": {
"financing_types": [
{ "type": "SEED" },
{ "type": "SERIES_A" }
],
"created_start": "2026-07-01"
},
"page": 0,
"page_size": 50,
"sort_by": "most_recent_raise"
}'
```
The response places company records in `data.companies` and pagination details in
`meta`. Increase `page` from `0` until you have processed `meta.total_count` results.
The maximum `page_size` is `500`.
## 3. Make the sync idempotent
Use a small overlap between runs so a delayed job does not create a gap.
1. Save the timestamp of the last successful run.
2. Query again from a slightly earlier `created_start` date.
3. Upsert companies by `company.id` and rounds by `company.latest_deal.id`.
4. Advance the checkpoint only after every page succeeds.
This pattern tolerates retries and late-arriving records without sending the same
company through your workflow twice.
## 4. Send qualified records downstream
Common destinations include a CRM, outbound queue, warehouse, or review sheet. Keep
the Fundable company and deal IDs in the destination so later runs can update the
same records.
Review every company and latest-deal filter.
Turn matched companies into durable CRM records.
# Fundable API: Startup and VC Funding Data
Source: https://docs.tryfundable.ai/index
Fundable's REST API for real-time startup funding rounds, VC deals, investors, and people. 150k+ rounds, 200 free credits, native API access.
**Best suited for:**
* **Signal-based outbound:** Spot companies within hours of a raise
* **Market mapping:** Find every funded company in a sector
* **Funding alerts:** Track companies by sector, stage, or use of funds
* **AI agents:** Power tools and workflows with real-time funding data
For AI agents, use [`llms.txt`](https://docs.tryfundable.ai/llms.txt) for a Markdown
index of every page and OpenAPI specification, or
[`llms-full.txt`](https://docs.tryfundable.ai/llms-full.txt) for the complete docs.
## Explore use-case guides
Research companies, investors, markets, and contacts directly from an MCP-compatible AI assistant.
Find companies as funding rounds are added, then filter by stage, industry, and location.
Pull saved alert matches into scheduled workflows without sending duplicates.
Add funding history, investors, and company details to account records.
Select and combine the right company, deal, investor, people, and filter endpoints.
## Why Choose Our API
**Real Time Coverage**: We are the quickest to report on funding announcements, enabling GTM workflows that require speed.
**Affordable Pricing**: Start for free and scale on a credit-based model.
**Rich Filtering**: Search across 15+ dimensions like stage, industry, geography, deal size, investor participation, or use semantic search.
## Get started with the Fundable API
**Create an API Key**: Grab an API key [here](https://www.tryfundable.ai/api-access/), your first 200 credits are free.
**Make Your First API Call**: Read our API documentation and view example recipes to understand how the API works. Check out some [example code](https://github.com/Jklionsky/fundable-api-example.git) on how to use the API.
Learn how to authenticate your API requests.
Explore all available endpoints.
Filter by location, industry, and round type using the right permalinks — and avoid empty results.
View example code for using the API.
# Fundable API Pricing and Credits
Source: https://docs.tryfundable.ai/usage
Fundable API pricing: credit cost per endpoint, free search endpoints, and pay-as-you-go credits from $0.05.
## API Pricing
Single-record company, investor, and person lookups cost **1 credit per call**.
List and history endpoints cost **1 credit per row returned**. Search endpoints
cost 0.1 credits per call or are free, as shown below.
| Endpoint | Description | Cost |
| ---------------------------- | ------------------------------------------------------ | ----------------------------------------- |
| `POST /deals` | Search and filter funding rounds | 1 credit/row |
| `GET /deals/{id}` | Get a specific funding round by ID | 1 credit/row |
| `GET /deals/{id}/investors` | Get investors for a specific funding round | 1 credit/row |
| `POST /companies` | List and filter companies with recent funding details | 1 credit/row |
| `GET /company` | Get a company by ID, domain, LinkedIn, or Crunchbase | 1 credit/call |
| `GET /company/deals` | Get funding rounds for a specific company | 1 credit/row |
| `GET /company/search` | Search companies by name or domain | 0.1 credit/call |
| `POST /investors` | List and filter investors with matching investments | 1 credit/row |
| `GET /investor` | Get an investor by ID, domain, LinkedIn, or Crunchbase | 1 credit/call |
| `GET /investor/deals` | Get funding rounds for a specific investor | 1 credit/row |
| `GET /investor/search` | Search investors by name or domain | 0.1 credit/call |
| `POST /people` | List and filter people with investment activity | 1 credit/row |
| `GET /person` | Get a person by ID, LinkedIn, Crunchbase, or Twitter | 1 credit/call |
| `GET /person/email` | Unlock a verified email for a person | 5 credits/new unlock; repeat unlocks free |
| `GET /person/deals` | Get deals a person participated in as an investor | 1 credit/row |
| `GET /person/search` | Search for a person by name or identifier | 0.1 credit/call |
| `GET /industry/search` | Search industries by name | Free |
| `GET /location/search` | Search locations by name | Free |
| `GET /alerts` | Get alert data with deals | Free |
| `GET /alerts/configurations` | Get alert configurations | Free |
## Plan-gated endpoints
* `GET /person/email` is available on non-trial Pro+ and Enterprise plans.
* `GET /alerts` and `GET /alerts/configurations` are available on Pro+ and Enterprise plans.
* Alert requests do not consume credits.
View current usage, credit balances, and billing details on the
[API Access page](https://www.tryfundable.ai/api-access#usage).
## How Credits Work
Paid endpoints return a `meta` object with credit usage details:
```json theme={null}
{
"success": true,
"data": {
"companies": [
{ "id": "550e8400-e29b-41d4-a716-446655440000", "name": "Acme" }
]
},
"meta": {
"total_count": 1,
"page": 0,
"page_size": 25,
"credits_used": 1,
"credit_source": "monthly",
"monthly_credits_remaining": 199,
"purchased_credits_remaining": 50
}
}
```
| Field | Description |
| ----------------------------- | --------------------------------------------------------------- |
| `total_count` | Total records matching the request |
| `page` | Current page number, starting at `0` |
| `page_size` | Maximum records requested per page |
| `credits_used` | Number of credits consumed by this request |
| `credit_source` | Whether credits came from `monthly` plan or `purchased` balance |
| `monthly_credits_remaining` | Remaining credits from your plan |
| `purchased_credits_remaining` | Remaining individually purchased credits |
* **List and history endpoints** cost **1 credit per row returned**. A request that returns 25 rows costs 25 credits.
* **Single-record lookups** (`/company`, `/investor`, `/person`) cost **1 credit per call**.
* **Company, investor, and person search** cost **0.1 credits per request**, regardless of rows returned.
* **Industry & location search** (`/industry/search`, `/location/search`) are always free and don't return credit fields.
* **Person email unlocks** (`/person/email`) cost **5 credits for a new unlock** and **0 credits when the same user already unlocked that email**.
* **Alert endpoints** (`/alerts`, `/alerts/configurations`) consume **0 credits**.
* Credits come included with your plan. If you don't want a recurring plan, you can buy credits individually for as low as **\$0.05 per credit**.
## Getting Started
Your first **200 credits are free** — no credit card required. Grab your API key [here](https://www.tryfundable.ai/api-access/) and start making requests immediately.