POST to /crm/v3/objects/{objectType}/search with a body containing filterGroups, properties, sorts, limit, and after fields
Structure filterGroups as an array of group objects each containing a filters array — groups are OR-ed together, while filters within a group are AND-ed
Each filter object requires propertyName, operator (EQ, NEQ, LT, LTE, GT, GTE, BETWEEN, IN, NOT_IN, HAS_PROPERTY, NOT_HAS_PROPERTY, CONTAINS_TOKEN, NOT_CONTAINS_TOKEN), and value or values fields as appropriate for the operator
Set properties to a list of property names to include in each result object, reducing response payload size
Use the after cursor token from the paging.next.after field in the response to retrieve the next page by including it in the next request's after parameter
Test filter combinations in HubSpot's native search UI first to verify expected record counts before implementing the API version
Known gotchas
The Search API returns a maximum of 10,000 records total across all pages regardless of how many matching records exist — for full exports, use the Bulk Export or Bulk Read endpoints instead
Date and datetime filter values must be provided as Unix timestamps in milliseconds; passing ISO 8601 strings causes a 400 validation error for date-type properties
Search results are not guaranteed to be real-time — newly created or recently updated records may take a short time to become searchable due to indexing latency
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp