Get Website Visits
Returns companies ranked by website-visit signals for your tracked domains and date range, with score, sessions, and unique visitor metrics.
POST
/
v3
/
companies
/
website-visits
Get Website Visitors
curl --request POST \
--url https://api.lusha.com/v3/companies/website-visits \
--header 'Content-Type: application/json' \
--header 'api_key: <api-key>' \
--data '
{
"domains": [
"lusha.com",
"google.com"
],
"startDate": "2026-01-01",
"endDate": "2026-03-18",
"pagination": {
"size": 25,
"page": 0
},
"sort": {
"by": "score",
"order": "desc"
},
"filters": {
"scoreBands": [
"hot",
"warm"
],
"score": {
"min": 50
}
}
}
'import requests
url = "https://api.lusha.com/v3/companies/website-visits"
payload = {
"domains": ["lusha.com", "google.com"],
"startDate": "2026-01-01",
"endDate": "2026-03-18",
"pagination": {
"size": 25,
"page": 0
},
"sort": {
"by": "score",
"order": "desc"
},
"filters": {
"scoreBands": ["hot", "warm"],
"score": { "min": 50 }
}
}
headers = {
"api_key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {api_key: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
domains: ['lusha.com', 'google.com'],
startDate: '2026-01-01',
endDate: '2026-03-18',
pagination: {size: 25, page: 0},
sort: {by: 'score', order: 'desc'},
filters: {scoreBands: ['hot', 'warm'], score: {min: 50}}
})
};
fetch('https://api.lusha.com/v3/companies/website-visits', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.post("https://api.lusha.com/v3/companies/website-visits")
.header("api_key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"domains\": [\n \"lusha.com\",\n \"google.com\"\n ],\n \"startDate\": \"2026-01-01\",\n \"endDate\": \"2026-03-18\",\n \"pagination\": {\n \"size\": 25,\n \"page\": 0\n },\n \"sort\": {\n \"by\": \"score\",\n \"order\": \"desc\"\n },\n \"filters\": {\n \"scoreBands\": [\n \"hot\",\n \"warm\"\n ],\n \"score\": {\n \"min\": 50\n }\n }\n}")
.asString();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.lusha.com/v3/companies/website-visits"
payload := strings.NewReader("{\n \"domains\": [\n \"lusha.com\",\n \"google.com\"\n ],\n \"startDate\": \"2026-01-01\",\n \"endDate\": \"2026-03-18\",\n \"pagination\": {\n \"size\": 25,\n \"page\": 0\n },\n \"sort\": {\n \"by\": \"score\",\n \"order\": \"desc\"\n },\n \"filters\": {\n \"scoreBands\": [\n \"hot\",\n \"warm\"\n ],\n \"score\": {\n \"min\": 50\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("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))
}{
"requestId": "1c2d3e4f-5a6b-7c8d-9e0f-1a2b3c4d5e6f",
"results": [
{
"id": "16303253",
"name": "Lusha",
"domain": "www.lusha.com",
"industry": "Technology, Information & Media",
"location": {
"city": "London",
"state": "England",
"country": "United Kingdom",
"countryIso2": "GB",
"continent": "Europe"
},
"score": 87,
"scoreBand": "hot",
"totalSessions": 12,
"uniqueVisitors": 5,
"avgSessionMinutes": 4.2,
"daysVisited": 8,
"highIntentPageviews": 10,
"daysSinceLastVisit": 6,
"lastVisit": "2026-03-20",
"visitorCountry": "US"
}
],
"pagination": {
"page": 0,
"size": 25,
"total": 142
},
"billing": {
"creditsCharged": 3,
"resultsReturned": 1
}
}
Beta. This endpoint’s request and response shape may change before general availability.
Domains must already be configured for tracking in the Lusha dashboard - they’re resolved to site IDs server-side. If any requested domain isn’t configured for tracking, the entire request fails with
400.Endpoint
POST https://api.lusha.com/v3/companies/website-visits
ApiKeyAuth)
Request body
string[]
required
Tracked domains to pull visit data for. At least 1 item.Example:
["lusha.com", "google.com"]string
required
Start of the date range, in
YYYY-MM-DD format.Example: "2026-01-01"string
required
End of the date range, in
YYYY-MM-DD format.Example: "2026-03-18"The
startDate–endDate range must be 3 months or less.object
required
object
object
Optional filters to narrow results.
Show filters fields
Show filters fields
string[]
Restrict results to companies in these engagement bands.Allowed values:
cold, warm, hotobject
object
Integer range filter,
{ "min": 0, "max": 100 }. Both bounds optional.object
Integer range filter on total sessions.
object
Integer range filter on unique visitor count.
object
Integer range filter on distinct days visited.
object
Integer range filter on high-intent pageviews.
object
Integer range filter on days since the last visit.
object
Float range filter (
{ "min": ..., "max": ... }) on average session duration in minutes.Example request
curl --request POST \
--url https://api.lusha.com/v3/companies/website-visits \
--header 'api_key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"domains": ["lusha.com", "google.com"],
"startDate": "2026-01-01",
"endDate": "2026-03-18",
"pagination": { "size": 25, "page": 0 },
"sort": { "by": "score", "order": "desc" },
"filters": {
"scoreBands": ["hot", "warm"],
"score": { "min": 50 }
}
}'
{
"domains": ["lusha.com", "google.com"],
"startDate": "2026-01-01",
"endDate": "2026-03-18",
"pagination": { "size": 25, "page": 0 },
"sort": { "by": "score", "order": "desc" },
"filters": {
"scoreBands": ["hot", "warm"],
"score": { "min": 50 }
}
}
Response
200 - Success
string
UUID identifying this request.
object[]
Companies ranked by visit behavior. Each result is a company firmographic preview plus visit metrics.
Show properties
Show properties
string
Lusha company ID. Example:
"16303253"string
Example:
"Lusha"string
Example:
"www.lusha.com"string
Example:
"Technology, Information & Media"object
string[]
Fields already available on this preview. Example:
["alternativeName", "description", "companyType", "employeesByDepartment", "competitors", "emails", "socialLinks"]object[]
Fields you can reveal, and their credit cost. Same shape as
canReveal on contact previews (field, credits).string[]
Signal types currently associated with this company, if any.
object
Present when this company couldn’t be resolved. Has
code (NOT_FOUND, COMPLIANCE_RESTRICTED, or ENRICH_FAILED) and message.number
Engagement score. Example:
87string
One of
cold, warm, hot. Example: "hot"number
Example:
12number
Example:
5number
Example:
4.2number
Example:
8number
Example:
10number
Example:
6string
Date of the most recent visit. Example:
"2026-03-20"string
Example:
"US"object
{
"requestId": "1c2d3e4f-5a6b-7c8d-9e0f-1a2b3c4d5e6f",
"results": [
{
"id": "16303253",
"name": "Lusha",
"domain": "www.lusha.com",
"industry": "Technology, Information & Media",
"location": {
"city": "London",
"state": "England",
"country": "United Kingdom",
"countryIso2": "GB",
"continent": "Europe"
},
"score": 87,
"scoreBand": "hot",
"totalSessions": 12,
"uniqueVisitors": 5,
"avgSessionMinutes": 4.2,
"daysVisited": 8,
"highIntentPageviews": 10,
"daysSinceLastVisit": 6,
"lastVisit": "2026-03-20",
"visitorCountry": "US"
}
],
"pagination": {
"page": 0,
"size": 25,
"total": 142
},
"billing": {
"creditsCharged": 3,
"resultsReturned": 1
}
}
Error codes
| Status | Meaning |
|---|---|
400 | Bad request - invalid input, a domain isn’t configured for tracking, or the date range exceeds 3 months. |
401 | Unauthorized - your API key is missing or invalid. |
402 | Payment required - insufficient credits. |
403 | Forbidden - account inactive or V3 access not enabled. |
429 | Too many requests - you have exceeded the rate limit. |
Related pages
- Website Visits overview - domain-tracking setup and the 3-month range limit
Authorizations
Your Lusha API key. You can find this in your Lusha dashboard under API settings.
Include this key in the api_key header for all requests.
Body
application/json
Domains configured for tracking in the Lusha dashboard.
Minimum array length:
1Example:
["lusha.com", "google.com"]
Window start date (YYYY-MM-DD).
Example:
"2026-01-01"
Window end date (YYYY-MM-DD). Range must be ≤ 3 months.
Example:
"2026-03-18"
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?
⌘I
Get Website Visitors
curl --request POST \
--url https://api.lusha.com/v3/companies/website-visits \
--header 'Content-Type: application/json' \
--header 'api_key: <api-key>' \
--data '
{
"domains": [
"lusha.com",
"google.com"
],
"startDate": "2026-01-01",
"endDate": "2026-03-18",
"pagination": {
"size": 25,
"page": 0
},
"sort": {
"by": "score",
"order": "desc"
},
"filters": {
"scoreBands": [
"hot",
"warm"
],
"score": {
"min": 50
}
}
}
'import requests
url = "https://api.lusha.com/v3/companies/website-visits"
payload = {
"domains": ["lusha.com", "google.com"],
"startDate": "2026-01-01",
"endDate": "2026-03-18",
"pagination": {
"size": 25,
"page": 0
},
"sort": {
"by": "score",
"order": "desc"
},
"filters": {
"scoreBands": ["hot", "warm"],
"score": { "min": 50 }
}
}
headers = {
"api_key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {api_key: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
domains: ['lusha.com', 'google.com'],
startDate: '2026-01-01',
endDate: '2026-03-18',
pagination: {size: 25, page: 0},
sort: {by: 'score', order: 'desc'},
filters: {scoreBands: ['hot', 'warm'], score: {min: 50}}
})
};
fetch('https://api.lusha.com/v3/companies/website-visits', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.post("https://api.lusha.com/v3/companies/website-visits")
.header("api_key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"domains\": [\n \"lusha.com\",\n \"google.com\"\n ],\n \"startDate\": \"2026-01-01\",\n \"endDate\": \"2026-03-18\",\n \"pagination\": {\n \"size\": 25,\n \"page\": 0\n },\n \"sort\": {\n \"by\": \"score\",\n \"order\": \"desc\"\n },\n \"filters\": {\n \"scoreBands\": [\n \"hot\",\n \"warm\"\n ],\n \"score\": {\n \"min\": 50\n }\n }\n}")
.asString();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.lusha.com/v3/companies/website-visits"
payload := strings.NewReader("{\n \"domains\": [\n \"lusha.com\",\n \"google.com\"\n ],\n \"startDate\": \"2026-01-01\",\n \"endDate\": \"2026-03-18\",\n \"pagination\": {\n \"size\": 25,\n \"page\": 0\n },\n \"sort\": {\n \"by\": \"score\",\n \"order\": \"desc\"\n },\n \"filters\": {\n \"scoreBands\": [\n \"hot\",\n \"warm\"\n ],\n \"score\": {\n \"min\": 50\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("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))
}{
"requestId": "1c2d3e4f-5a6b-7c8d-9e0f-1a2b3c4d5e6f",
"results": [
{
"id": "16303253",
"name": "Lusha",
"domain": "www.lusha.com",
"industry": "Technology, Information & Media",
"location": {
"city": "London",
"state": "England",
"country": "United Kingdom",
"countryIso2": "GB",
"continent": "Europe"
},
"score": 87,
"scoreBand": "hot",
"totalSessions": 12,
"uniqueVisitors": 5,
"avgSessionMinutes": 4.2,
"daysVisited": 8,
"highIntentPageviews": 10,
"daysSinceLastVisit": 6,
"lastVisit": "2026-03-20",
"visitorCountry": "US"
}
],
"pagination": {
"page": 0,
"size": 25,
"total": 142
},
"billing": {
"creditsCharged": 3,
"resultsReturned": 1
}
}