curl --request POST \
--url https://api.hubapi.com/crm/objects/2026-09/contacts/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"after": "<string>",
"filterGroups": [
{
"filters": [
{
"propertyName": "<string>",
"highValue": "<string>",
"value": "<string>",
"values": [
"<string>"
]
}
]
}
],
"limit": 123,
"properties": [
"<string>"
],
"sorts": [
"<string>"
],
"query": "<string>"
}
'import requests
url = "https://api.hubapi.com/crm/objects/2026-09/contacts/search"
payload = {
"after": "<string>",
"filterGroups": [{ "filters": [
{
"propertyName": "<string>",
"highValue": "<string>",
"value": "<string>",
"values": ["<string>"]
}
] }],
"limit": 123,
"properties": ["<string>"],
"sorts": ["<string>"],
"query": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
after: '<string>',
filterGroups: [
{
filters: [
{
propertyName: '<string>',
highValue: '<string>',
value: '<string>',
values: ['<string>']
}
]
}
],
limit: 123,
properties: ['<string>'],
sorts: ['<string>'],
query: '<string>'
})
};
fetch('https://api.hubapi.com/crm/objects/2026-09/contacts/search', 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.hubapi.com/crm/objects/2026-09/contacts/search",
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([
'after' => '<string>',
'filterGroups' => [
[
'filters' => [
[
'propertyName' => '<string>',
'highValue' => '<string>',
'value' => '<string>',
'values' => [
'<string>'
]
]
]
]
],
'limit' => 123,
'properties' => [
'<string>'
],
'sorts' => [
'<string>'
],
'query' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.hubapi.com/crm/objects/2026-09/contacts/search"
payload := strings.NewReader("{\n \"after\": \"<string>\",\n \"filterGroups\": [\n {\n \"filters\": [\n {\n \"propertyName\": \"<string>\",\n \"highValue\": \"<string>\",\n \"value\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ]\n }\n ],\n \"limit\": 123,\n \"properties\": [\n \"<string>\"\n ],\n \"sorts\": [\n \"<string>\"\n ],\n \"query\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.hubapi.com/crm/objects/2026-09/contacts/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"after\": \"<string>\",\n \"filterGroups\": [\n {\n \"filters\": [\n {\n \"propertyName\": \"<string>\",\n \"highValue\": \"<string>\",\n \"value\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ]\n }\n ],\n \"limit\": 123,\n \"properties\": [\n \"<string>\"\n ],\n \"sorts\": [\n \"<string>\"\n ],\n \"query\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/crm/objects/2026-09/contacts/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"after\": \"<string>\",\n \"filterGroups\": [\n {\n \"filters\": [\n {\n \"propertyName\": \"<string>\",\n \"highValue\": \"<string>\",\n \"value\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ]\n }\n ],\n \"limit\": 123,\n \"properties\": [\n \"<string>\"\n ],\n \"sorts\": [\n \"<string>\"\n ],\n \"query\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"archived": true,
"createdAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"properties": {},
"updatedAt": "2023-11-07T05:31:56Z",
"archivedAt": "2023-11-07T05:31:56Z",
"objectWriteTraceId": "<string>",
"propertiesWithHistory": {},
"url": "<string>",
"warnings": [
{
"category": "<string>",
"context": {},
"message": "<string>"
}
]
}
],
"total": 123,
"paging": {
"next": {
"after": "<string>",
"link": "<string>"
},
"prev": {
"before": "<string>",
"link": "<string>"
}
}
}{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}Search for contacts
Search for contacts by filtering on properties, searching through associations, and sorting results. Learn more about CRM search.
curl --request POST \
--url https://api.hubapi.com/crm/objects/2026-09/contacts/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"after": "<string>",
"filterGroups": [
{
"filters": [
{
"propertyName": "<string>",
"highValue": "<string>",
"value": "<string>",
"values": [
"<string>"
]
}
]
}
],
"limit": 123,
"properties": [
"<string>"
],
"sorts": [
"<string>"
],
"query": "<string>"
}
'import requests
url = "https://api.hubapi.com/crm/objects/2026-09/contacts/search"
payload = {
"after": "<string>",
"filterGroups": [{ "filters": [
{
"propertyName": "<string>",
"highValue": "<string>",
"value": "<string>",
"values": ["<string>"]
}
] }],
"limit": 123,
"properties": ["<string>"],
"sorts": ["<string>"],
"query": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
after: '<string>',
filterGroups: [
{
filters: [
{
propertyName: '<string>',
highValue: '<string>',
value: '<string>',
values: ['<string>']
}
]
}
],
limit: 123,
properties: ['<string>'],
sorts: ['<string>'],
query: '<string>'
})
};
fetch('https://api.hubapi.com/crm/objects/2026-09/contacts/search', 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.hubapi.com/crm/objects/2026-09/contacts/search",
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([
'after' => '<string>',
'filterGroups' => [
[
'filters' => [
[
'propertyName' => '<string>',
'highValue' => '<string>',
'value' => '<string>',
'values' => [
'<string>'
]
]
]
]
],
'limit' => 123,
'properties' => [
'<string>'
],
'sorts' => [
'<string>'
],
'query' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.hubapi.com/crm/objects/2026-09/contacts/search"
payload := strings.NewReader("{\n \"after\": \"<string>\",\n \"filterGroups\": [\n {\n \"filters\": [\n {\n \"propertyName\": \"<string>\",\n \"highValue\": \"<string>\",\n \"value\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ]\n }\n ],\n \"limit\": 123,\n \"properties\": [\n \"<string>\"\n ],\n \"sorts\": [\n \"<string>\"\n ],\n \"query\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.hubapi.com/crm/objects/2026-09/contacts/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"after\": \"<string>\",\n \"filterGroups\": [\n {\n \"filters\": [\n {\n \"propertyName\": \"<string>\",\n \"highValue\": \"<string>\",\n \"value\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ]\n }\n ],\n \"limit\": 123,\n \"properties\": [\n \"<string>\"\n ],\n \"sorts\": [\n \"<string>\"\n ],\n \"query\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/crm/objects/2026-09/contacts/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"after\": \"<string>\",\n \"filterGroups\": [\n {\n \"filters\": [\n {\n \"propertyName\": \"<string>\",\n \"highValue\": \"<string>\",\n \"value\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ]\n }\n ],\n \"limit\": 123,\n \"properties\": [\n \"<string>\"\n ],\n \"sorts\": [\n \"<string>\"\n ],\n \"query\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"archived": true,
"createdAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"properties": {},
"updatedAt": "2023-11-07T05:31:56Z",
"archivedAt": "2023-11-07T05:31:56Z",
"objectWriteTraceId": "<string>",
"propertiesWithHistory": {},
"url": "<string>",
"warnings": [
{
"category": "<string>",
"context": {},
"message": "<string>"
}
]
}
],
"total": 123,
"paging": {
"next": {
"after": "<string>",
"link": "<string>"
},
"prev": {
"before": "<string>",
"link": "<string>"
}
}
}{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}Supported products
Supported products
Required Scopes
Required Scopes
Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Body
Describes a search request
A string representing the paging cursor token to retrieve results after a specific point in the result set.
An array of filter groups used to narrow down the search results. Each filter group contains a set of filters that are applied together.
Show child attributes
Show child attributes
An integer indicating the maximum number of results to return.
An array of strings specifying which properties of the objects should be included in the search results.
An array of strings specifying the sorting order of the search results.
A string representing the search query to be applied to the objects.
Response
successful operation
Represents a list of simple objects returned from an API request, along with the total count of objects available.
An array of SimplePublicObject items, each representing an individual public object.
Show child attributes
Show child attributes
The number of available results
Represents the pagination information for navigating through a list of results in the API. It provides details on how to access the previous or next set of results.
Show child attributes
Show child attributes
Was this page helpful?