n8n
Find work emails in n8n with the Treffer node, or call any endpoint with the HTTP Request node.
Treffer node
Add the email finder to any workflow without building requests. The node is verified by n8n, on n8n Cloud and self-hosted: search for Treffer in the nodes panel, pick it under More from the community and select Install. Instance owners and admins can install it, then everyone on the instance can use it.
Self-hosted, you can also install it under Settings > Community Nodes > Install:
n8n-nodes-treffer
Then add a Treffer API credential in the node and paste a key from your API keys.
Actions
| Action | Does |
|---|---|
| Find a work email | Email finder. 1 credit per found email, a miss is free. |
| Get the credit balance | Credit balance. Free. |
Inputs
| Node field | API field |
|---|---|
| First Name and Last Name, or Full Name |
first_name and last_name,
or full_name. Pick with Name Format.
|
| Company Domain | domain, the more reliable match |
| Company Name | company_name, when you have no domain |
Fill a domain, a company name or both. The node leaves empty fields out, so rows with only one of them work.
It returns email, deliverability,
found and credits_consumed.
Large lists
-
•
The node runs 5 lookups in parallel. On a rate limit or a temporary outage it waits as long as
Retry-Aftersays and retries on its own. - • Leave n8n's Retry On Fail off. It reruns every item of the node, so emails already found would be charged again.
- • Set On Error to Continue (using error output) so a row without a name or company does not stop the run.
The node also works as a tool for n8n's AI agents. Ready-made example workflows, including one that fills the email column of a Google Sheet, import with Import from File.
HTTP Request node
For the company profile, which the Treffer node doesn't cover. This covers the values you need for Treffer. For the node itself, follow n8n's HTTP Request docs.
Fastest setup
Copy the cURL example of the endpoint you want into the node's cURL import. It fills in URL, method, headers and body in one go.
Email finder
curl -X POST 'https://api.treffer.io/v1/email/finder' \
-H 'X-API-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"first_name": "Christian",
"last_name": "Hecker",
"domain": "traderepublic.com"
}'
import requests
response = requests.post(
"https://api.treffer.io/v1/email/finder",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"first_name": "Christian",
"last_name": "Hecker",
"domain": "traderepublic.com",
},
timeout=100,
)
print(response.json())
Inputs: full_name, or
first_name and last_name.
Plus domain or company_name;
the domain gives the more reliable match.
Company profile
curl -X POST 'https://api.treffer.io/v1/companies/profile' \
-H 'X-API-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"domain": "traderepublic.com"
}'
import requests
response = requests.post(
"https://api.treffer.io/v1/companies/profile",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"domain": "traderepublic.com",
},
timeout=100,
)
print(response.json())
Inputs: domain or name,
or both; the domain gives the more reliable match.
All request and response fields: email finder, company profile.
Keep the key in a credential
Store the API key as a Header Auth credential instead of a literal header:
name X-API-Key, value your key.
The key stays out of the workflow and out of workflow exports.
Configuration
-
•
Method
POST, URL exactly as documented, no trailing slash. - • Send the inputs as a JSON body. Map incoming fields with expressions.
- • Set the node timeout to at least 100000 ms. Lookups run against live sources and can take up to 90 seconds.
Waterfalls and errors
A miss is not an error: HTTP 200, found false, 0 credits.
Branch with an IF node on found and send misses to your
fallback provider. No error handling needed for a miss.
The HTTP Request node sends all items at once. For larger lists, turn on Batching in its options to stay under the rate limits. Its Retry On Fail reruns every item, found ones included, so handle failed rows with Continue (using error output) instead. Error responses are listed under errors.