Quick tipDeveloperSmart CRM

HubSpot search API stops at 10,000 results: how to page past it

Paging past 10,000 results returns a 400. Split the query instead.

Subscription
All tiers
Permissions
App with CRM read scopes
Time
5 min · Advanced
Last verified

Short answer

HubSpot's docs list these search limits: 10,000 total results per query (paging beyond returns 400), 200 records per page, five requests per second per account, a 3,000-character query body, and up to five filter groups with six filters each and 18 in total. To read more than 10,000 records, sort by a stable property, page with after, and start a fresh query filtered from the last value.

1. A windowed query

POST https://api.hubapi.com/crm/v3/objects/contacts/search
{
  "filterGroups": [
    { "filters": [ { "propertyName": "createdate", "operator": "GTE", "value": "1767225600000" } ] }
  ],
  "sorts": [ { "propertyName": "createdate", "direction": "ASCENDING" } ],
  "properties": ["email", "createdate"],
  "limit": 200,
  "after": 0
}

When you approach 10,000 results, take the last createdate you received and run the query again with GTE that value. Deduplicate on record ID, since records sharing that timestamp come back twice.

2. Other things that catch people

  • New and updated records can take a few moments to appear in search.
  • Archived records never appear.
  • Enumeration filters are case-sensitive. IN and NOT_IN on strings need lowercase values.
  • Only one sort rule per search.

3. Alternatives

For SQL-style queries, see HubSQL. For reading a whole object, see choosing a read method. Rate limits: HubSpot API rate limits.

Sources

New field notes by email

One email when a new article publishes.

Still stuck?

If this did not fix it, the problem is probably specific to your setup. Book a call and we will look at it together.

Book a call with Sam