Watchlists
Funding alerts by webhook
watchlists for new rounds
A ProspectAPIs watchlist is a funding alert you set up once: save filters such as round, amount, investor or country and an https webhook, and each new funding round that matches is posted to you as JSON, signed with HMAC-SHA256. You pay $0.009 per round delivered, only when your server answers with a 2xx, and nothing to create or test it.
The numbers
Per our API reference, you can send 5 signed test deliveries a minute while you build the receiver; the price is read from our live price list each time this page renders.
- Per delivered round
- $0.009
- Charged only on a 2xx from your webhook.
- To create, list, test or delete
- Free
- Managing watchlists is free.
- Test deliveries
- 5 / min
- Signed samples to build your receiver.
- Free to start
- $1
- The same balance pays for searches and alerts.
Why push beats polling
A search answers what has already happened. A watchlist tells you the moment something new matches, so the first message reaches a founder while the announcement is still news. Teams use it to:
- Feed a sales channel. Post each new round in your segment to Slack or Teams with the source link.
- Create CRM records. Open an account or a task the moment a target company raises.
- Wake an agent. Start a research brief and a draft opener from the delivery itself.
- Watch named accounts. Filter by domain or company and hear when a company on your list raises.
Set up an alert in three steps
- 1
Create the watchlist
POST your filters and webhook. Store the secret in the response: it is shown once.
- 2
Send a test
POST to the test route and your webhook receives a signed sample marked test, so you can build and check the receiver.
- 3
Receive new rounds
Each new matching round arrives as one POST. Verify the signature, then act on it; our guide to funding signals for prospecting shows what to send next.
curl -X POST https://api.prospectapis.com/v1/watchlists \
-H "Authorization: Bearer $PROSPECTAPIS_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "US seed and Series A",
"filters": {"round": "seed,series_a", "country": "US", "min_amount_usd": 2000000},
"webhook_url": "https://hooks.example.com/funding"}'What your webhook receives
One POST per matching round. data is the funding record, with the same fields as the funding data API. This example shows a fictional company:
{
"type": "funding_event.matched",
"delivery_id": "5e1c9b70-...",
"watchlist_id": "a41f0c2e-...",
"delivered_at": "2026-11-03T09:15:01Z",
"data": {
"company_name": "Acme Robotics",
"company_domain": "acme.com",
"round_stage": "series_a",
"amount_usd": 18000000,
"announced_at": "2026-11-03",
"lead_investors": ["Example Ventures"],
"source_url": "https://acme.com/blog/series-a"
}
}Check the Prospect-Signature header against your secret before trusting the body, and use Prospect-Delivery-Id to drop a delivery you have already handled.
What your endpoint needs
The webhook URL is the one part of a watchlist you run yourself. It has to meet a few rules before we send to it, and a few habits keep it from missing rounds:
- Public https only. The URL must use https on a public host, on port 443 or an explicit port from 1024 to 65535. A URL that is an IP address or an internal name is refused when you create the watchlist, and every send checks each address the host resolves to at connect time: a private, loopback, link-local or metadata address fails the send, so a changed DNS answer cannot point a delivery at an internal address.
- Answer within 10 seconds. We wait up to 10 seconds for a response. A timeout counts as a failed send: it is refunded and tried again on a later pass.
- No redirects. A 3xx response is recorded as the answer and is not followed, so it never counts as delivered. Give us the final URL, not one that forwards somewhere else.
- Check the timestamp as well as the hash. The header reads
t=<unix seconds>,v1=<hex>. Recompute HMAC-SHA256 over the timestamp, a dot and the raw body with your secret, compare in constant time, and reject a timestamp far from your own clock so an old captured body cannot be replayed. - Treat the secret like a password. It is returned once, when the watchlist is created, and the list route never shows it again. If it leaks, delete the watchlist and create a new one with the same filters.
How it works
A watchlist is a stored query that runs against new funding rounds instead of against the archive. You save the filters once; from then on, every round that reaches the funding data and matches them is queued for your webhook, posted as one signed JSON body, and recorded with a status you can read back.
- Matching. New rounds are checked against each watchlist's filters, the same filters the funding search accepts, so a watchlist and a search with the same filters agree on what counts as a match.
- Delivery. A matched round goes out in the same pass where it can, otherwise on the next one, as one POST to your https webhook with a Prospect-Signature header and a Prospect-Delivery-Id.
- Billing. Only a 2xx answer from your server marks a round delivered and charges $0.009. A failed send is refunded and retried on a later pass; an account without credit holds the round for up to a day and sends it once topped up; after a day it is marked failed.
- Record. Every delivery lands in the deliveries route with its status and attempt count, so you can see what was sent, what failed and what is still waiting without logging anything yourself.
Nothing about the watchlist runs on your side between deliveries. There is no poll loop to schedule, no cursor to store and no diff to compute against yesterday's search. A send that fails is tried up to three times across later passes; after the third failure the delivery is marked failed and stays readable in the deliveries route, so a check on failed statuses tells you when your endpoint missed something. Deleting a watchlist stops it and removes its delivery record with it, so export anything you want to keep first.
What's worth watching
The best watchlists are narrow enough that every delivery is worth acting on. A few filter sets teams start from:
- Your segment's first institutional money. Round stage seed and series A, a minimum amount that matches your buyers, and the countries you sell into. These are the companies about to hire and buy tools.
- Named accounts. A company domain or company name for each target account, so you hear the day one of them raises instead of finding out at the next quarterly review.
- An investor's portfolio. An investor filter for a fund whose companies tend to buy what you sell, or whose portfolio you serve as a partner.
- Late-stage expansion. Series B and later with a high minimum amount, for products sold to companies scaling teams across regions.
Several narrow watchlists are easier to route than one wide one: each can point at its own webhook, such as a separate Slack channel or CRM pipeline per segment.
Is it worth setting up if your buyers are bootstrapped?
Only partly. A watchlist fires when a company announces a round, so a buyer that never raises never shows up. Keep one watchlist on your named accounts (some of them will raise) and use other signals for the rest. You pay only per delivered round, so a quiet watchlist costs nothing.
More on real-time alerts
Real time here means pushed as new rounds are matched, not polled by you. Four details decide whether the alerts you build on it stay trustworthy:
- Start from creation. A watchlist sees rounds that arrive after it is created. Run the funding search once with the same filters to backfill history, then let the watchlist keep it current.
- Make the receiver idempotent. Retries mean the same round can reach you twice. Keep the Prospect-Delivery-Id you have handled and drop repeats, and verify the signature before trusting any body.
- Answer fast, work later. Return a 2xx as soon as the delivery is stored and do the slow work, enrichment or a CRM write, afterwards. A slow or failing endpoint turns deliveries into retries and delays the next one.
- Test before you rely on it. The test route sends a signed sample marked test to your webhook whenever you like, free, so you can check the receiver end to end before the first real round arrives.
How fast: our funding records are refreshed every two hours, and a delivery pass runs every 15 minutes, sending up to 50 matches per watchlist per pass. A new round usually reaches your webhook within 15 minutes of entering our records; a very broad watchlist with a backlog takes a few more passes. Compared with the other ways to hear about a raise:
| Method | How fast | Your work |
|---|---|---|
| Watchlist webhook | Usually within 15 minutes of a round entering our records | Build one receiver; nothing to schedule |
| Polling the funding search | As often as you schedule it | A job, paging and your own de-duplication |
| A weekly digest email | Up to a week late | Someone reads it and copies rows by hand |
Every delivery has a status
Only a delivered round is charged. Read any watchlist's recent deliveries from the deliveries route.
| Status | Meaning | Billing |
|---|---|---|
| delivered | Your webhook answered 2xx. | The only charged state |
| pending | Matched and waiting for the next delivery pass. | Not charged |
| retry | The send failed; it was refunded and goes out again on a later pass. | Refunded |
| no_credit | The account could not pay for the record. It waits up to a day, then goes out once it can. | Not charged |
| failed | The retries ran out, a day passed without credit, or the round no longer matches. | Not charged |
Routes and prices
Prices come from GET /pricing. Every product is on the pricing page, and other ways to connect are on the integrations page.
| Route | What it does | Price |
|---|---|---|
| POST /v1/watchlists | Create a watchlist: a name, funding filters and an https webhook. The signing secret is returned once. | Loading the live price |
| GET /v1/watchlists | List your watchlists, without their secrets. | Loading the live price |
| POST /v1/watchlists/:id/test | Send a signed sample to your webhook now, to build the receiver. | Loading the live price |
| GET /v1/watchlists/:id/deliveries | Recent deliveries and the outcome of each. | Loading the live price |
| DELETE /v1/watchlists/:id | Delete it and its delivery history. | Loading the live price |
Questions
What is a funding watchlist?
A saved set of funding filters plus an https webhook. Each new funding round that matches is posted to your webhook as JSON, signed, so you hear about a raise without polling.
How much do funding alerts cost?
Creating, listing, testing and deleting watchlists is free. Each round delivered costs $0.009, charged only when your webhook answers with a 2xx status. A failed send is refunded and retried.
Which filters can a watchlist use?
Round stage, minimum and maximum amount in US dollars, company name, company domain, investor and country, validated exactly as the funding search validates them. Date windows and paging do not apply, because a watchlist only sees rounds that arrive after it is created.
How do I verify a delivery came from you?
Each POST carries a Prospect-Signature header with a timestamp and an HMAC-SHA256 of the timestamp and body, keyed with your watchlist secret. Compare it before trusting the body, and drop duplicates by Prospect-Delivery-Id.
Can I send alerts to Slack, a CRM or a no-code tool?
Yes. Point the webhook at anything that accepts an https POST: your own endpoint, a Zapier or Make webhook trigger, or an n8n webhook node that forwards to Slack or your CRM.
Do I get old rounds when I create a watchlist?
No. A watchlist sees rounds that arrive after it is created. For history, search the funding API with the same filters.
More answers on the FAQ page, and how signing and keys are handled on the security page.