Accelerate Zoho CRM Data Extraction with the Bulk Read API

29 September 2026
KingswaySoft Team

In today's data-driven environment, efficiently extracting large volumes of CRM data is a core integration requirement. Whether you are migrating data, loading a data warehouse, creating a backup, or synchronizing CRM data with another system, retrieving hundreds of thousands - or millions - of records through standard API requests can generate a substantial number of calls.

Zoho CRM's standard record-retrieval APIs are well-suited for smaller to intermediate data volumes, as they return a maximum of 200 records per request and are subject to API limits. For larger extractions, Zoho CRM's Bulk Read API provides a more scalable alternative. It creates an asynchronous export job that Zoho CRM processes in the background, allowing the integration to poll for completion and download the resulting file when it is ready.

For large datasets, the Bulk Read API offers several advantages:

  • It can export up to 200,000 records in a single export job (for CSV exports), substantially reducing the number of requests required. See the Zoho API documentation for current limitations.
  • Zoho CRM processes the extraction asynchronously, making the API well-suited to operations that may take longer to complete.
  • Results are made available as downloadable files, which the KingswaySoft component parses into tabular columns for loading in an SSIS data flow.
  • A Criteria filter (Zoho CRM query) can be used to control which records are included in the extraction.
  • When more than 200,000 records match the query, Bulk Read can retrieve subsequent result pages, whereas the standard record-retrieval API has a maximum retrieval limit of 100,000 records.

In this post, we will configure a Zoho CRM Bulk Read operation with KingswaySoft's Zoho CRM REST Components, then compare it with standard paged retrieval to show why Bulk Read is a compelling choice for high-volume extractions.

Standard Paged Retrieval

With a standard read operation, the API returns records directly in the response. This synchronous approach is convenient for relatively small datasets because records can immediately continue through the SSIS data flow. However, the Contacts endpoint returns a maximum of 200 records per request, so larger extractions require repeated paged requests.

Zoho CRM REST Source configured to list Contact records

In this example, we specify an If-Modified-Since header value in ISO 8601 format (YYYY-MM-DDTHH:mm:ss±HH:mm). The filter is optional; here, it limits the extraction so that it remains within the standard API's maximum retrieval range.

Configuring the REST Source for Bulk Read

Rather than waiting for each page of records to be returned, a Bulk Read operation submits the extraction to Zoho CRM as an asynchronous job. Selecting the Bulk Read endpoint exposes additional configuration properties. In many cases, the default Bulk Read option will work pretty well, and no Criteria is necessary. If the goal is to retrieve every record from the selected Source Object, the source component may require little additional configuration.

Zoho CRM REST Source configured for Bulk Read of Contact records

The Bulk Job Interval option controls how often the component polls Zoho CRM for the job's status. A shorter interval can reduce the time between job completion and result retrieval, but it also increases the number of status-check requests. The default of 5 seconds is generally a sensible balance, which means that we check for job status every 5 seconds.

For Bulk Read operations, the Query window provides a convenient way to configure the request sent to Zoho CRM. The query identifies the module to read and can include criteria that determine what records are included in the export job. Multiple criteria can be combined for more complex filtering. For example, you might retrieve records created after a specified date while also filtering on another field. Applying the filter in Zoho CRM avoids extracting unnecessary records only to discard them later in the SSIS data flow.

The following criterion uses the SSIS user variable datetime1. You can replace it with a hard-coded ISO 8601 date-time value when appropriate.

{
  "api_name": "Created_Time",
  "comparator": "greater_equal",
  "value": "@[User::datetime1]"
}

To use more than one criterion, place the individual criteria in a group and specify a group_operator, as shown below.

{
  "group": [
    {
      "api_name": "Created_Time",
      "comparator": "greater_equal",
      "value": "@[User::datetime1]"
    },
    {
      "api_name": "Email_Opt_Out",
      "comparator": "equal",
      "value": "true"
    }
  ],
  "group_operator": "and"
}

Performance Comparison

Performance is an important consideration. In the following tests, we queried the same fields on the same isolated machine. The first two tests each retrieved 100,000 records; the final test demonstrates a larger Bulk Read extraction.

Standard paged retrieval is appropriate when you need a smaller dataset and want records to be returned immediately. In this test, retrieving 100,000 Contact records required 500 requests - one request for each page of 200 records. Although the elapsed time was acceptable, the request count can reach the API limit, which can become a concern as data volumes grow.

Bulk Read is designed for high-volume extraction, where throughput and efficient API usage take priority. The polling interval can be reduced if necessary to detect job completion sooner, though doing so increases the number of status-check requests.

As the results show, the difference becomes more significant at scale. The standard paged retrieval took just over two minutes for 100,000 records, while Bulk Read completed the same extraction in 13 seconds using far fewer requests. The third result shows that Bulk Read continues to scale efficiently as the volume increases.

Operation Elapsed Time (HH:MM:SS) API Calls
Standard Paged Read 00:02:01 (100,000 records) 500
Bulk Read 00:00:13 (100,000 records) 3
Bulk Read 00:00:58 (427,210 records) 13

Conclusion

Choosing the appropriate API operation can make a substantial difference when extracting data from Zoho CRM. Standard paged retrieval provides a straightforward synchronous approach for smaller datasets, while the Bulk Read API is designed for large, asynchronous export workloads.

With KingswaySoft's Zoho CRM REST components, you can configure the Bulk Read workflow efficiently in SSIS. For integrations involving large CRM datasets, this can mean fewer API requests, less request overhead, and higher throughput. Whether you are performing a migration, loading a data warehouse, or building a recurring high-volume integration, Zoho CRM Bulk Read is an efficient option for extracting data at scale.

We hope this guide has been helpful.

Archive

September 2026 3 August 2026 4 July 2026 3 June 2026 1 May 2026 3 April 2026 3 March 2026 2 February 2026 2 January 2026 2 December 2025 2 November 2025 2 October 2025 2 September 2025 2 August 2025 2 July 2025 2 June 2025 1 May 2025 2 April 2025 3 March 2025 1 February 2025 1 January 2025 2 December 2024 1 November 2024 3 October 2024 1 September 2024 1 August 2024 2 July 2024 1 June 2024 1 May 2024 1 April 2024 2 March 2024 2 February 2024 2 January 2024 2 December 2023 1 November 2023 1 October 2023 2 August 2023 1 July 2023 2 June 2023 1 May 2023 2 April 2023 1 March 2023 1 February 2023 1 January 2023 2 December 2022 1 November 2022 2 October 2022 2 September 2022 2 August 2022 2 July 2022 3 June 2022 2 May 2022 2 April 2022 3 March 2022 2 February 2022 1 January 2022 2 December 2021 1 October 2021 1 September 2021 2 August 2021 2 July 2021 2 June 2021 1 May 2021 1 April 2021 2 March 2021 2 February 2021 2 January 2021 2 December 2020 2 November 2020 4 October 2020 1 September 2020 3 August 2020 2 July 2020 1 June 2020 2 May 2020 1 April 2020 1 March 2020 1 February 2020 1 January 2020 1 December 2019 1 November 2019 1 October 2019 1 May 2019 1 February 2019 1 December 2018 2 November 2018 1 October 2018 4 September 2018 1 August 2018 1 July 2018 1 June 2018 3 April 2018 3 March 2018 3 February 2018 3 January 2018 2 December 2017 1 April 2017 1 March 2017 7 December 2016 1 November 2016 2 October 2016 1 September 2016 4 August 2016 1 June 2016 1 May 2016 3 April 2016 1 August 2015 1 April 2015 10 August 2014 1 July 2014 1 June 2014 2 May 2014 2 February 2014 1 January 2014 2 October 2013 1 September 2013 2 August 2013 2 June 2013 5 May 2013 2 March 2013 1 February 2013 1 January 2013 1 December 2012 2 November 2012 2 September 2012 2 July 2012 1 May 2012 3 April 2012 2 March 2012 2 January 2012 1

Tags