Docs
Quickstart
Written and maintained by The ProspectAPIs team
ProspectAPIs is a REST API at https://api.prospectapis.com. One key reaches both products: funding signals and prospect research. Requests and responses are JSON.
Per our API reference, the public API serves 13 endpoints under /v1, and 9 of them never cost a credit.
New to account research? Our guide to sales prospect research covers what to look up before a first message; the funding and research APIs below do those lookups for you.
1. Get a key
Create an account, open API keys and create one. Keys look like pa_live_ followed by 48 hex characters. The full key is shown once, when you create it; we store only a hash. An account can hold up to 25 active keys.
export PROSPECTAPIS_KEY="pa_live_..."2. Check the account
GET /v1/account is free. It returns your credit balance, the free records left this month and the current prices.
curl https://api.prospectapis.com/v1/account \
-H "Authorization: Bearer $PROSPECTAPIS_KEY"{
"credits_remaining": 25,
"free_records_remaining": 100,
"free_records_per_month": 100,
"free_period_start": "2026-10-01",
"price_per_record_usd": 0.02,
"research_price_usd": 0.15
}3. Search funding rounds
Newest announcement first, 25 records a page by default. You pay $0.02 per record returned after 100 free a month, and a search that matches nothing is free. Every filter.
curl -G https://api.prospectapis.com/v1/funding \
-H "Authorization: Bearer $PROSPECTAPIS_KEY" \
--data-urlencode "round=seed,series_a" \
--data-urlencode "since=2026-09-01" \
--data-urlencode "limit=10"Read one record by its id:
curl https://api.prospectapis.com/v1/funding/$FUNDING_ID \
-H "Authorization: Bearer $PROSPECTAPIS_KEY"4. Get new rounds pushed to you
A watchlist saves funding filters and an https webhook. Each new matching round is POSTed to it, signed, and costs $0.02 only when your webhook answers 2xx. Signatures, retries and limits.
curl -X POST https://api.prospectapis.com/v1/watchlists \
-H "Authorization: Bearer $PROSPECTAPIS_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Seed rounds in Germany",
"filters": {"round": "seed", "country": "Germany"},
"webhook_url": "https://hooks.example.com/funding"}'5. Research a prospect
Submit one identifier and, optionally, your own product as context. The API answers 202 with a research_id at once; the brief takes 20 to 90 seconds. The full contract.
curl -X POST https://api.prospectapis.com/v1/research \
-H "Authorization: Bearer $PROSPECTAPIS_KEY" \
-H "Content-Type: application/json" \
-d '{"domain": "acme.com", "purpose": "outreach",
"context": "We sell route planning software for 3PLs"}'{ "research_id": "7f3c2a90-...", "status": "queued", "estimated_seconds": 60 }Poll every 10 to 15 seconds until the status is completed or failed. Polling is free.
curl https://api.prospectapis.com/v1/research/$RESEARCH_ID \
-H "Authorization: Bearer $PROSPECTAPIS_KEY"Authentication
Send the key in the Authorization header as a Bearer token on every /v1 request except GET /v1/version. Keep keys on the server or in your agent's environment; never ship one in a browser bundle. Revoke a leaked key from the dashboard and it stops working at once.
Authorization: Bearer $PROSPECTAPIS_KEYEndpoints
| Method | Path | Cost |
|---|---|---|
| GET | /v1/funding | $0.02 per record, after 100 free a month |
| GET | /v1/funding/:id | $0.02 when found, free on 404 |
| POST | /v1/research | $0.15 per completed brief, refunded on failure |
| GET | /v1/research/:id | free, owner only |
| POST | /v1/watchlists | free; $0.02 per delivered record |
| GET | /v1/watchlists | free |
| GET | /v1/watchlists/:id | free |
| DELETE | /v1/watchlists/:id | free |
| POST | /v1/watchlists/:id/test | free, 5 a minute per account |
| GET | /v1/watchlists/:id/deliveries | free |
| GET | /v1/account | free |
| POST | /v1/feedback | free, 10 an hour |
| GET | /v1/version | free, no key |
Two more answer at the API root, free and without a key. GET /pricing returns the live price list (funding records, research, watchlist deliveries) that this site renders its prices from. GET /health is the liveness check for uptime monitors; it answers "status": "ok" while the API is serving.
Errors
Every error is JSON with an error string, and sometimes a code, field or message. Unknown parameters are refused rather than ignored, so a typo never silently widens a search you pay for.
| Status | Meaning |
|---|---|
| 400 | Bad input: an unknown query parameter or body field, a malformed id or date, or more than one research identifier. The body names the problem. |
| 401 | Missing or invalid API key. Send Authorization: Bearer pa_live_... |
| 402 | Not enough credits for this call. The body carries top_up_url; nothing was charged. |
| 404 | No record or research job with that id, or a job that belongs to another account. Never charged. |
| 405 | HEAD on a /v1 data route. Use GET. |
| 429 | Rate limit reached. Wait for the window to pass, then retry; do not retry in a tight loop. |
| 502 | Feedback only: the report could not be delivered. Retry shortly. |
| 503 | A dependency is unavailable (authentication, or a route that is not launched yet, such as research in early access). Retry later. |
| 504 | The request ran past its deadline (45 seconds by default). Not charged. |
{
"error": "Insufficient credits",
"top_up_url": "https://prospectapis.com/dashboard/credits",
"message": "Out of credits and free records for this month. Top up at https://prospectapis.com/dashboard/credits to continue."
}Rate limits
/v1 allows 60 requests a minute per API key by default. POST /v1/feedback also allows 10 delivered reports an hour per account. Responses carry the standard RateLimit headers; on a 429, wait for the window to reset.
Billing headers
Every response carries X-API-Version. Metered responses also carry your balance after the call, so a client can track spend without a second request.
| Header | Meaning |
|---|---|
| X-API-Version | The API version that served the request. |
| X-Credits-Remaining | Credit balance in dollars after this call. |
| X-Free-Records-Remaining | Free funding records left this month. Not sent on research, which has no free allowance. |
Billing reserves before it serves. A request holds the records it may return (free records first), the page is capped to that hold, and anything unserved is refunded when the response closes. A non-2xx response refunds the whole hold, and a request past its deadline is not charged.
Feedback
Found a wrong field or a missing capability? Send it from your code or agent. It is free and goes straight to the team. kind is bug (default), feature or question; never put secrets or keys in details.
curl -X POST https://api.prospectapis.com/v1/feedback \
-H "Authorization: Bearer $PROSPECTAPIS_KEY" \
-H "Content-Type: application/json" \
-d '{"kind": "bug", "title": "country filter ignores accents",
"details": "GET /v1/funding?country=Curaçao returned 0; expected 2"}'{ "feedback_id": "...", "status": "sent" }Every change to the API and the MCP server is dated on the changelog, and the about page explains where the funding data comes from and how each record keeps its source.