ScraperCity logo

Integration Guide

ScraperCity + Smartlead

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.

How It Works

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.

What You Need

ScraperCity API Key

From app.scrapercity.com/dashboard/api-docs. Requires the $649/mo plan.

Smartlead API Key

Settings > Your Profile > API settings. Requires the PRO plan.

Campaign ID

The numeric ID of your Smartlead campaign. Visible in the URL when viewing a campaign, or via the GET /api/v1/campaigns endpoint.

A script runner

curl, Python, Node.js, n8n, or any tool that can make HTTP requests.

Step by Step

1

Pull leads from ScraperCity

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.

2

Push leads into a Smartlead campaign

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.

3

Field mapping reference

Map ScraperCity response fields to Smartlead lead fields:

emailemail
first_namefirst_name
last_namelast_name
company_namecompany_name
company_domainwebsite
linkedin_urllinkedin_profile
city + statelocation
mobile_numberphone_number
titlecustom_fields.Title
company_industrycustom_fields.Industry

Anything 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.

Lead Import Settings

The settings object in the POST body controls how Smartlead handles incoming leads:

ignore_global_block_list

When 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_list

When set to true, leads who previously unsubscribed will be added back. Default false. Keep this false to stay compliant.

Ways to Automate This

Bash/Python script on a cron

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.

n8n workflow

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.

Claude Code

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.

FAQ

Get API access to the Lead Database: