Interestingly, Facebook is surprisingly liberal with their public data endpoints, with no apparent rate limiting for API retrieval from public Facebook Pages and Groups (source: I develop a scraper and have not been yelled at by FB, yet: https://github.com/minimaxir/facebook-page-post-scraper )
Twitter, meanwhile, still has that stupid 3200 most-recent tweet limit on historical data, which is apparently a "technical limitation."
It's been awhile since I've used the FB API, but one thing that's nice about Twitter is that you have a lot of room to crawl networks of users; for example, I always like getting the list of accounts that U.S. congressmembers follow (based on the Twitter account list maintained by the unitedstates project [0]), as a proxy for such things as perceived political bent of media organizations.
There were other changes made before that, that's just one I remember in my latter days of using their API. Granted, I've always been impressed with the analyses you've done with FB data and have put it on my list someday to learn through your examples :).
I tried to use the FB API, expecting a mature API with bindings and libraries all over the place, lots of simplifying modules etc. I was left with the impression that I wasn't really allowed to use it all, because I wasn't writing an "App" (or perhaps because it wasn't running on a "Device"). Totally confusing experience, where – even if I'm not particularly accustomed to walled garden situations – the terminology and workflow just doesn't seem to match expectations at all.
You can query users on Facebook by their userID though, which is enough to uniquely identify users atleast. However, you can't easily scrape public user data even with Graph API.
That is probably for the best as people have messaged me about that functionality, with not-very-ethical intentions.
Twitter, meanwhile, still has that stupid 3200 most-recent tweet limit on historical data, which is apparently a "technical limitation."