curl --request POST \
--url https://api.aws53.cloud/v1/data/companies/query \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"window": "30d",
"timezone": "UTC",
"classification": "company",
"industries": [
"Software"
],
"employeeMin": 10,
"employeeMax": 500,
"page": 1,
"limit": 25,
"sort": "lastSeen",
"direction": "desc"
}
'import requests
url = "https://api.aws53.cloud/v1/data/companies/query"
payload = {
"window": "30d",
"timezone": "UTC",
"classification": "company",
"industries": ["Software"],
"employeeMin": 10,
"employeeMax": 500,
"page": 1,
"limit": 25,
"sort": "lastSeen",
"direction": "desc"
}
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({
window: '30d',
timezone: 'UTC',
classification: 'company',
industries: ['Software'],
employeeMin: 10,
employeeMax: 500,
page: 1,
limit: 25,
sort: 'lastSeen',
direction: 'desc'
})
};
fetch('https://api.aws53.cloud/v1/data/companies/query', 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://api.aws53.cloud/v1/data/companies/query",
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([
'window' => '30d',
'timezone' => 'UTC',
'classification' => 'company',
'industries' => [
'Software'
],
'employeeMin' => 10,
'employeeMax' => 500,
'page' => 1,
'limit' => 25,
'sort' => 'lastSeen',
'direction' => 'desc'
]),
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://api.aws53.cloud/v1/data/companies/query"
payload := strings.NewReader("{\n \"window\": \"30d\",\n \"timezone\": \"UTC\",\n \"classification\": \"company\",\n \"industries\": [\n \"Software\"\n ],\n \"employeeMin\": 10,\n \"employeeMax\": 500,\n \"page\": 1,\n \"limit\": 25,\n \"sort\": \"lastSeen\",\n \"direction\": \"desc\"\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://api.aws53.cloud/v1/data/companies/query")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"window\": \"30d\",\n \"timezone\": \"UTC\",\n \"classification\": \"company\",\n \"industries\": [\n \"Software\"\n ],\n \"employeeMin\": 10,\n \"employeeMax\": 500,\n \"page\": 1,\n \"limit\": 25,\n \"sort\": \"lastSeen\",\n \"direction\": \"desc\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aws53.cloud/v1/data/companies/query")
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 \"window\": \"30d\",\n \"timezone\": \"UTC\",\n \"classification\": \"company\",\n \"industries\": [\n \"Software\"\n ],\n \"employeeMin\": 10,\n \"employeeMax\": 500,\n \"page\": 1,\n \"limit\": 25,\n \"sort\": \"lastSeen\",\n \"direction\": \"desc\"\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"companyKey": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"company": {
"businessCategory": "Enterprise Business",
"businessSegment": "Software & Technology",
"dataCompleteness": "Detailed",
"isInternetProvider": false,
"classification": "company",
"name": "Example Software",
"website": "example.test",
"tradeName": "Example",
"industry": "Software",
"subIndustry": "Business Software",
"linkedinUrl": "https://www.linkedin.com/company/example-company",
"employeeCount": 100,
"companyProfile": {
"id": "123456",
"name": "Example Software",
"linkedinUrl": "https://www.linkedin.com/company/123456/",
"sourceLinkedinUrl": "https://www.linkedin.com/company/example-company",
"slug": "example-company",
"platform": "linkedin",
"website": "https://example.test/",
"domain": "example.test",
"description": "Synthetic company profile.",
"tagline": null,
"industries": [
"Software"
],
"specialties": [
"Analytics"
],
"employeeCount": 100,
"employeeCountRange": "51-200",
"studentCount": null,
"foundedYear": 2015,
"headquarters": null,
"headquartersPostalCode": null,
"latitude": null,
"longitude": null,
"offices": [
{
"city": "Example City",
"state": "Example State",
"region": null,
"country": "US",
"address": null,
"postalCode": null,
"description": null,
"isHeadquarters": true
}
],
"phone": null,
"logoUrl": null,
"logoB2Url": null,
"coverUrl": null,
"coverB2Url": null,
"followerCount": 500,
"isVerified": false,
"pageType": null,
"jobSearchUrl": null,
"hashtags": [],
"similarCompanyIds": [],
"callToAction": null,
"source": "everyinfra",
"fetchedAt": "2026-09-11T12:00:00.000Z",
"sourceUpdatedAt": null
},
"annualSales": 1000000,
"revenueRange": "1M-10M",
"primaryNaics": "513210",
"primarySic": "7372",
"city": "Example City",
"state": "Example State",
"postalCode": "12345",
"countryCode": "US",
"countryName": "United States",
"companyId": "example-company-1",
"status": "ok",
"sourceVersion": "1",
"accessType": "corporate",
"lookedUpAt": "2026-09-11T12:00:00.000Z"
},
"events": 4,
"pageviews": 3,
"distinctIps": 2,
"firstSeen": "2026-09-10T10:00:00.000Z",
"lastSeen": "2026-09-11T11:00:00.000Z",
"checkedAt": "2026-09-11T12:00:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 25,
"hasMore": false
},
"meta": {
"from": "2026-08-12T12:00:00.000Z",
"to": "2026-09-11T12:00:00.000Z",
"timezone": "UTC",
"asOf": "2026-09-11T12:00:00.000Z",
"association": "latest_known_ip_company",
"historyComplete": false,
"coverageFrom": "2026-08-12T12:00:00.000Z",
"coverageTo": "2026-09-11T12:00:00.000Z",
"initialBackfillComplete": false,
"ingestionCursorAt": null,
"coverageUpdatedAt": "2026-09-11T12:00:00.000Z"
}
}List visiting companies via API key
Requires an active X-API-Key belonging to an organization with Company ID permission and an active white-label. The API key determines the organization; caller-supplied organization IDs are not accepted. Person-data API and single-IP lookup permissions are not required. Explicit pixels must belong to the API-key organization and must not be deleted. Omitted pixel scope includes the organization’s pixels; an empty pixelIds array on the list selects no pixels. Active, lifetime and unexpired trial organizations qualify; an explicit white-label Company ID grant also permits expired organizations and ended trials. Suspended organizations are excluded. Both company visitor operations share a limit of 60 requests per 60 seconds per client IP. Use RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset for pacing, and Retry-After after 429. Custom date ranges cannot exceed 366 days. Bot activity is excluded. classification defaults to company, a view including company and unclassified_organization associations but excluding ISPs; select isp or unclassified_organization to inspect only that subset. Blank names and Unknown company placeholders are excluded from every view, ignoring case and surrounding whitespace. Response classification preserves the evidence classification: company can use explicit provider company-match evidence even on an ISP connection; legacy results require corporate access and explicit non-ISP evidence; inclusion in the Companies view does not upgrade unclassified evidence. View membership filters IP associations before grouping and counting; IP counts are not people counts. Company attributes are the latest known IP association, not proof of historical IP ownership or visitor employment. An ISP classification does not prove a residential location. Source values are preserved under camelCase field names, including nullable isInternetProvider and accessType; classification is the separate computed interpretation. Dates default to the last 30 days in UTC. A preset window and custom from/to are mutually exclusive; custom dates require both boundaries. companyProfile contains stored company enrichment including industry, employee range, description, offices, founded year, website, branding and retrieval time; it is null when no unambiguous cached company match exists. Reads do not start a paid lookup. Company enrichment and visit processing are asynchronous; asOf is the response time, not a completeness watermark. Initial history is populated for 30 days. Coverage boundaries describe the initial capture target; initialBackfillComplete describes event-copy progress, not enrichment completion. ingestionCursorAt is available only after initial backfill and describes source ingestion progress, not visit completeness. Null coverage means processing has not started. historyComplete remains false because observed source events cannot prove complete visitor capture. Responses contain no full IP addresses or personal profiles. Dashboard company admission consumes one shared Company Credit per organization/company/billing period; successful API lookups use that same allowance per request. Reads and refreshes are free. Only admitted company/unclassified results are visible; previously admitted companies remain visible after exhaustion. ISP-only results are not charged as dashboard companies. Filters combine with AND; values within one facet combine with OR. Name/website and LinkedIn searches are case-insensitive substrings. Unknown employee counts are included in the smallest band (employeeMax at most 50 and employeeMin omitted, 0 or 1); other numeric ranges exclude unknown counts. Page pagination defaults to page 1 and 25 companies, maximum 100 per page and page 1000. Ordering defaults to lastSeen descending with companyKey as a deterministic tie-breaker. Each request resolves its own date boundary; results can change between pages as activity arrives. Empty pages return data: []. Dedicated admin API credentials also authorize platform-wide management, including white-label targets; customer bearer/API-key restrictions described above remain unchanged. Existing resource validation and business-state rules still apply.
curl --request POST \
--url https://api.aws53.cloud/v1/data/companies/query \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"window": "30d",
"timezone": "UTC",
"classification": "company",
"industries": [
"Software"
],
"employeeMin": 10,
"employeeMax": 500,
"page": 1,
"limit": 25,
"sort": "lastSeen",
"direction": "desc"
}
'import requests
url = "https://api.aws53.cloud/v1/data/companies/query"
payload = {
"window": "30d",
"timezone": "UTC",
"classification": "company",
"industries": ["Software"],
"employeeMin": 10,
"employeeMax": 500,
"page": 1,
"limit": 25,
"sort": "lastSeen",
"direction": "desc"
}
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({
window: '30d',
timezone: 'UTC',
classification: 'company',
industries: ['Software'],
employeeMin: 10,
employeeMax: 500,
page: 1,
limit: 25,
sort: 'lastSeen',
direction: 'desc'
})
};
fetch('https://api.aws53.cloud/v1/data/companies/query', 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://api.aws53.cloud/v1/data/companies/query",
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([
'window' => '30d',
'timezone' => 'UTC',
'classification' => 'company',
'industries' => [
'Software'
],
'employeeMin' => 10,
'employeeMax' => 500,
'page' => 1,
'limit' => 25,
'sort' => 'lastSeen',
'direction' => 'desc'
]),
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://api.aws53.cloud/v1/data/companies/query"
payload := strings.NewReader("{\n \"window\": \"30d\",\n \"timezone\": \"UTC\",\n \"classification\": \"company\",\n \"industries\": [\n \"Software\"\n ],\n \"employeeMin\": 10,\n \"employeeMax\": 500,\n \"page\": 1,\n \"limit\": 25,\n \"sort\": \"lastSeen\",\n \"direction\": \"desc\"\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://api.aws53.cloud/v1/data/companies/query")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"window\": \"30d\",\n \"timezone\": \"UTC\",\n \"classification\": \"company\",\n \"industries\": [\n \"Software\"\n ],\n \"employeeMin\": 10,\n \"employeeMax\": 500,\n \"page\": 1,\n \"limit\": 25,\n \"sort\": \"lastSeen\",\n \"direction\": \"desc\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aws53.cloud/v1/data/companies/query")
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 \"window\": \"30d\",\n \"timezone\": \"UTC\",\n \"classification\": \"company\",\n \"industries\": [\n \"Software\"\n ],\n \"employeeMin\": 10,\n \"employeeMax\": 500,\n \"page\": 1,\n \"limit\": 25,\n \"sort\": \"lastSeen\",\n \"direction\": \"desc\"\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"companyKey": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"company": {
"businessCategory": "Enterprise Business",
"businessSegment": "Software & Technology",
"dataCompleteness": "Detailed",
"isInternetProvider": false,
"classification": "company",
"name": "Example Software",
"website": "example.test",
"tradeName": "Example",
"industry": "Software",
"subIndustry": "Business Software",
"linkedinUrl": "https://www.linkedin.com/company/example-company",
"employeeCount": 100,
"companyProfile": {
"id": "123456",
"name": "Example Software",
"linkedinUrl": "https://www.linkedin.com/company/123456/",
"sourceLinkedinUrl": "https://www.linkedin.com/company/example-company",
"slug": "example-company",
"platform": "linkedin",
"website": "https://example.test/",
"domain": "example.test",
"description": "Synthetic company profile.",
"tagline": null,
"industries": [
"Software"
],
"specialties": [
"Analytics"
],
"employeeCount": 100,
"employeeCountRange": "51-200",
"studentCount": null,
"foundedYear": 2015,
"headquarters": null,
"headquartersPostalCode": null,
"latitude": null,
"longitude": null,
"offices": [
{
"city": "Example City",
"state": "Example State",
"region": null,
"country": "US",
"address": null,
"postalCode": null,
"description": null,
"isHeadquarters": true
}
],
"phone": null,
"logoUrl": null,
"logoB2Url": null,
"coverUrl": null,
"coverB2Url": null,
"followerCount": 500,
"isVerified": false,
"pageType": null,
"jobSearchUrl": null,
"hashtags": [],
"similarCompanyIds": [],
"callToAction": null,
"source": "everyinfra",
"fetchedAt": "2026-09-11T12:00:00.000Z",
"sourceUpdatedAt": null
},
"annualSales": 1000000,
"revenueRange": "1M-10M",
"primaryNaics": "513210",
"primarySic": "7372",
"city": "Example City",
"state": "Example State",
"postalCode": "12345",
"countryCode": "US",
"countryName": "United States",
"companyId": "example-company-1",
"status": "ok",
"sourceVersion": "1",
"accessType": "corporate",
"lookedUpAt": "2026-09-11T12:00:00.000Z"
},
"events": 4,
"pageviews": 3,
"distinctIps": 2,
"firstSeen": "2026-09-10T10:00:00.000Z",
"lastSeen": "2026-09-11T11:00:00.000Z",
"checkedAt": "2026-09-11T12:00:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 25,
"hasMore": false
},
"meta": {
"from": "2026-08-12T12:00:00.000Z",
"to": "2026-09-11T12:00:00.000Z",
"timezone": "UTC",
"asOf": "2026-09-11T12:00:00.000Z",
"association": "latest_known_ip_company",
"historyComplete": false,
"coverageFrom": "2026-08-12T12:00:00.000Z",
"coverageTo": "2026-09-11T12:00:00.000Z",
"initialBackfillComplete": false,
"ingestionCursorAt": null,
"coverageUpdatedAt": "2026-09-11T12:00:00.000Z"
}
}Authorizations
Headers
Optional tenant context for admin-key operations without an organization target, such as creating an organization. Defaults to the master tenant. Must match an explicit target organization when both are supplied. Does not limit the key’s platform authority.
1 - 100Target organization for admin-key requests on organization-context routes, including Data API, intent audiences and dashboard routes without an organization path parameter. Required on those routes. When supplied with an organization path parameter, both must identify the same organization; conflicting targets return 400. Does not grant access to customer credentials.
Body
Dashboard view. Defaults to company, which includes company and unclassified_organization associations but excludes ISPs. Select isp for ISP associations only, or unclassified_organization for that subset only. Blank names and Unknown company placeholders are excluded from every view, ignoring case and surrounding whitespace. Response classification preserves the evidence classification, not the selected view. No company found results are not listed.
company, isp, unclassified_organization "company"
Was this page helpful?