Overview
The WarpLeads External API allows you to programmatically access lead search functionality and supporting data. All API endpoints require authentication using your API key, which you can find in your Account Settings.
In order to use WarpLeads API you must have:
1) Unlimited WarpLeads account
2) Paid WarpLeads API account
Authentication
All API requests must include your API key in the request headers:
ApiKey: YOUR_API_KEY_HERE
Rate Limits
To ensure fair usage and system stability, the following rate limits apply to all external API endpoints:
- 300 requests per minute
- 800 requests per hour
- 4,000 requests per day
When you exceed a rate limit, you’ll receive a 429 Too Many Requests response with details about which limit was exceeded and when to retry.
Base URL
Endpoints
1. Lead Search
Search for leads based on various criteria.
Endpoint: POST /api/external/LeadSearch/Search
Headers:
Content-Type: application/json
ApiKey: YOUR_API_KEY_HERE
Request Body:
{
"Skip": 0,
"Take": 50,
"HasWorkEmail": true,
"HasPersonalEmail": false,
"HasPhone": false,
"FullName": "John Doe",
"JobTitles": ["Software Engineer", "Developer"],
"Companies": [1234, 5678],
"CompanyIndustries": [10, 25],
"CompanySizes": [3, 4, 5],
"Skills": [100, 200],
"Technologies": [50, 75],
"HaveBachelor": true,
"HaveMaster": false,
"HaveDoctorate": false,
"HaveAssociate": false,
"Locations": ["CityId:2", "StateId:5", "CountryId:1"],
"Countries": [1, 2]
}
Parameters:
- Skip (integer): Number of results to skip (for pagination)
- Take (integer): Number of results to return (max 100)
- HasWorkEmail (boolean): Filter for leads with work emails
- HasPersonalEmail (boolean): Filter for leads with personal emails
- HasPhone (boolean): Filter for leads with phone numbers
- FullName (string): Search by full name
- JobTitles (array): Filter by job titles
- Companies (array): Filter by company names
- CompanyIndustries (array): Filter by company industries
- CompanySizes (array): Filter by company sizes (1-8, see Company Sizes endpoint)
- Skills (array): Filter by skills
- Technologies (array): Filter by technologies
- HaveBachelor (boolean): Filter for leads with bachelor’s degree
- HaveMaster (boolean): Filter for leads with master’s degree
- HaveDoctorate (boolean): Filter for leads with doctorate degree
- HaveAssociate (boolean): Filter for leads with associate’s degree
- Locations (array of strings): Filter by location special IDs in format “CityId:X”, “StateId:X”, or “CountryId:X” (use Location Search endpoint to find these values)
- Countries (array of integers): Filter by country IDs (use Countries endpoint to find IDs)
Example Response:
[
{
"Id": 12345,
"FullName": "John Doe",
"JobTitle": "Software Engineer",
"LinkedInUrl": "https://linkedin.com/in/johndoe",
"CompanyName": "Tech Corporation",
"PersonLocation": "San Francisco, CA, United States",
"CompanyIndustry": "Technology",
"VisibleData": true,
"WorkEmail": "john.doe@techcorp.com",
"PersonalEmail": "john.doe@gmail.com",
"Phone1": "+1-555-123-4567",
"Phone2": "+1-555-987-6543",
"HasEmailPhone": 3
}
]
2. Job Title Search
Search for available job titles in the system.
Endpoint: GET /api/external/JobTitle/Search?jobTitle={searchTerm}
Example request:
GET /api/external/JobTitle/Search?jobTitle=engineer
Sample response:
[
{
"jobTitleId": 1,
"jobTitle": "Software Engineer"
},
{
"jobTitleId": 2,
"jobTitle": "Data Engineer"
}
]
3. Company Search
Search for companies and company-related data.
Search Companies
Endpoint: GET /api/external/Company/Search?companyName={searchTerm}
Example response:
[
{
"companyId": 1,
"companyName": "Microsoft Corporation"
},
{
"companyId": 2,
"companyName": "Microsoft Azure"
}
]
4. Search Industries
Endpoint: GET /api/external/Company/Industries?industryName={searchTerm}
[
{
"industryId": 1,
"industryName": "Technology"
},
{
"industryId": 2,
"industryName": "Software Development"
}
]
5. Get Company Sizes
Endpoint: GET /api/external/Company/Sizes
[
{
"SizeId": 1,
"Size": "1-10"
},
{
"SizeId": 2,
"Size": "11-50"
},
{
"SizeId": 3,
"Size": "51-200"
},
{
"SizeId": 4,
"Size": "201-500"
},
{
"SizeId": 5,
"Size": "501-1000"
},
{
"SizeId": 6,
"Size": "1001-5000"
},
{
"SizeId": 7,
"Size": "5001-10000"
},
{
"SizeId": 8,
"Size": "10001+"
}
]
6. Location Search
Search for locations and countries.
Search Locations
Endpoint: GET /api/external/Location/Search?cityStateCountry={searchTerm}
[
{
"specialId": "CityId:1",
"locationName": "San Francisco, CA, United States"
},
{
"specialId": "CityId:2",
"locationName": "San Jose, CA, United States"
},
{
"specialId": "StateId:5",
"locationName": "State: California"
},
{
"specialId": "CountryId:1",
"locationName": "United States"
}
]
Note: Use the specialId field (string) directly in the Lead Search Locations parameter. The format is already correct ("CityId:X", "StateId:X", or "CountryId:X").
7. Get Countries
Endpoint: GET /api/external/Location/Countries
[
{
"countryId": 1,
"countryName": "United States"
},
{
"countryId": 2,
"countryName": "Canada"
}
]
Note: Use the countryId field (integer) in the Lead Search Countries parameter.
8. Skills Search
Search for available skills in the system.
Endpoint: GET /api/external/Skills/Search?skillName={searchTerm}
[
{
"skillId": 1,
"skillName": "JavaScript"
},
{
"skillId": 2,
"skillName": "Java"
}
]
9. Technology Search
Search for available technologies in the system.
Endpoint: GET /api/external/Technology/Search?technologyName={searchTerm}
[
{
"technologyId": 1,
"technologyName": "React"
},
{
"technologyId": 2,
"technologyName": "React Native"
}
]
Error Responses401 Unauthorized
{
"error": "Invalid API key"
}
429 Too Many RequestsRate limit exceeded: 300 requests per minuteResponse Headers:
- X-RateLimit-Limit: The rate limit that was exceeded
- X-RateLimit-Window: The time window (minute/hour/day)
- Retry-After: Seconds to wait before retrying
500 Internal Server ErrorExample
curl -X POST "https://warpleads.com/api/external/LeadSearch/Search" \
-H "ApiKey: YOUR_API_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{
"Take": 10,
"HasWorkEmail": true,
"JobTitles": ["Software Engineer"],
"Companies": ["Microsoft"]
}'