What's the Facebook's Graph API call limit?
Is there any restriction in number of calls we make to facebook's graph api? and If it is there then how many calls can we make per app daily?
The best answer to this question from another forum, from Ash Rust in 2010:
"After some testing and discussion with the Facebook platform team, there is no official limit I'm aware of or can find in the documentation. However, I've found 600 calls per 600 seconds, per token & per IP to be about where they stop you. I've also seen some application based rate limiting but don't have any numbers.
As a general rule, one call per second should not get rate limited. On the surface this seems very restrictive but remember you can batch certain calls and use the subscription API to get changes."
The above information is now obsolete as of October 2015. It's now 200 API calls per user in any given 60 minute window according to https://developers.facebook.com/docs/graph-api/advanced/rate-limiting
Now it's official:
Each app is given an allotment of 200 API calls per user in any given 60 minute window.
From the Facebook documentation as of October 7th 2015, here's how rate limiting on the Graph API works:
- Rate limiting is done on your Facebook AppId. If your app reaches a rate limit, all calls made for that app will be limited not just on a per-user basis.
- Rate limiting is calculated by taking the number of users your app had the previous day and adding today's new logins. This gives a base number of users that your app has.
As an example, if your app had 10 users yesterday and 5 new logins today, that would give you a base of 15 users. This means that your app can make ((10 + 5) * 200) = 3000 API calls in any 60 minute window.
More information here: https://developers.facebook.com/docs/graph-api/advanced/rate-limiting
--Update as of April 12th 2016--
Facebook has now a Rate Limit Dashboard, which is much easier to see if your app's rate limit is exceeding. It looks like this:
According to Facebook dev policies "I. Features and Functionality" the only limits are:
(>5M MAU) or (>100M API calls per day) or (>50M impressions per day).
(Mau means monthly users)
It does not say what will they do after exceeding the limits...
Today I have ran to this limitation:
Calls to mailbox_fql have exceeded the rate of 300 calls per 600 seconds.
Overall every table has different set of limits, in most of the cases fql wont return more than 30 objects per fql. Also it seems to me that you can exceed the limits to one table and at the same time you can access different table, the question is whether the api is blocked (after exceeding the limit) for all the user or only for the user that has exceeded the limits... Anyway, after you exceed the limit you have to wait for about 10 minutes, than it is okay.
So technically speaking you can get at most 300*30 objects per 10 minutes in table mailbox_fql.
From facebook documentation
User Level Rate Limiting
This rate limiting is applied at the user level for all api calls except for ads apis.
Rate limitations happens real time on sliding window. Each call is assigned a score. There is a max score of n. User accumulates a score over time based on the calls made. When the max score is reached, the throttling error is thrown. Error, Code: 17, Message: User request limit reached
App Level Rate Limiting
This rate limiting is applied globally at the app level. Ads api calls are excluded.
Rate limiting happens real time on sliding window for past one hour. Stats is collected for number of calls and queries made, cpu time spent, memory used for each app. There is a limit for each resource multiplied by monthly active users of a given app. When the app uses more than its allowed resources the error is thrown. Error, Code: 4, Message: Application request limit reached
check this documentation https://developers.facebook.com/docs/reference/ads-api/api-rate-limiting/
According to FB docs, each element in a batch counts as a separate call.
We currently limit the number of requests which can be in a batch to 50, but each call within the batch is counted separately for the purposes of calculating API call limits and resource limits. For example, a batch of 10 API calls will count as 10 calls and each call within the batch contributes to CPU resource limits in the same manner.