Integration Guide
Pull leads from the Lead Database and push them into Smartlead campaigns via the API. Send up to 100 leads per request, with custom fields for personalization.
Smartlead exposes an API for adding leads to campaigns in bulk. You query the ScraperCity Lead Database for contacts matching your ICP, map the fields to Smartlead's format, and POST them to a campaign. Leads start receiving your sequence based on the campaign schedule.
Smartlead authenticates via API key as a query parameter (not a Bearer token in headers). You can send up to 100 leads per request, and the API allows 60 requests per minute.
From app.scrapercity.com/dashboard/api-docs. Requires the $649/mo plan.
Settings > Your Profile > API settings. Requires the PRO plan.
The numeric ID of your Smartlead campaign. Visible in the URL when viewing a campaign, or via the GET /api/v1/campaigns endpoint.
curl, Python, Node.js, n8n, or any tool that can make HTTP requests.
curl -s "https://app.scrapercity.com/api/v1/database/leads?title=CEO&industry=computer%20software&country=United%20States&hasEmail=true&limit=100" \
-H "Authorization: Bearer $SCRAPERCITY_API_KEY"Returns up to 100 leads with email, name, title, company, and LinkedIn. Paginate with &page=2, &page=3, etc.
POST to the Smartlead campaign leads endpoint. You can send up to 100 leads per request in the lead_list array:
curl -X POST "https://server.smartlead.ai/api/v1/campaigns/YOUR_CAMPAIGN_ID/leads?api_key=$SMARTLEAD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"lead_list": [
{
"email": "[email protected]",
"first_name": "John",
"last_name": "Smith",
"company_name": "TechCorp",
"website": "techcorp.com",
"location": "San Francisco, CA",
"linkedin_profile": "https://linkedin.com/in/johnsmith",
"custom_fields": {
"Title": "CEO",
"Industry": "Computer Software"
}
}
],
"settings": {
"ignore_global_block_list": false,
"ignore_unsubscribe_list": false
}
}'Note the API key goes in the URL as a query parameter, not in headers.
Map ScraperCity response fields to Smartlead lead fields:
email→emailfirst_name→first_namelast_name→last_namecompany_name→company_namecompany_domain→websitelinkedin_url→linkedin_profilecity + state→locationmobile_number→phone_numbertitle→custom_fields.Titlecompany_industry→custom_fields.IndustryAnything in custom_fields is available as a merge tag in your Smartlead sequences. Use {{Title}} or {{Industry}} in your email copy. Max 20 custom fields per lead.
The settings object in the POST body controls how Smartlead handles incoming leads:
ignore_global_block_listWhen set to true, leads that appear on your global block list will still be added to the campaign. Default false. Leave this false unless you have a specific reason to override.
ignore_unsubscribe_listWhen set to true, leads who previously unsubscribed will be added back. Default false. Keep this false to stay compliant.
Write a script that pulls from ScraperCity, transforms the data into Smartlead's lead_list format, and POSTs in batches of 100. Run daily or weekly.
HTTP Request node pulls from ScraperCity with pagination, a Function node transforms the fields, and a second HTTP Request node POSTs to Smartlead. Respect the 60 req/min rate limit with a wait node.
Tell Claude Code: "Pull 1000 VPs of Sales from ScraperCity and load them into my Smartlead campaign [ID]. Map title and industry to custom fields. Batch in groups of 100." It writes and runs the script.