curl --request POST \
--url https://api.aws53.cloud/v1/data/query \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"ruleAst": {
"version": 1,
"window": "30d",
"rule": {
"field": "company.name",
"op": "contains",
"value": "Example"
}
},
"page": 1,
"limit": 50,
"window": "30d"
}
'import requests
url = "https://api.aws53.cloud/v1/data/query"
payload = {
"ruleAst": {
"version": 1,
"window": "30d",
"rule": {
"field": "company.name",
"op": "contains",
"value": "Example"
}
},
"page": 1,
"limit": 50,
"window": "30d"
}
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({
ruleAst: {
version: 1,
window: '30d',
rule: {field: 'company.name', op: 'contains', value: 'Example'}
},
page: 1,
limit: 50,
window: '30d'
})
};
fetch('https://api.aws53.cloud/v1/data/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/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([
'ruleAst' => [
'version' => 1,
'window' => '30d',
'rule' => [
'field' => 'company.name',
'op' => 'contains',
'value' => 'Example'
]
],
'page' => 1,
'limit' => 50,
'window' => '30d'
]),
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/query"
payload := strings.NewReader("{\n \"ruleAst\": {\n \"version\": 1,\n \"window\": \"30d\",\n \"rule\": {\n \"field\": \"company.name\",\n \"op\": \"contains\",\n \"value\": \"Example\"\n }\n },\n \"page\": 1,\n \"limit\": 50,\n \"window\": \"30d\"\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/query")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"ruleAst\": {\n \"version\": 1,\n \"window\": \"30d\",\n \"rule\": {\n \"field\": \"company.name\",\n \"op\": \"contains\",\n \"value\": \"Example\"\n }\n },\n \"page\": 1,\n \"limit\": 50,\n \"window\": \"30d\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aws53.cloud/v1/data/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 \"ruleAst\": {\n \"version\": 1,\n \"window\": \"30d\",\n \"rule\": {\n \"field\": \"company.name\",\n \"op\": \"contains\",\n \"value\": \"Example\"\n }\n },\n \"page\": 1,\n \"limit\": 50,\n \"window\": \"30d\"\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"email": "visitor@example.test",
"emailHash": "b4fc5fb69efd3d88836a56aa432758b35b3ee9a4e30848f5d8f5f66209cd2822",
"emailHashes": {
"sha256": "b4fc5fb69efd3d88836a56aa432758b35b3ee9a4e30848f5d8f5f66209cd2822",
"sha1": "e5f6d0c61a56c87aa2e870e8ffd7ce552cd88366",
"md5": "b6321d878decf6402a73283b5f41c0e6"
},
"emails": [
"visitor@example.test"
],
"businessEmails": [
"visitor@example.test"
],
"personalEmails": [],
"phones": [],
"phonesDnc": null,
"firstName": null,
"lastName": null,
"middleName": null,
"fullName": null,
"emailDomain": "example.test",
"allEmails": [
"visitor@example.test"
],
"primaryPhone": null,
"allPhones": null,
"phonesDNC": null,
"ageRange": null,
"gender": null,
"hasChildren": null,
"isHomeowner": null,
"isMarried": null,
"personalAddress": null,
"personalZip": null,
"city": null,
"state": null,
"country": null,
"countryCode": null,
"personalTimezone": null,
"companyName": null,
"companyDomain": null,
"companyLinkedinUrl": null,
"companyAddress": null,
"companyCity": null,
"companyState": null,
"companyCountry": null,
"companyZipCode": null,
"companyEmployeeCount": null,
"companyTotalRevenue": null,
"companySizeRange": null,
"companyRevenueRange": null,
"jobTitle": null,
"headline": null,
"seniority": null,
"seniorityLevel2": null,
"seniorityLevelRaw": null,
"department": null,
"department2": null,
"departmentRaw": null,
"industry": null,
"linkedinUrl": null,
"photoUrl": null,
"linkedinUrn": null,
"skillsSummary": null,
"photoB2Url": null,
"companyLogoB2Url": null,
"company": null,
"companyZip": null,
"companySize": null,
"companySizeCategory": null,
"companyRevenue": null,
"companyIndustry": null,
"seniorityRaw": null,
"sessions": 1,
"pageviews": 1,
"pricingPageViews": 0,
"demoPageViews": 0,
"checkoutPageViews": 0,
"enrichmentLevel": "email_only",
"enrichmentScore": 0,
"intentScore": "low",
"firstSeenAt": "2026-01-01T00:00:00Z",
"lastSeenAt": "2026-01-01T00:00:00Z",
"firstSeen": "2026-01-01T00:00:00Z",
"lastSeen": "2026-01-01T00:00:00Z",
"daysSinceVisit": 0,
"landingPage": "https://www.example.test/",
"visitedPages": [
"https://www.example.test/"
],
"referrer": null,
"referrerDomain": null,
"utmSource": null,
"utmMedium": null,
"utmCampaign": null,
"utmTerm": null,
"utmContent": null,
"gclid": null,
"fbclid": null,
"googleGbraid": null,
"googleWbraid": null,
"googleGadSource": null,
"googleCampaignId": null,
"bingClickId": null,
"linkedinClickId": null,
"klaviyoTrackingId": null,
"hubspotAccountId": null,
"hubspotCampaignId": null,
"hubspotNetwork": null,
"msclkid": null,
"liFatId": null,
"gbraid": null,
"wbraid": null,
"channel": null,
"pixels": [
"11111111-1111-4111-8111-111111111111"
],
"pixelId": "11111111-1111-4111-8111-111111111111",
"pixelDetails": [
{
"id": "11111111-1111-4111-8111-111111111111",
"name": "Example Pixel",
"domain": "www.example.test"
}
],
"domains": [
"www.example.test"
],
"customAttribution": null
}
],
"meta": {
"page": 1,
"limit": 50,
"total": 1,
"totalPages": 1,
"hasMore": false
}
}Query qualified visitor data via API key
Returns identified people matching either one saved segment or one canonical ruleAst for the organization owning the X-API-Key; provide exactly one source. window overrides the rule window for this request, and pixelId restricts matching to one owned pixel. Identity aliases are represented as one person. Results use one-based pagination, are ordered by most recently seen first with a stable identity tie-breaker, and include a frozen traversal boundary and historical-coverage metadata. The qualification-specific rate limit is reported through response headers. This operation reads data and records API-key usage metadata but does not consume visitor-resolution credits.
curl --request POST \
--url https://api.aws53.cloud/v1/data/query \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"ruleAst": {
"version": 1,
"window": "30d",
"rule": {
"field": "company.name",
"op": "contains",
"value": "Example"
}
},
"page": 1,
"limit": 50,
"window": "30d"
}
'import requests
url = "https://api.aws53.cloud/v1/data/query"
payload = {
"ruleAst": {
"version": 1,
"window": "30d",
"rule": {
"field": "company.name",
"op": "contains",
"value": "Example"
}
},
"page": 1,
"limit": 50,
"window": "30d"
}
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({
ruleAst: {
version: 1,
window: '30d',
rule: {field: 'company.name', op: 'contains', value: 'Example'}
},
page: 1,
limit: 50,
window: '30d'
})
};
fetch('https://api.aws53.cloud/v1/data/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/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([
'ruleAst' => [
'version' => 1,
'window' => '30d',
'rule' => [
'field' => 'company.name',
'op' => 'contains',
'value' => 'Example'
]
],
'page' => 1,
'limit' => 50,
'window' => '30d'
]),
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/query"
payload := strings.NewReader("{\n \"ruleAst\": {\n \"version\": 1,\n \"window\": \"30d\",\n \"rule\": {\n \"field\": \"company.name\",\n \"op\": \"contains\",\n \"value\": \"Example\"\n }\n },\n \"page\": 1,\n \"limit\": 50,\n \"window\": \"30d\"\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/query")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"ruleAst\": {\n \"version\": 1,\n \"window\": \"30d\",\n \"rule\": {\n \"field\": \"company.name\",\n \"op\": \"contains\",\n \"value\": \"Example\"\n }\n },\n \"page\": 1,\n \"limit\": 50,\n \"window\": \"30d\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aws53.cloud/v1/data/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 \"ruleAst\": {\n \"version\": 1,\n \"window\": \"30d\",\n \"rule\": {\n \"field\": \"company.name\",\n \"op\": \"contains\",\n \"value\": \"Example\"\n }\n },\n \"page\": 1,\n \"limit\": 50,\n \"window\": \"30d\"\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"email": "visitor@example.test",
"emailHash": "b4fc5fb69efd3d88836a56aa432758b35b3ee9a4e30848f5d8f5f66209cd2822",
"emailHashes": {
"sha256": "b4fc5fb69efd3d88836a56aa432758b35b3ee9a4e30848f5d8f5f66209cd2822",
"sha1": "e5f6d0c61a56c87aa2e870e8ffd7ce552cd88366",
"md5": "b6321d878decf6402a73283b5f41c0e6"
},
"emails": [
"visitor@example.test"
],
"businessEmails": [
"visitor@example.test"
],
"personalEmails": [],
"phones": [],
"phonesDnc": null,
"firstName": null,
"lastName": null,
"middleName": null,
"fullName": null,
"emailDomain": "example.test",
"allEmails": [
"visitor@example.test"
],
"primaryPhone": null,
"allPhones": null,
"phonesDNC": null,
"ageRange": null,
"gender": null,
"hasChildren": null,
"isHomeowner": null,
"isMarried": null,
"personalAddress": null,
"personalZip": null,
"city": null,
"state": null,
"country": null,
"countryCode": null,
"personalTimezone": null,
"companyName": null,
"companyDomain": null,
"companyLinkedinUrl": null,
"companyAddress": null,
"companyCity": null,
"companyState": null,
"companyCountry": null,
"companyZipCode": null,
"companyEmployeeCount": null,
"companyTotalRevenue": null,
"companySizeRange": null,
"companyRevenueRange": null,
"jobTitle": null,
"headline": null,
"seniority": null,
"seniorityLevel2": null,
"seniorityLevelRaw": null,
"department": null,
"department2": null,
"departmentRaw": null,
"industry": null,
"linkedinUrl": null,
"photoUrl": null,
"linkedinUrn": null,
"skillsSummary": null,
"photoB2Url": null,
"companyLogoB2Url": null,
"company": null,
"companyZip": null,
"companySize": null,
"companySizeCategory": null,
"companyRevenue": null,
"companyIndustry": null,
"seniorityRaw": null,
"sessions": 1,
"pageviews": 1,
"pricingPageViews": 0,
"demoPageViews": 0,
"checkoutPageViews": 0,
"enrichmentLevel": "email_only",
"enrichmentScore": 0,
"intentScore": "low",
"firstSeenAt": "2026-01-01T00:00:00Z",
"lastSeenAt": "2026-01-01T00:00:00Z",
"firstSeen": "2026-01-01T00:00:00Z",
"lastSeen": "2026-01-01T00:00:00Z",
"daysSinceVisit": 0,
"landingPage": "https://www.example.test/",
"visitedPages": [
"https://www.example.test/"
],
"referrer": null,
"referrerDomain": null,
"utmSource": null,
"utmMedium": null,
"utmCampaign": null,
"utmTerm": null,
"utmContent": null,
"gclid": null,
"fbclid": null,
"googleGbraid": null,
"googleWbraid": null,
"googleGadSource": null,
"googleCampaignId": null,
"bingClickId": null,
"linkedinClickId": null,
"klaviyoTrackingId": null,
"hubspotAccountId": null,
"hubspotCampaignId": null,
"hubspotNetwork": null,
"msclkid": null,
"liFatId": null,
"gbraid": null,
"wbraid": null,
"channel": null,
"pixels": [
"11111111-1111-4111-8111-111111111111"
],
"pixelId": "11111111-1111-4111-8111-111111111111",
"pixelDetails": [
{
"id": "11111111-1111-4111-8111-111111111111",
"name": "Example Pixel",
"domain": "www.example.test"
}
],
"domains": [
"www.example.test"
],
"customAttribution": null
}
],
"meta": {
"page": 1,
"limit": 50,
"total": 1,
"totalPages": 1,
"hasMore": false
}
}Authorizations
Organization API key (sk_...). Get yours from Settings > API Keys in the dashboard.
Body
Saved segment to query. Mutually exclusive with ruleAst.
Canonical RuleAST. Mutually exclusive with segmentId.
One-based result page.
x >= 11
Rows per page. Defaults to 50; maximum 100.
1 <= x <= 10050
Restrict the query to one accessible pixel. 403 when the pixel does not belong to the API-key organization
"00000000-0000-4000-8000-000000000001"
Overrides ruleAst.window for this request, using the shared window catalog
24h, 7d, 14d, 30d, 90d, all, today, 3d, mtd, ytd "30d"
Was this page helpful?