We use the Salesforce Bulk API for the purposes of synchronizing account, opportunity, contact and lead data for attribution and reporting purposes and also for audience building.
Our process involves just a few API calls:
The initial API call is made to create the report.
We then periodically check the report's status every N seconds (typically less than 100 calls in total) until it's ready.
Once the report is ready, we make one final API call to retrieve it.
As a result, the overall number of API calls generated by our service is kept to a minimum. However, please note that within the Bulk API, we may need to query a significant number of objects related to attribution, which could result in a higher volume of queries against those objects.