Integrations · n8n
There is a real RichAPI community node for n8n, published as n8n-nodes-richapi, with an endpoint dropdown generated from the public manifest. It is a community node at an early version number, so this page also gives the HTTP Request setup, which works on any n8n install. The trap either way: a waterfall miss is a 2xx, so n8n's error branch never fires.
Last updated September 22, 2026
Create a RichAPI account at app.richapi.ai/signup and copy your API key.
25 free credits, no card.
On self-hosted n8n: Settings → Community nodes → Install, package name n8n-nodes-richapi.
Source is github.com/richapiai/n8n-nodes-richapi.
Create RichAPI API credentials: your API key, and a base URL that defaults to https://api.richapi.ai/api/v1. The key is sent as an x-api-key header.
Add the RichAPI node, pick an endpoint from the dropdown, and map fields from the incoming item. For bodies the generated fields do not cover, use Additional Options → Raw JSON Body, which is merged in and wins.
No community node available on your install?
Use the HTTP Request node: POST to https://api.richapi.ai/api/v1/{endpoint}, header auth with x-api-key, JSON body from the item.
Add an IF node on the response body, not on the HTTP status.
A waterfall miss returns 2xx with success false.
Copy, paste, edit the brackets, run.
Why it matters
n8n is where enrichment belongs once it has to run on a schedule rather than when someone remembers. The node exists and it is honest about what it is: a generated action node at an early version, with the HTTP Request path underneath it if you would rather depend on nothing.
There is a real n8n node. It is published on npm as `n8n-nodes-richapi`, the source is at `github.com/richapiai/n8n-nodes-richapi`, and the current version is 0.1.3. Now the qualifiers, because a community node and a built-in node are different things. It is a community node, which means self-hosted n8n installs it from Settings and n8n Cloud applies its own rules about which community packages are allowed. It is at 0.1.x, and it is generated from our public endpoint manifest rather than hand-built per endpoint, which is why it covers everything and why the fields are sometimes blunter than a hand-written node would be. If that is fine, use the node. If you would rather depend on nothing, the HTTP Request section below works on every install and is the same API underneath.
Self-hosted: **Settings → Community nodes → Install**, package `n8n-nodes-richapi`. Create **RichAPI API** credentials with your key from `app.richapi.ai/signup` and a base URL, which defaults to `https://api.richapi.ai/api/v1`. The key goes out as an `x-api-key` header. Then add the **RichAPI** node. The endpoint dropdown and its fields are generated from the manifest, so every enabled endpoint is in there. When the generated fields do not cover the body you need, **Additional Options → Raw JSON Body** takes an object that is merged into the request and wins over the generated fields. For async endpoints the node gives you three behaviours: - **Return Job ID** — hand back the initial response and let a later branch deal with it. - **Wait Until Complete** — poll, where the manifest carries polling metadata. - **Deliver to Webhook** — send a callback URL in the request and catch it with n8n's built-in Webhook node. Prefer the webhook for anything long. Polling inside a workflow holds an execution open for no good reason.
Works anywhere, including n8n Cloud and any install where you would rather not add a community package. - **Method:** POST - **URL:** `https://api.richapi.ai/api/v1/email_finder` - **Authentication:** Generic → Header Auth, name `x-api-key`, value your key, stored as an n8n credential rather than pasted into the node. - **Body:** JSON, fields mapped from the incoming item. Swap the endpoint segment for any other: [`email_verifier`](/api/email-verifier), `phone_finder`, `enrich_company`, [`enrich_profile`](/api/person-enrichment), `people_search`, `web_tech_stack`. `enrich_company` and `enrich_profile` take a **LinkedIn URL**, not a domain, which is the single most common reason an n8n branch quietly fills a column with nothing. Current request bodies live at the live OpenAPI at https://api.richapi.ai/api/v1/openapi.json.
A waterfall miss is not an error. `email_finder`, `email_verifier` and `phone_finder` return **2xx** with `success: false` and `billed: false` when the providers ran and nobody had data. n8n's error output does not fire on a 2xx. So a workflow wired as "HTTP Request → success output → CRM" writes empty contacts all week and looks healthy in the executions list. Put an **IF** node after the call and branch on `{{ $json.success }}`, not on the HTTP status. Send the false branch somewhere a human sees it. Keep the error output wired as well, for the non-2xx cases, which never bill. For lists, use **Loop Over Items** with a batch size and a **Wait** node between batches, and write `billed` and `execution_log` to a log sheet per item. When someone asks in three weeks why the credit balance moved, the answer is in the sheet.
Two workflow branches hang off one field. `execution_log` comes back on waterfall responses showing who ran and what each returned, and in n8n that is the difference between a real miss and a call you should retry. We do not publish the provider roster, because it changes as providers are added and dropped. The per-call log is the honest version of that answer.
Prepaid credits from one pool, shared across the node, the HTTP Request node, the [MCP server](/integrations/claude) and your own code. Every endpoint has a published per-call rate on [/pricing](/pricing); `people_search` is billed per result, so state a result count or the estimate is meaningless. Tiers on [/pricing](/pricing), arithmetic in the [waterfall cost calculator](/tools/waterfall-cost-calculator). A miss on the three waterfall endpoints costs zero. Every other endpoint bills on a 2xx, empty results included.
No sending, no sequencing, no CRM app, so the last node in your workflow is someone else's. No prospecting UI, and no spreadsheet: if a non-engineer needs to look at the list and click things, that is [Clay](/integrations/clay), and we are happy to be the HTTP column inside it.
**Is this an official n8n integration?** No. It is a community node we publish ourselves, not an n8n-verified or built-in node, and this page would rather say that than let you find out from a red banner. **Does the node work on n8n Cloud?** Depends on Cloud's community node policy, which we have not verified for this package. The HTTP Request node works on Cloud regardless. **Why is my success branch full of empty results?** You are branching on HTTP status. A waterfall miss is a 2xx. Branch on `success` in the body. **Can I run 5,000 rows through this?** Yes, in batches with a Wait node. Filter before you enrich, and put the cheap filtering endpoints upstream of the expensive ones. **Is there an MCP path for n8n?** The REST API is the one we have documented here. **Do I need a credit card?** No. 25 free credits on signup.
25 free credits, no card. Build one workflow with an IF node on `success`, run it on twenty rows, and check the log sheet before you schedule it. Other ways in are on the [integrations hub](/integrations).