Facebook Graph API rate limit for search queries - facebook-graph-api

I'm working on a project to process a list of email addresses (around 4M entries), and determine whether they have an associated facebook account or not. I'm using graph API search query to detect that. Now is there any chance I'll get a rate limit, or even is there any official rate limit for that? Considering the list is really large and maybe we'll do multi threaded requests I'm worried about any rate limits.
I heard about un-official 600 request / 600 seconds but haven't seen any proof of it in facebook.

Facebook finally shared their official rate limits: https://developers.facebook.com/docs/graph-api/advanced/rate-limiting

Related

How does the quota limit for Google Civic Information API work?

I ask because the errors don't seem to line up with what the documentation says.
We have a daily limit of 1 million requests. Upon reaching about 995,000 requests, we started getting errors about hitting the limit and requests flat-lined. This happened around 7:20pm. The dashboard says "Daily quotas reset at midnight Pacific Time (PT)". However, requests started going through again at about 8:30pm.
Since 995,000 < 1,000,000 and 8:30pm != midnight, this leaves me with the feeling that we can't actually predict and prevent hitting the rate limit, or know when it will reset.
What do I need to know in order to do occasional heavy-use of the API while staying under the limits? Nothing in the documentation or dashboards gives me what I need.
You can see all your API quotas on the Google Cloud Console's "IAM & admin" page's "Quotas" tab. It should contain the details on how much you have used and whether or not you hit the limit. If you only used 995,000 / 1,000,000 and it show as such in your quota page (give it a bit of time to update since it might have delay) and it doesn't work, there's something wrong and should be reported to us directly.
I suspect you might be hitting a rate limit, which temporary prevented you from making further requests. You just have to bring your rate below the limit to have it working again. The quota page contain information on the rate limit (per 100 seconds) as well.
Your official support channels for Civic Information API is here.

Audit Report API Limit Increase

I need to access Google Docs Audit Activity for my domain. The limit for the same is 1000 records in a single API call. Also, the number of API calls per day is 10K.
What is the way to increase the limits for API calls per day? Google Support is unable to answer this question and redirected me to Stack Overflow.
You may want to refer with this thread regarding quota increase for Report API:
There are several quotas for the Google Analytics APIs and Google APIs in general.
requests/day 0 of 50,000
requests/100seconds/user 100
requests/perView 10000
Your application can make 50000 requests per day by default. This can be extended but it takes a while to get permission when you are getting close to this limit around 80% its best to request an extension at that time.
Your user can max make 100 requests a second which must be something that has just gone up last I knew it was only 10 requests a second. User is denoted by IP address. There is no way to extend this quota more then the max you cant apply for it or pay for it.
Then there is the last quota the one you asked about. You can make max 10000 requests a day to a view. This isn't just application based if the user runs my application and your application then together we have only 10000 requests that can be made. This quota is a pain if you ask me. Now for the bad news there is no way to extend this quota you cant apply for it you cant pay for it and you cant beg the Google Analytics dev team (I have tried)
Answer: No you cant extend the per view per day quota limit.
If you encountered error, it is recommended to catch the exception and, using an exponential backoff algorithm, wait for a small delay before retrying the failed call.

server side technology for business logic

Say I want to develop a web application that will have registered users and will be registered as a twitter app (allowing users to give it permissions to view their timeline and post on their behalf). The sole function of the application will be to re-tweet tweets from users' timeline according to users' settings and desires.
I understand that the website for this app will use the common technologies like HTML, CSS and JS on the client-side. The server side (where the user defines what kind of tweets the application should retweet) will have to be coded in PHP/Python/Perl/... based on a DB MySQL/Postgre/...
What I don't understand, and would really appreciate your help with, is where the real "business logic" will be coded? For example, what technology should I use to code the function that will sit on my server: contacting Twitter server every 5 minutes, reading the timeline of every user I have, checking whether there are tweets worth retweeting (according to what the user has defined), and sending Tweeter the necessary commands to retweet the chosen tweets on behalf of my users.
All that will happen off-line for the user, and will be an on-going and cyclic process - but what technology should I use to code it?
Thanks!
I have heard about this API for PHP. It is actually the only one that I have heard of for PHP, though. I know that there are some good Python libraries out there, but I don't know about Perl.
I am actually working on a new API for C# (won't be a good fit for you, as you're clearly not using Windows Servers), and started building it while working on an enterprise web application that prompted several questions similar to your own.
Here is what you are going to have to do:
Before you start, you are going to have to get in touch with one of Twitter's data partners (I believe that you may contact Twitter for the reference)
The reason for this is that you are going to be requiring many more requests than you think
Twitter's time interval used for Twitter's recorded rate cap is 900 seconds (5 minutes)
With the general rate limit if you are querying a user's timeline only once every rate limit, you are limiting your number of visitors on your site to 300 at a time
Here's where it gets tricky - if every user makes one Tweet (meaning you send the Tweet - not rate limited - and then refresh the timeline - rate limited - so that they can see the updated tweet) you have now dropped your maximum number of active users at any given time to 150
Factor in the company's own timeline (-1 visitor), plus the number of visitors who leave their browsers open (now you need more logic, and you have to either kick them off or simply keep track of whose timeline you won't be refreshing), the number of users who make more than one tweet (-1 visitor for each Tweet), etc.
Moral of the story: contact one of their data partners and get yourself either unlimited requests, or at least a significant enough amount to accommodate your number of visitors/users (plus a bit of padding)
If you adhere to this advise, skip steps 2 and 3, otherwise, skip step 4
(Note: Steps 2 and 3 are only for rate-capped implementations) Using your desired language, make a service that runs on the server and makes the queries to Twitter
Based on the information that you gave, I suggest that you use Python to make this service
The service will run at all times and be on it's own clock to base the 5-minute intervals between the requests on
You will have to use a caching or a database system for storing the data
(Note: Steps 2 and 3 are only for rate-capped implementations) Add the necessary code to make a request to the service that you created for the data and perform these requests every 5 minutes
I suggest that the clock used for making these requests to the service be running a little bit behind the clock used for the service to account for instances of slow data transfer, etc.
You will also have to have to call some methods on the service for adding/removing users from the queue
(Note: Step 4 is only for unlimited request implementations) Forget about the service and simply include the request code directly in the page that the user is on.
The user's timeline will be updated based on when they visited the site or when their timeline was last refreshed (if a Tweet was made)
The only caveat to this implementation is that you will have to pay for the unlimited/larger data rate limit

Limit on number of Graph API calls

I am planning to get an app developed but the developer has told me that there is a limit of 600 calls per 600 seconds per IP. The app has plenty of scenarios in which this would not suffice. Is there a way to increase the limit somehow? Or does Facebook offer any premium account or something probably with a yearly fee that does not have such a limit?
Thanks.
If you exceed, or plan to exceed, any of the following thresholds please contact us as you may be subject to additional terms: (>5M MAU) or (>100M API calls per day) or (>50M impressions per day).
Pulled from : https://developers.facebook.com/policy/
100M API Queries per day should be for a single app. So that should restrict you, but I dont think that matters.
Another thing, what you mentioned in your question, and I have read that elsewhere as well.
I've found 600 calls per 600 seconds, per token & per IP to be about where they stop you.
Pulled from : http://www.quora.com/Whats-the-Facebook-Open-Graph-API-rate-limit
Note, it is per token. Every other user has a different access token and IP as well. If it happens to be a cron running from the server, still I dont think they would catch you for the IP as long as you keep changing the tokens.
Another thing to implement is the Real time updates API, which will ping you when something changes so you dont have to run a 24*7 monitoring script.
P.S : Real Time Updates is Buggy! Have experienced it myself.

maximum number of automatic posts to page allowed?

I have an app where a user can enter a message in our CMS and select a list of pages where it should be posted to. The pages are all company pages (local branches of the company) and I have the page access token.
Is there a hard limit in how many posts I can send out?
Is there a difference if I send out all posts at once or if I put in a delay in between posts?
The limit is flexible. It is based on Facebook's complex algorithms on how naughty/nice your app is. There is no hard answer for you. Just monitor the exceptions coming back from the API and follow what they tell you when you do get one.
FB Policy
If you exceed 5M MAU, 100M API calls per day, or 50M impressions per day, you may be subject to additional terms.