π Build Hyper-Targeted Prospecting Lists with Surfe & HubSpot
This template automatically discovers companies that match your Ideal Customer Profile (ICP), finds the right people inside those companies and enriches them β ready to drop straight into HubSpot. Launch the workflow, sit back, and get a clean list of validated prospects in minutes.
1. β What Problem Does This Solve?
Sourcing prospects that truly fit your ICP is slow and repetitive. You jump between databases, copy domains, hunt down decision-makers, and then still have to enrich emails and phone numbers one by one.
This workflow replaces all that manual effort:
- It queries Surfeβs database for companies that match your exact industry, size, revenue and geography filters.
- It pulls the best-fit people inside each company and enriches them in bulk.
- It keeps only records with both a direct email and mobile phone, then syncs them to HubSpot automatically.
No spreadsheets, no copy-paste β just a fresh, qualified prospect list ready for outreach.
2. π§° Prerequisites
Youβll need:
- 
A self-hosted or cloud instance of n8n 
- 
A Surfe API Key 
- 
A HubSpot Private App Token with contact read/write scopes 
- 
A Gmail account (OAuth2) for the completion notification 
- 
The workflow JSON file linked above 
N8N_FLOW_2__Building_Prospecting_Lists.json
3. π Search ICP Companies Configuration β Fine-Tune Your Targeting

3.1 Editing the JSON
Every targeting rule lives inside the βπ Search ICP Companiesβ HTTP node.
Open the node Search ICP Companies β *Parameters* tab β *JSON Body* to edit the filters.
| Filter | JSON path | What it does | Example | 
|---|
| industries | filters.industries | Narrow to specific verticals (case-sensitive strings) | ["Software","Apps","SaaS"] | 
| employeeCount.from / to | filters.employeeCount | from / to | 1 / 35 | 
| countries | filters.countries | 2-letter ISO codes | ["FR","DE"] | 
| revenues | filters.revenues | Annual revenue brackets | ["1-10M"] | 
| limit | limit | Companies per run | 20 | 
3.2 Where to find allowed values
Surfe exposes an βπ Get Filtersβ endpoint that returns every accepted value for:
- industries
- employeeCounts
- revenues
- countries(always ISO-2 codes)
You can hit it with a simple GET /v1/people/search/filters request or browse the interactive docs here:
https://developers.surfe.com/public-008-people-filters developers.surfe.com
For company-level searches, the same enumerations apply.
4. βοΈ Setup Instructions
4.1 π Create Your Credentials in n8n
4.1.1 π Surfe API
- In your Surfe dashboard β Use Surfe Api β copy your API key
- Go to n8n β Credentials β Create Credential
1. Choose Credential Type : Bearer Auth2. Name it something likeSURFE API Key3. Paste your API key into theBearer Token4. Save

4.1.2 π§ Gmail OAuth2 API
- Go to n8n β Credentials
- Create new credentials:
- A pop-up window will appear where you can log in with your Google account that is linked to Gmail
- Make sure you grant email send permissions when prompted
 

4.1.3 π― HubSpot
π Private App Token
- Go to HubSpot β Settings β Integrations β Private Apps
1. Create an app with scopes:
- crm.objects.contacts.read
- crm.objects.contacts.write
- crm.schemas.contacts.read2. Save the App token
 
- Go to n8n β Credentials β Create Credential β HubSpot App Token
1. Paste your App Token



β
 You are now all set for the credentials
4.2 π₯ Import and Configure the N8N Workflow
- Import the provided JSON workflow into N8N
- Create a New Blank Workflow
- click the β¦on the top left
- Import from File
 


4.2.1 π Link Nodes to Your Credentials
In the workflow, link your newly created credentials to each node of this list :
- Surfe HTTP nodes:- 
- Authentication β Generic Credential Type
- Generic Auth Type β Bearer Auth
- Bearer Auth β Select the credentials you created before
 
- Gmail Node Credentials to connect withβ- Gmail account
- Hubspot Nodeβ- Credentials to connect withβ- Gmail account

Surfe HTTP nodes
Surfe HTTP nodes
- HubSpot node β Credentials to connect withβ select your HubSpot credentials in the list
5. π How This N8N Workflow Works
- Manual Trigger β Click Execute Workflow (or schedule it) to start.
- Search ICP Companies β Surfe returns company domains that match your filter set.
- Prepare JSON Payload with Company Domains β Formats the domain list for the next call.
- Search People in Companies β Finds people inside each company.
- Prepare JSON Payload Enrichment Request β Builds the bulk-enrichment request.
- Surfe Bulk Enrichments API β Launches one enrichment job for the whole batch.
- Wait + Polling loop β Checks job status every 3 seconds until itβs COMPLETED.
- Extract List of People β Pulls the enriched contacts from Surfeβs response.
- Filter: phone AND email β Keeps only fully reachable prospects (email and mobile).
- HubSpot: Create or Update β Inserts/updates each contact in HubSpot.
- Gmail β Sends you a βYour ICP prospecting enrichment is doneβ email.
6. π§© Use Cases
- Weekly prospect list refresh β Generate 50 perfectly-matched prospects every Monday morning.
- Territory expansion β Spin up a list of SMB software CEOs in a new country in minutes.
- ABM prep β Build multi-stakeholder buying-group lists for target accounts.
- Campaign-specific lists β Quickly assemble contacts for a limited-time product launch.
7. π  Customization Ideas
prepare
- π― Refine filters for people β Add seniorities or other filters in the node JSON PAYLOAD WITH Company Domains
- β»οΈ Deduplicate β Check HubSpot first to skip existing contacts.
- π’ Slack alert β Replace Gmail with a Slack notification.
- π Reporting β Append enriched contacts to a Google Sheet for analytics.
8. β
 Summary
Fire off the workflow, and n8n will find ICP-fit companies, pull key people, enrich direct contact data and drop everything into HubSpot β all on autopilot.
Prospecting lists, done for you.