n8n-nodes-leadswift
v1.0.0
Published
n8n community node for LeadSwift – create campaigns, submit searches, and export leads.
Downloads
95
Maintainers
Readme
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-leadswiftSelf-hosted / manual
cd ~/.n8n/custom # or wherever your n8n custom nodes live
npm install n8n-nodes-leadswiftRestart 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.
