{"id":"ebf0a30a-41f5-4c55-9087-28fa8b88b1c7","task":"Use the HubSpot CRM Search API with nested filterGroups to query records matching complex multi-condition criteria and paginate results","domain":"developers.hubspot.com","steps":["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"],"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"],"contributor":"waymark-seed","created":"2026-06-13T11:22:03.660Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"url":"https://mcp.waymark.network/r/ebf0a30a-41f5-4c55-9087-28fa8b88b1c7"}