Integrations · Pipedream
There is no RichAPI component in the Pipedream registry. You call us from the generic HTTP Request action or a Node.js code step, with the key in a workspace environment variable. On the waterfall endpoints a miss returns 2xx with billed false and costs nothing, so your step must branch on the body, not the status code.
Last updated September 22, 2026
Create a RichAPI account at app.richapi.ai/signup and copy your API key.
25 free credits, no card.
In Pipedream, add the key as a workspace environment variable (Settings → Environment Variables) named RICHAPI_KEY. Do not paste it into the step config. Env vars are what survive a workflow fork.
Add an HTTP / Webhook → Send any HTTP Request action.
POST to https://api.richapi.ai/api/v1/email_finder with an x-api-key header set to {{process.env.RICHAPI_KEY}}.
Add a Node.js code step immediately after it that reads steps.enrich.$return_value.success and calls $.flow.exit() when it is false. A soft fail is a 200 and Pipedream will happily carry an empty row downstream if you let it.
Wire the surviving rows into whatever comes next: Google Sheets, a CRM node, an email platform. RichAPI stops at the data.
Copy, paste, edit the brackets, run.
Why it matters
Pipedream is where a workflow goes when Zapier's step limits start to hurt and you want real JavaScript in the middle. That is exactly the shape enrichment needs, because a miss is a 200 with a false in it, and handling that properly takes three lines of code rather than a checkbox.
Search the Pipedream app registry for RichAPI and you get nothing. There is no maintained component, no pre-built action, no OAuth app. We are not going to imply one exists so the page reads better. What you do get is the thing Pipedream is actually good at: a generic HTTP action, a Node.js runtime in the middle of the workflow, and environment variables that are not stapled to a single step. That covers the whole API, and it takes about four minutes.
Create an account at `app.richapi.ai/signup` and copy the key. In Pipedream, put it in **Settings → Environment Variables** as `RICHAPI_KEY`. Not in the step config. Env vars survive a workflow fork and stay out of the step's exported JSON, which matters the first time someone copies your workflow into a client workspace. Then add **HTTP / Webhook → Send any HTTP Request**: - Method: `POST` - URL: `https://api.richapi.ai/api/v1/email_finder` - Headers: `x-api-key: {{process.env.RICHAPI_KEY}}`, `Content-Type: application/json` - Body: `{"full_name": "{{steps.trigger.event.name}}", "company_domain": "{{steps.trigger.event.domain}}"}` Same base URL for every endpoint — swap the last path segment. Field names per endpoint come from the live spec at `api.richapi.ai/api/v1/openapi.json`; the live OpenAPI at https://api.richapi.ai/api/v1/openapi.json is the canonical reference once it is published.
A waterfall lookup that finds nothing returns **HTTP 200**. Pipedream's HTTP action sees a 2xx and hands the workflow a body with `"success": false` and `"billed": false` in it. If your next step is a Google Sheets append, you have just written a blank email into a list you will later send to. So the step after the request is a code step: ```javascript export default defineComponent({ async run({ steps, $ }) { const r = steps.enrich.$return_value; if (!r?.success || !r?.data?.email) { $.flow.exit("no email found, nothing billed"); } return { email: r.data.email, status: r.data.status }; }, }); ``` `$.flow.exit()` ends that event cleanly rather than throwing, so your error rate stays honest and your retries stay meaningful. The same guard belongs after `email_verifier`, where the miss case is rarer but the interesting case is a `catch_all` result that is neither valid nor invalid. Route it, do not treat it as a pass. See [catch-all email handling](/use-cases/catch-all-email-handling).
One pool of prepaid credits, shared across every client and every workflow on the key. | Endpoint | Cost | | --- | --- | | `email_finder` | `5 credits` | | `email_verifier` | `2 credits` | | `phone_finder` | `25 credits` | | `enrich_company` | `1 credit` | | `enrich_profile` | `1 credit` | | `find_linkedin_url_by_email` | `4 credits` | | `people_search` | `0.1 credits per result — state the result count or the number is meaningless` | Full price only on results, and that is scoped: `email_finder`, `email_verifier` and `phone_finder` cost zero when the providers all come back empty. Everything else bills on a successful 2xx, including one that returns an empty object. A non-2xx never bills, anywhere. Rate card on [/pricing](/pricing).
Log the `execution_log` from a multi-provider waterfall response to a Pipedream Data Store on misses, and after a week you can tell a bad input format from a genuinely unfindable person. It shows who ran and what each returned. We do not publish the provider roster, because it changes. The log is the honest version: not a list on a marketing page, a per-call record of who ran on your request.
No component, no sending, no CRM writes, no prospecting UI. Pipedream does the orchestration and the destination write. We hand it rows. The rest of the [integrations index](/integrations) is here. If you want the same pattern with a visual builder instead of JavaScript, [n8n](/integrations/n8n) and [Make](/integrations/make) are the neighbours. If you want it inside a chat window, [Claude](/integrations/claude) over MCP.
**Is there a RichAPI component in the Pipedream registry?** No. HTTP action or code step. If that changes, this page changes. **Can I use Pipedream's Connect / OAuth flow?** Not with us. We authenticate with a static header key, so a workspace env var is the right home for it. **Will a miss retry forever?** Not if you exit on `success: false`. A miss is a 200, so Pipedream's automatic retries never fire on it, which is correct, since retrying an exhausted waterfall spends nothing and finds nothing. **Can I run one key per client?** Named keys with per-key usage attribution, yes. See [per-client API keys for agencies](/use-cases/per-client-api-keys-for-agencies). **Does Pipedream's concurrency break anything?** The key is shared, so parallel workflows draw on the same credit balance. Nothing about the architecture cares which workflow called.
25 free credits, no card. One HTTP step and a three-line guard. Build it against the free tier before you fund anything.