n8n
In n8n, an Icypeas lookup is three nodes: HTTP Request → Wait → HTTP Request. Works on n8n cloud and self-hosted.
Save your API key as a credential
In Credentials › Add credential, choose Header Auth and set:
- Name:
Authorization - Value: your API key
Call it Icypeas. You'll reuse it in both HTTP nodes.
Start the search
Add an HTTP Request node, rename it Start search, and set:
| Setting | Value |
|---|---|
| Method | POST |
| URL | https://app.icypeas.com/api/email-search |
| Authentication | Generic Credential Type › Header Auth › Icypeas |
| Send Body | On, Body Content Type JSON, Specify Body Using JSON |
| JSON | See below |
{
"firstname": "{{ $json.firstname }}",
"lastname": "{{ $json.lastname }}",
"domainOrCompany": "{{ $json.company }}"
}
Adapt the $json.… expressions to the field names coming from your previous node.
Wait
Add a Wait node: Resume › After Time Interval, 10 seconds.
Read the result
Add a second HTTP Request node, Read result:
| Setting | Value |
|---|---|
| Method | POST |
| URL | https://app.icypeas.com/api/bulk-single-searchs/read |
| Authentication | Header Auth › Icypeas |
| JSON | { "id": "{{ $('Start search').item.json.item._id }}" } |
Use the email
In the next nodes:
- Email:
{{ $json.items[0].results.emails[0].email }} - Certainty:
{{ $json.items[0].results.emails[0].certainty }} - Status:
{{ $json.items[0].status }}
Add an If node after Read result: if status is NONE, SCHEDULED or IN_PROGRESS, loop back to the Wait node. Otherwise continue.
n8n runs the HTTP node once per item. Single searches are limited to 10 per second: in the node's Options, enable Batching with 5 items every 1,000 ms. For hundreds of rows, use the bulk search instead.