curl --request POST \
--url https://public-api.lonescale.com/trigger/contact-sourcing \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"company_name": "Acme Corp",
"company_domain": "acme.com",
"company_linkedin_url": "https://www.linkedin.com/company/acme",
"personas": [
{
"name": "Tech Leaders",
"job_titles": [
"CTO",
"VP Engineering"
]
}
],
"limit": 10,
"custom": {
"id": "12356",
"provider": "lonescale"
},
"webhook_url": "https://api.example.com/webhooks/enrichment"
}
'import requests
url = "https://public-api.lonescale.com/trigger/contact-sourcing"
payload = {
"company_name": "Acme Corp",
"company_domain": "acme.com",
"company_linkedin_url": "https://www.linkedin.com/company/acme",
"personas": [
{
"name": "Tech Leaders",
"job_titles": ["CTO", "VP Engineering"]
}
],
"limit": 10,
"custom": {
"id": "12356",
"provider": "lonescale"
},
"webhook_url": "https://api.example.com/webhooks/enrichment"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
company_name: 'Acme Corp',
company_domain: 'acme.com',
company_linkedin_url: 'https://www.linkedin.com/company/acme',
personas: [{name: 'Tech Leaders', job_titles: ['CTO', 'VP Engineering']}],
limit: 10,
custom: {id: '12356', provider: 'lonescale'},
webhook_url: 'https://api.example.com/webhooks/enrichment'
})
};
fetch('https://public-api.lonescale.com/trigger/contact-sourcing', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://public-api.lonescale.com/trigger/contact-sourcing",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'company_name' => 'Acme Corp',
'company_domain' => 'acme.com',
'company_linkedin_url' => 'https://www.linkedin.com/company/acme',
'personas' => [
[
'name' => 'Tech Leaders',
'job_titles' => [
'CTO',
'VP Engineering'
]
]
],
'limit' => 10,
'custom' => [
'id' => '12356',
'provider' => 'lonescale'
],
'webhook_url' => 'https://api.example.com/webhooks/enrichment'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://public-api.lonescale.com/trigger/contact-sourcing"
payload := strings.NewReader("{\n \"company_name\": \"Acme Corp\",\n \"company_domain\": \"acme.com\",\n \"company_linkedin_url\": \"https://www.linkedin.com/company/acme\",\n \"personas\": [\n {\n \"name\": \"Tech Leaders\",\n \"job_titles\": [\n \"CTO\",\n \"VP Engineering\"\n ]\n }\n ],\n \"limit\": 10,\n \"custom\": {\n \"id\": \"12356\",\n \"provider\": \"lonescale\"\n },\n \"webhook_url\": \"https://api.example.com/webhooks/enrichment\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://public-api.lonescale.com/trigger/contact-sourcing")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"company_name\": \"Acme Corp\",\n \"company_domain\": \"acme.com\",\n \"company_linkedin_url\": \"https://www.linkedin.com/company/acme\",\n \"personas\": [\n {\n \"name\": \"Tech Leaders\",\n \"job_titles\": [\n \"CTO\",\n \"VP Engineering\"\n ]\n }\n ],\n \"limit\": 10,\n \"custom\": {\n \"id\": \"12356\",\n \"provider\": \"lonescale\"\n },\n \"webhook_url\": \"https://api.example.com/webhooks/enrichment\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.lonescale.com/trigger/contact-sourcing")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"company_name\": \"Acme Corp\",\n \"company_domain\": \"acme.com\",\n \"company_linkedin_url\": \"https://www.linkedin.com/company/acme\",\n \"personas\": [\n {\n \"name\": \"Tech Leaders\",\n \"job_titles\": [\n \"CTO\",\n \"VP Engineering\"\n ]\n }\n ],\n \"limit\": 10,\n \"custom\": {\n \"id\": \"12356\",\n \"provider\": \"lonescale\"\n },\n \"webhook_url\": \"https://api.example.com/webhooks/enrichment\"\n}"
response = http.request(request)
puts response.read_body"Sourcing started for company Acme Corp"{
"message": "Bad request",
"error": "Bad request",
"statusCode": 400
}{
"message": "Invalid API Key",
"error": "Unauthorized",
"statusCode": 401
}Search Contacts
Search Contacts.
LoneScale will call your webhook_url with this payload once the job is completed.
See the Sourcing payload documentation for the full webhook schema.
curl --request POST \
--url https://public-api.lonescale.com/trigger/contact-sourcing \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"company_name": "Acme Corp",
"company_domain": "acme.com",
"company_linkedin_url": "https://www.linkedin.com/company/acme",
"personas": [
{
"name": "Tech Leaders",
"job_titles": [
"CTO",
"VP Engineering"
]
}
],
"limit": 10,
"custom": {
"id": "12356",
"provider": "lonescale"
},
"webhook_url": "https://api.example.com/webhooks/enrichment"
}
'import requests
url = "https://public-api.lonescale.com/trigger/contact-sourcing"
payload = {
"company_name": "Acme Corp",
"company_domain": "acme.com",
"company_linkedin_url": "https://www.linkedin.com/company/acme",
"personas": [
{
"name": "Tech Leaders",
"job_titles": ["CTO", "VP Engineering"]
}
],
"limit": 10,
"custom": {
"id": "12356",
"provider": "lonescale"
},
"webhook_url": "https://api.example.com/webhooks/enrichment"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
company_name: 'Acme Corp',
company_domain: 'acme.com',
company_linkedin_url: 'https://www.linkedin.com/company/acme',
personas: [{name: 'Tech Leaders', job_titles: ['CTO', 'VP Engineering']}],
limit: 10,
custom: {id: '12356', provider: 'lonescale'},
webhook_url: 'https://api.example.com/webhooks/enrichment'
})
};
fetch('https://public-api.lonescale.com/trigger/contact-sourcing', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://public-api.lonescale.com/trigger/contact-sourcing",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'company_name' => 'Acme Corp',
'company_domain' => 'acme.com',
'company_linkedin_url' => 'https://www.linkedin.com/company/acme',
'personas' => [
[
'name' => 'Tech Leaders',
'job_titles' => [
'CTO',
'VP Engineering'
]
]
],
'limit' => 10,
'custom' => [
'id' => '12356',
'provider' => 'lonescale'
],
'webhook_url' => 'https://api.example.com/webhooks/enrichment'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://public-api.lonescale.com/trigger/contact-sourcing"
payload := strings.NewReader("{\n \"company_name\": \"Acme Corp\",\n \"company_domain\": \"acme.com\",\n \"company_linkedin_url\": \"https://www.linkedin.com/company/acme\",\n \"personas\": [\n {\n \"name\": \"Tech Leaders\",\n \"job_titles\": [\n \"CTO\",\n \"VP Engineering\"\n ]\n }\n ],\n \"limit\": 10,\n \"custom\": {\n \"id\": \"12356\",\n \"provider\": \"lonescale\"\n },\n \"webhook_url\": \"https://api.example.com/webhooks/enrichment\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://public-api.lonescale.com/trigger/contact-sourcing")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"company_name\": \"Acme Corp\",\n \"company_domain\": \"acme.com\",\n \"company_linkedin_url\": \"https://www.linkedin.com/company/acme\",\n \"personas\": [\n {\n \"name\": \"Tech Leaders\",\n \"job_titles\": [\n \"CTO\",\n \"VP Engineering\"\n ]\n }\n ],\n \"limit\": 10,\n \"custom\": {\n \"id\": \"12356\",\n \"provider\": \"lonescale\"\n },\n \"webhook_url\": \"https://api.example.com/webhooks/enrichment\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.lonescale.com/trigger/contact-sourcing")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"company_name\": \"Acme Corp\",\n \"company_domain\": \"acme.com\",\n \"company_linkedin_url\": \"https://www.linkedin.com/company/acme\",\n \"personas\": [\n {\n \"name\": \"Tech Leaders\",\n \"job_titles\": [\n \"CTO\",\n \"VP Engineering\"\n ]\n }\n ],\n \"limit\": 10,\n \"custom\": {\n \"id\": \"12356\",\n \"provider\": \"lonescale\"\n },\n \"webhook_url\": \"https://api.example.com/webhooks/enrichment\"\n}"
response = http.request(request)
puts response.read_body"Sourcing started for company Acme Corp"{
"message": "Bad request",
"error": "Bad request",
"statusCode": 400
}{
"message": "Invalid API Key",
"error": "Unauthorized",
"statusCode": 401
}Authorizations
Provide your API key in the x-api-key header.
Body
Company domain or website to search contacts from.
Personas to use to search and filter contacts within the company
1Show child attributes
Show child attributes
Webhook endpoint to receive results.
Company name to search contacts from.
Company LinkedIn URL used to search contacts, increasing result coverage and accuracy by 25%.
List of country codes (ISO 3166-1 alpha-2) to include in the search.
ISO 3166-1 alpha-2 country code
AF, AL, DZ, AS, AD, AO, AI, AQ, AG, AR, AM, AW, AU, AT, AZ, BS, BH, BD, BB, BY, BE, BZ, BJ, BM, BT, BO, BQ, BA, BW, BV, BR, IO, BN, BG, BF, BI, CV, KH, CM, CA, KY, CF, TD, CL, CN, CX, CC, CO, KM, CD, CG, CK, CR, HR, CU, CW, CY, CZ, CI, DK, DJ, DM, DO, EC, EG, SV, GQ, ER, EE, SZ, ET, FK, FO, FJ, FI, FR, GF, PF, TF, GA, GM, GE, DE, GH, GI, GR, GL, GD, GP, GU, GT, GG, GN, GW, GY, HT, HM, HN, HK, HU, IS, IN, ID, IR, IQ, IE, IM, IL, IT, JM, JP, JE, JO, KZ, KE, KI, KR, KW, KG, LA, LV, LB, LS, LR, LY, LI, LT, LU, MO, MG, MW, MY, MV, ML, MT, MH, MQ, MR, MU, YT, MX, FM, MD, MC, MN, ME, MS, MA, MZ, MM, NA, NR, NP, NL, NC, NZ, NI, NE, NG, NU, NF, MP, NO, OM, PK, PW, PS, PA, PG, PY, PE, PH, PN, PL, PT, PR, QA, MK, RO, RU, RW, RE, BL, SH, KN, LC, MF, PM, VC, WS, SM, ST, SA, SN, RS, SC, SL, SG, SX, SK, SI, SB, SO, ZA, GS, SS, ES, LK, SD, SR, SJ, SE, CH, SY, TW, TJ, TZ, TH, TL, TG, TK, TO, TT, TN, TR, TM, TC, TV, UG, UA, AE, GB, UM, US, UY, UZ, VU, VE, VN, VG, VI, WF, EH, YE, ZM, ZW, AX List of city names to filter contacts by. Unlike included_locations, cities are not used as a search filter: contacts are sourced first, then only those whose location contains one of these cities are returned. City spelling is revalidated against included_locations, so both local and English spellings work (Bruxelles / Brussels, Zürich / Zurich), and combining included_cities: ["Paris"] with included_locations: ["FR"] excludes Paris, Texas. A contact whose city cannot be determined is not returned.
["Paris", "Lyon"]
Defines the maximum number of contacts to retrieve
Disable enrichment of company information for each contact, such as industry, size, etc. This option is useful if you only want to retrieve contact information without any company details.
List of seniority levels to filter contacts by.
Seniority level of a contact.
owner, founder, c-suite, partner, vp, head, director, manager, senior, entry, intern Show child attributes
Show child attributes
Response
Sourcing contacts successfully created
Response indicating the sourcing job has been created.
"Sourcing started for company Acme Corp"

