Playbooks · Recipe

Build your own new-funding alert from a watch list

Keep a list of Crunchbase company URLs, re-scrape them on a schedule you run, and diff the funding fields against what you stored last time. crunchbase_company_scraper_sync bills a flat rate per call and bills on every 2xx, including the runs where nothing has changed. We have no alerting product — this is a cron job you own.

Last updated September 22, 2026

Pattern: stored watch list → crunchbase_company_scraper_sync per company, on your schedule → diff funding fields → fan out to people only on a change

Credit math: Worked example at stated counts: a 120-company watch list scraped weekly = 120 calls at 3 = 360 credits per run, roughly 1,560 per month at four and a bit runs. Every call bills whether the company raised or not. On a week with 2 changes, the fan-out adds linkedin_company_employees_search at 25 results each = 50 results at 0.1 = 5 credits, email_finder on 10 people = up to 50 credits with misses free, and email_verifier on 7 hits = 14 credits. 3 credits per crunchbase_company_scraper_sync call, 0.1 credits per result on linkedin_company_employees_search, 5 credits per email_finder call, 2 credits per email_verifier call

ROI math: Nearly all the cost is polling companies that did nothing, and the only lever is watch-list size and frequency. Weekly on 120 companies costs about a quarter of daily on the same list. Convert credits at your tier rate on /pricing.

Owned internally by: Whoever owns the cron — a GTM engineer, or a RevOps person with a scheduler and a database

Best for: Teams whose buying trigger is a funding round: recruiting, fintech, dev tools, agencies, anyone selling something a company buys the quarter after it raises

example
curl -X POST https://api.richapi.ai/api/v1/crunchbase_company_scraper_sync \
  -H "x-api-key: $RICHAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"crunchbase_company_url": "https://www.crunchbase.com/organization/openai"}'
the prompt
Scrape these 30 Crunchbase companies and compare the last funding date
and type against the values in my stored file. List only the ones that
changed, and for each of those tell me the new round type, the total
raised, and the company LinkedIn URL so I can pull people next.
  1. 01

    Sign up at app.richapi.ai and copy your key.

    25 free credits, no card.

  2. 02

    Build the watch list.

    One Crunchbase organization URL per company, stored somewhere you can read and write — a table, a JSON file, a sheet. This list is the product; the API is the easy part.

  3. 03

    Schedule the run yourself.

    Cron, a scheduled GitHub Action, an n8n timer, whatever you already operate. There is no scheduling on our side.

  4. 04

    On each run, store Last Funding Date, Last Funding Type and Total Funding Amount (in USD) per company, and compare against the previous run.

  5. 05

    Fan out to people and emails only for companies whose funding fields changed.

    That is the only step that should ever be expensive.

We do not have an alerting product

There is no webhook, no saved search, no notification, no watch list stored on our side. Nothing here pushes anything to you. If you want to know when a company on your list raises, you write a scheduled job that calls the endpoint, keeps the previous values, and compares. That is the entire mechanism and we would rather say so on this page than have you find out after signup. What we do have is a scraper that returns a company's current funding fields at a flat rate per call, which is enough to build the thing yourself in an afternoon. The interesting part was never the polling loop. **[Get 25 free credits — no card](https://app.richapi.ai)**

The watch list is the product

Whether this works has almost nothing to do with the API and everything to do with which companies are on the list. A hundred and twenty companies you chose because they match your ICP, sit in a stage you sell to, and are plausibly six to eighteen months from raising will generate a handful of real triggers a month. Two thousand companies scraped from a directory will generate noise at sixteen times the cost. Fields worth diffing: `Last Funding Date`, `Last Funding Type`, `Total Funding Amount (in USD)`. Note the shape of those keys — literal strings with spaces and capitals, exactly as they come back. `Number of Employees` is a slower-moving field but a useful second trigger, and `LinkedIn` gives you the company URL you need for the fan-out without a separate lookup. ```python prev = store.get(url, {}) now = resp["Last Funding Date"], resp["Last Funding Type"] if prev.get("funding") != now: trigger(url, resp["LinkedIn"], resp["Total Funding Amount (in USD)"]) store[url] = {"funding": now} ```

What funding alerts costs, at stated counts

120 companies, scraped once a week, in a week where two of them raised. | Step | Count | Rate | Bills regardless? | Credits | |---|---|---|---|---| | `crunchbase_company_scraper_sync` | 120 calls | 3 / call, flat | **Yes, every 2xx, change or not** | 360 | | `linkedin_company_employees_search` | 2 companies × 25 = 50 results | 0.1 / result | **Yes** | 5 | | `email_finder` | 10 calls, 7 hits | 5 / call | No, waterfall | 35 | | `email_verifier` | 7 calls | 2 / call | No, waterfall | 14 | Rates used above: 3 credits per `crunchbase_company_scraper_sync` call, 0.1 credits per result on `linkedin_company_employees_search`, 5 credits per `email_finder` call, 2 credits per `email_verifier` call. 414 credits, of which 360 went on 118 companies that did nothing. That ratio is the deal. Polling costs what polling costs, and the two levers are how many companies you watch and how often. Daily on the same list is roughly seven times the bill for triggers that are, at best, six days fresher. Weekly is usually the right call, and if your deal cycle is long, fortnightly is defensible. Convert at your tier rate on [the pricing page](/pricing).

Where funding alerts go wrong

**Crunchbase lags the announcement.** A round appears when it is recorded, not when the wire hits. If being first matters more than being cheap, this is the wrong mechanism and you want a news feed, which we do not sell. **Polling daily by reflex.** Funding rounds are not high-frequency events. A daily cron on 120 companies is 2,520 credits a week to learn the same two facts. **A watch list nobody prunes.** Companies get acquired, die, or stop being your ICP. Nothing removes them from your list except you, and every one of them bills every run. **Assuming a round means budget for you.** A seed round is not a purchase order. The company now has money and a list of things to spend it on, and you are competing to be on that list. That is a better cold email than most, and it is not a signal of intent — we sell no intent data. **Crunchbase URL drift.** Organization slugs change after a rebrand and the scrape starts failing for one row while the other 119 look fine. Log per-row failures or you will not notice for a month.

When to run funding alerts instead

If your trigger is headcount rather than capital, [hiring signal to outbound](/use-cases/hiring-signal-to-outbound) reads live job posts and is the closer analogue of a real-time signal. If it is what a company runs, [tech stack qualification](/use-cases/tech-stack-intent-outbound) is one flat call per domain. For the general shape of trigger-based work, see [signal-based prospecting](/use-cases/signal-based-prospecting); for wiring the fan-out into an agent, [agent-driven account research](/use-cases/agent-driven-account-research); and for the contact half, [list build and verify](/use-cases/list-build-and-verify). Endpoint detail for the fan-out sits on [company enrichment](/api/company-enrichment), and the rest on [the use-case index](/use-cases).

Funding alerts FAQ

**Can you just notify me when something changes?** No. We have no alerting, no webhooks and no saved searches. You run the schedule and you keep the previous state. **Does an unchanged company still cost credits?** Yes. The call returns 2xx with the current data and bills the flat per-call rate. Only `email_finder`, `email_verifier` and `phone_finder` return `billed: false` on a soft miss, and none of them is the polling step here. **How many companies can I watch?** As many as you are willing to pay to poll. The arithmetic is your list size times your run frequency times the per-call rate, and it is entirely predictable, which is the one nice thing about a flat-rate endpoint. **Why are the response keys formatted like that?** They come back from the source that way and we pass them through rather than quietly reshaping the payload. Map them once, at the edge of your code. **Do I need a credit card?** No. 25 free credits on signup.

Try funding alerts: 25 free credits, no card

Scrape five companies you already know raised recently and check the fields land where you expect before you build the loop. **[Get 25 free credits](https://app.richapi.ai)**

Frequently asked.

Can you just notify me when something changes?
No. We have no alerting, no webhooks and no saved searches. You run the schedule and you keep the previous state.
Does an unchanged company still cost credits?
Yes. The call returns 2xx with the current data and bills the flat per-call rate. Only `email_finder`, `email_verifier` and `phone_finder` return `billed: false` on a soft miss, and none of them is the polling step here.
How many companies can I watch?
As many as you are willing to pay to poll. The arithmetic is your list size times your run frequency times the per-call rate, and it is entirely predictable, which is the one nice thing about a flat-rate endpoint.
Why are the response keys formatted like that?
They come back from the source that way and we pass them through rather than quietly reshaping the payload. Map them once, at the edge of your code.
Do I need a credit card?
No. 25 free credits on signup.

More playbooks

Try it with 25 free credits.