Pagination, Batching and Bulk

Pagination, Batching, and Bulk Workloads

Page Description

How to page through search results, batch enrichment requests, and design production workloads within ZoomInfo API limits.

ZoomInfo search and enrichment workflows usually follow a two-step pattern:

  1. Use Search endpoints to discover matching records.
  2. Use Enrich endpoints to retrieve full detail for selected records.

This keeps applications efficient and prevents unnecessary credit usage.

Pagination

Search endpoints support pagination via query params supporting a page[number] and page[size]

Request shape:

curl --request POST \
     --url 'https://api.zoominfo.com/gtm/data/v1/contacts/search?page[number]=4&page[size]=25' \
     --header 'accept: application/vnd.api+json' \
     --header 'content-type: application/vnd.api+json' \
     --data '
{
  "data": {
    "attributes": {
      "companyName": "ZoomInfo"
    },
    "type": "ContactSearch"
  }
}

Response shape:

{
  "data": [
    {
      "attributes": {
        "company": {
          "id": 344589814,
          "name": "ZoomInfo"
        },
        "contactAccuracyScore": 94,
        "directPhoneDoNotCall": false,
        "firstName": "Henry",
        "jobTitle": "Chief Executive Officer & Board Member",
        "lastName": "Schuck",
        "lastUpdatedDate": "2024-10-21T14:05:00Z",
        "middleName": "L.",
        "mobilePhoneDoNotCall": false,
        "validDate": "2024-11-14T22:29:00Z"
      },
      "id": "1260398587",
      "type": "Contact"
    },
		{
      "attributes": {
        "company": {
          "id": 344589814,
          "name": "ZoomInfo"
        },
        "contactAccuracyScore": 95,
        "directPhoneDoNotCall": false,
        "firstName": "Filip",
        "jobTitle": "Chief Technology Officer",
        "lastName": "Popovic",
        "lastUpdatedDate": "2025-04-04T18:13:00Z",
        "mobilePhoneDoNotCall": false,
        "validDate": "2024-11-14T22:29:00Z"
      },
      "id": "4191419698",
      "type": "Contact"
    },
		...
  ],
  "links": {
    "first": "/data/v1/contacts/search?page[number]=1&page[size]=25",
    "last": "/data/v1/contacts/search?page[number]=121&page[size]=25"
  },
  "meta": {
    "page": {
      "number": 4,
      "total": 121
    },
    "totalResults": 3016
  }
}

Maximum page size: 100.

If you request a page above the maximum, the API returns a validation error.

Batch Enrichment

Use batch enrichment when you already know the records you want to retrieve.

Canonical limit:

EndpointMax records per callCredit behavior
Enrich Companies251 bulk credit per new company record
Enrich Contacts251 bulk credit per new contact record
Account Research1 accountAI action credits
Contact Research1 contactAI action credits

Batch Request Example

{
  "data": {
    "attributes": {
      "matchCompanyInput": [
        {
          "companyId": 344589814
        },
        {
          "companyId": 344589814
        }
      ],
      "outputFields": [
        "id",
        "ticker",
        "name",
        "website",
        "socialMediaUrls",
        "revenue",
        "numberOfContactsInZoomInfo",
        "country",
        "continent",
        "companyStatus",
        "alexaRank",
        "hashtags",
        "certified",
        "employeeRange",
        "employeeRange",
        "employeeGrowth",
        "parentId",
        "parentName",
        "locationCount",
        "foundedYear"
      ]
    },
    "type": "CompanyEnrich"
  }
}

Batch Response Example

{
  "data": [
    {
      "attributes": {
        "certified": true,
        "companyStatus": "ALIVE",
        "continent": "North America",
        "country": "United States",
        "employeeRange": "1,000 - 5,000",
        "foundedYear": "2000",
        "locationCount": 18,
        "name": "ZoomInfo",
        "numberOfContactsInZoomInfo": 4336,
        "parentId": 0,
        "revenue": 245188088,
        "socialMediaUrls": [
          {
            "followerCount": "128080",
            "type": "LINKED_IN",
            "url": "http://www.linkedin.com/company/zoominfo"
          },
          {
            "followerCount": "14413",
            "type": "TWITTER",
            "url": "http://www.twitter.com/zoominfo"
          },
          {
            "type": "FACEBOOK",
            "url": "http://www.facebook.com/109325735758217"
          }
        ],
        "ticker": "NASDAQ: GTM",
        "website": "www.zoominfo.com"
      },
      "id": "344589814",
      "meta": {
        "input": {
          "companyId": 344589814
        },
        "matchStatus": "FULL_MATCH"
      },
      "type": "Company"
    },
    {
      "attributes": {
        "certified": true,
        "companyStatus": "ALIVE",
        "continent": "North America",
        "country": "United States",
        "employeeRange": "50 -100",
        "foundedYear": "2015",
        "locationCount": 2,
        "name": "Comparably",
        "numberOfContactsInZoomInfo": 55,
        "parentId": 344589814,
        "parentName": "ZoomInfo Technologies LLC",
        "revenue": 11615,
        "socialMediaUrls": [
          {
            "followerCount": "19537",
            "type": "TWITTER",
            "url": "http://www.twitter.com/comparably"
          },
          {
            "followerCount": "14413",
            "type": "LINKED_IN",
            "url": "http://www.linkedin.com/company/comparably"
          },
          {
            "followerCount": "6436",
            "type": "FACEBOOK",
            "url": "http://www.facebook.com/comparably"
          }
        ],
        "website": "www.comparably.com"
      },
      "id": "344589814",
      "meta": {
        "input": {
          "companyId": 344589814
        },
        "matchStatus": "FULL_MATCH"
      },
      "type": "Company"
    }
  ]
}

Production Workload Pattern

For a list-building agent:

  1. Run a narrow Search Companies query.
  2. Page through only the result set you need.
  3. Search Contacts against selected companies.
  4. Rank contacts before enrichment.
  5. Enrich only the records needed for activation.
  6. Cache enriched IDs for the Records Under Management window.
  7. Log credits consumed and records returned.

Agent Guidance

Agents should avoid enrichment loops. Search results often contain enough data for narrowing and ranking. Enrich only when the user needs export-ready fields such as email, phone, full profile, or detailed company metadata.

Recommended confirmation threshold:

This will enrich 25 contacts and may consume up to 25 bulk data credits if none are already under management. Continue?