Is there any limit on how many times an external system can call Salesforce to get data? For example, ETL Tools, Mulesoft etc.
Is there any limit on how many times an external systems can call Salesforce to get data?
Yes, there is an API Limit as how many API calls can any external system make into Salesforce. There's a 24-hour cap on the number of API requests that can be made to an Org. The limits are reset after every 24 hour.
You can find more details on the API Request Limits and Allocations.
As an example, the total number of API requests for Unlimited Edition in 24-hour period is calculated as below:
15,000 + (number of licenses * calls per license type)
You can additionally request for increasing the limits if you want anything more than what is granted.
If you need a higher amount and you don’t want to purchase extra user licenses or upgrade to Performance Edition, you can purchase extra API calls.
The only exception to this seems to be Heroku Connect.
We’re pleased to announce that beginning July 2, 2015, Heroku Connect’s data synchronization with your Salesforce organization -- which relies on the SOAP API -- will no longer be constrained by your Salesforce API usage limits. Customers can now focus on using Heroku Connect to build apps spanning Salesforce/Heroku without worrying about the volume of API calls.
Just to add to what Jayant has said,
Whenever an external system accesses SF it comes under API calls. This also includes standard SF tools like Marketing Cloud or data loader or even Salesforce Mobile APP.
You can see how many API calls are allowed for your org under
Setup -> Company Information.
NOTE: Number of API calls in Sandbox(5M for most sandboxes) is not the one you get in LIVE(Prod). Check-in prod before making any decision about Integration architecture.
API usage depends on what you are doing and how you are UTILIZING it.
If you use REST /SOAP standard API which is not bulkified you are at risk of quickly consuming all API calls.
Salesforce recommends the use of BULK API instead. BulkAPI allows you to Bulk data loading usually done by ETL by consuming sometimes 1/10th of API calls as compared to other API.
Also to note certain things :
- API limit is 24 hours rolling, if you reached that limit external systems would not be access SF. This also means your SF mobile, IDE's which uses API would also not work. Though in next hour you will get certainly available calls (As its rolling limit)
- If its one-time thing like Data Loading or temp purpose(Peak days of business) you can request SF for extra API calls for free. It should be treated as one-time favour not should be expected every time
You can programmatically check how many API calls are remaining using a rest endpoint. https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_limits.htm
You can also set API usage alerts emails so that if it reaches 80% -90% you can stop some ETL etc.