Package Information
Documentation
n8n-nodes-leadswift
Community n8n node for LeadSwift — the local B2B lead generation platform.
Features
| Resource | Operations |
|---|---|
| Campaign | Get All, Get, Create, Delete |
| Search | Get All (by campaign), Submit, Delete |
| Lead | Get All (paginated), Export Async (CSV download URL) |
Installation
In your n8n instance
Settings → Community Nodes → Install → n8n-nodes-leadswift
Self-hosted / manual
cd ~/.n8n/custom # or wherever your n8n custom nodes live
npm install n8n-nodes-leadswift
Restart n8n after installing.
Credentials
- Go to Credentials → Add Credential → LeadSwift API
- Paste your API key from leadswift.com/dashboard/api-settings
Typical Workflow
[Schedule Trigger]
↓
[LeadSwift – Campaign: Create] ← title = "Plumbers May 2025"
↓ (output: id)
[LeadSwift – Search: Submit] ← keyword = "Plumbers", location = "Toronto, ON, Canada"
↓ (output: id = search_id)
[Wait 2–4 hours] ← searches run in the background; you'll get an email when done
↓
[LeadSwift – Search: Get All] ← confirm status = "completed"
↓
[LeadSwift – Lead: Export] ← pollUntilComplete = true, maxWait = 600s
↓ (output: download_url)
[HTTP Request – GET download_url]
↓
[Spreadsheet File / Google Sheets / CRM]
Operations Reference
Campaign
| Operation | Key Parameters | Returns |
|---|---|---|
| Get All | — | Array of {id, title, description} |
| Get | campaignId |
Single campaign object |
| Create | title, description |
{id} |
| Delete | campaignId |
{success, data} |
Search
| Operation | Key Parameters | Returns |
|---|---|---|
| Get All | campaignId |
Array of search objects with status, total_results |
| Submit | campaignId, keyword, location, htmlSearchCode (opt) |
{success, data: {id}} |
| Delete | searchId |
{success, data} |
Status values returned by Get All:
| Status | Meaning |
|---|---|
processing |
Still collecting data from sources |
gathering websites |
Auditing business websites |
queued |
Waiting in the processing queue |
completed |
Ready to export or fetch leads |
re-processing |
Being updated with new leads |
Lead – Get All
Returns paginated lead rows. Useful for smaller searches or when you need to inspect/filter data before exporting.
| Parameter | Default | Description |
|---|---|---|
searchId |
— | ID from a completed search |
returnAll |
false | Paginate through all pages |
limit |
25 | Max rows when returnAll = false |
textFilter |
— | e.g. job-title:owner,ceo or Toronto |
excludeClosed |
true | Skip leads you've marked Closed |
mergeByDomain |
false | One row per website domain |
Output fields per lead: name, address, phone, category, website, email, google_rating, google_reviews, yelp_rating, fb_rating, is_ssl, is_mobile_friendly, is_wordpress, is_shopify, company_size, employees, status, created_at, and more.
Lead – Export (Async)
Preferred for large searches. Queues a background export job on LeadSwift's servers and polls until done.
| Parameter | Default | Description |
|---|---|---|
searchId |
— | ID from a completed search |
pollUntilComplete |
true | Wait and return download URL |
maxWaitSeconds |
300 | Timeout in seconds |
excludeClosed |
true | Skip closed leads |
mergeByDomain |
false | One row per domain |
oneContactPerRow |
true | One email per CSV row |
customFilter |
— | Same filter syntax as the dashboard |
Output:
{
"cron_id": 1234,
"search_id": "5678",
"status": "Completed",
"download_url": "https://auto.leadswift.com/auto_export/temp/csv/.../filename.csv"
}
When pollUntilComplete = false, the node returns immediately with { cron_id, status: "Pending" }. You can then use a separate HTTP Request node to POST to /api/export_leads_status with cron_id to check progress yourself.
Notes
- Search quota resets daily at 12AM EST.
- City-level searches yield far more results than state/country-level.
- Large searches can take several hours. Submit searches in advance and poll for completion.
- The
download_urlis a temporary CSV link. Fetch it promptly or store it. - Free/trial accounts cannot use the API.