Question: There are Facebook users that are **not** my friends and when I go to their Facebook page, I am able to see a bunch of their data, like hometown, relationship status, languages, etc.
Therefore I conclude that their profile is public.

So I'm taking their username or user id, and I try to get the very same date through the API,
but I receive only the very basic data like this:

```
{
    "id": "XXXXXXXX",
    "name": "XXXXX XXXXXX",
    "first_name": "XXXX",
    "last_name": "XXXXXX",
    "link": "https://www.facebook.com/XXXXX",
    "username": "XXXXXX",
    "gender": "XXXXXX",
    "locale": "en_US",
    "updated_time": "2012-01-06T20:20:51+0000"
}

```

I want to be able to receive all data that I see with my eyes. Is there anything I can do? Or is the answer that Facebook does not permit this?

I tried fetching object, FQL queries, and did the search with an URL (like explained in *[Graph API](https://developers.facebook.com/docs/reference/api/)*). I have tried with and without access tokens.

Nothing helps. So my conclusion is that Facebook simply does NOT allow that. Though I'm sure there is a way.

Answer: 
This is normal behaviour to prevent mass profiling. Imagine if all that data was accessible freely through the [Graph API](http://en.wikipedia.org/wiki/Facebook_Platform#Graph_API). You could probably fetch the entire Facebook in a few days. This could easily lead to "alternatives" of Facebook that could show the data in a different format and this way they would actually steal the Facebook visitors. Think of this as a book which you can read but cannot copy without explicit permission.
How come then that certain profiles consequently show a lot of public info, eg: <https://developers.facebook.com/tools/explorer/?method=GET&path=thingstodo.ireland%2Ffeed> and some show none - although they have public posts...
Where can a user control this?