The new Facebook Graph Search – part 1

This blogpost is inspired by @djnemec‘s Github gist, which you can find here https://gist.github.com/nemec/2ba8afa589032f20e2d6509512381114.

WARNING: This is a long read. We just couldn’t make it shorter, sorry… Take your time, get comfortable and dive into the new way of Facebook Graph Search!

R.I.P Graph Search – June 7th 2019

As you might have noticed, on June 7th 2019, Facebook shut down its Graph Search options. Within a few hours people found solutions but, unfortunately, it didn’t seem to last long. Since August 1st, there seems to be a steady solution.

The ‘new’ Graph Search seems a little comprehensive at first, but it’s pretty easy once you get the hang of it. It involves some JSON and Base64, languages not everyone is familiar with. But even though you might have even never heard of these concepts, you can still build the Graph queries! In fact, we made a whole other blog post about JSON, Base64 encoding, and URL encoding to prep you for these Facebook changes.

Of course there are tools and websites like Graph.tips, Sowdust, and Intelx.io which do a great job of simplifying the “how do I get this Facebook data…” questions, but it’s always better to know how these tools work instead of relying on them. As we have seen recently, web sites and their tools come and go. Understanding HOW something works helps you even when our favourite tools stop working. And understanding how these tools work helps you stay OSINT curious too :)!

Before we start…

Just like in the ‘old’ Graph Search, ID numbers are still important. You can find a Facebook ID number very easily by following these instructions:

  1. Open the page or profile of interest in a web browser
  2. Right click somewhere on the page where there is no content (mostly in the light grey area’s) and choose ‘View page source’ (or use Ctrl+U. This works in most browsers.)
  3. Search, using Ctrl+F, for ‘userID’ (when looking at a profile), ‘pageID’ (when looking at a page) or ‘groupID’ (when looking at a group). The number mentioned just behind ‘userID=’ or ‘pageID=’ is the number you need to copy.
    Looking for a different ID? Check the table below!
ID from:classic designnew design
Profileentity_iduserID
Pageentity_idpageID
Locationentity_idThings-to-do-in (first number after this line)
EventID is displayed in the URLeventID
Groupentity_idgroupID
What to search for in the source code when looking for the ID numbers
Example of the userID of Facebook.com/zuck

Also, don’t forget to switch your Facebook language settings to ‘English US’ in order to get the best results.

Searching Facebook

According to an article on Buzzfeed, Facebook stated: “The vast majority of people on Facebook search using keywords, a factor which led us to pause some aspects of graph search and focus more on improving keyword search. We are working closely with researchers to make sure they have the tools they need to use our platform.

And I must say, their keyword search has improved. While searching the regular search bar at the top of Facebook (visible when logged on), Facebook offers a wide range of filters to choose from. Give it a try, it has already surprised me a couple of times!

Choose a category, like ‘People’ on the left. When selected a category, the filter options will appear

Don’t forget to log on to Facebook in order to use the search options. If you struggle with creation or maintaining a research profile, check out one of our previous blogpost on sock puppets.

Searching with the ‘new’ Graph Search

Buckle up readers! This is where the ride really starts; get comfortable and keep on reading for the comprehensive part!

Even though the search bar works pretty well, you sometimes want to specifically filter on the things you are interested in. For example; ‘Most Recent’ posts on a specific topic. This is not a standard option, although the option is still available. You just have to put in a little more effort.

The base

For every search the base will always be this URL:

facebook.com/search/top/?q=people&epa=FILTERS&filters=

In this URL we’re going to adjust somethings and add somethings at the end. We’re going to start with selecting the right category you want to search in. For adjusting the category, you change the highlighted part (“top/”) in one of the categories mentioned below:

facebook.com/search/top/?q=people&epa=FILTERS&filters=

These are the categories to choose from:

URL ParameterWhat it does
top/Search top content
posts/Search public posts
people/Search for people
photos/Search for photos
videos/Search for videos
pages/Search for pages
places/Search for places

Now you know how to change the category, we can take a look at changing the search query. Changing the search query is done in the highlighted part of the URL:

facebook.com/search/top/?q=people&epa=FILTERS&filters=

Change ‘people‘ into whatever you’re searching for.
Searching for more than one word? Just keep typing, the spaces will change into ‘%20’. Or type a ‘+’ between the words. (E.g. ‘osintcurious+technisette’ or ‘John+Doe‘ or ‘Ford+Mustang+Red‘).

Attention: You always have to fill in a query. You can’t leave it blank.

So now you know how to change the category and how to change the search query. We’re half way there!

The next step

We’re going to dive into JSON and Base64 now. Don’t be scared! I don’t ‘speak’ or ‘write’ any of these data formats and I was still able to find out how it works. So stick with me please :)! Again, we have a primer for this on our other blog. Check it out!

We’re going to add the last piece to our URL. The best way to explain this is by using an example. Let’s say you want to search for the most recent posts on the topic ‘baseball’. Our URL will look like this:

facebook.com/search/posts/?q=baseball&epa=FILTERS&filters=

search/posts/‘ because we want to find public posts.
‘?q=baseball‘ because this is our search query.

To find the ‘Most recent’ posts, we have to translate a JSON string into Base64. The JSON string for ‘Most recent’ is:

{“rp_chrono_sort”:”{\”name\”:\”chronosort\”,\”args\”:\”\”}”}

To translate JSON into Base64, we’re going to use CyberChef. This is a free online tool and very easy to use. (In our previous post we show you how to use CyberChef for many other things too. Also; there are more tools to help you translate JSON to Base64. Pick whatever tool you’re most comfortable with.)

  1. Choose ‘To Base64’ form the Operations section. Drag this option to the Recipe section and drop.
  2. The ‘Input’ field is blank. Make sure to paste the JSON line, as mentioned above, in this Input field.
  3. You’ll now see the result in the ‘Output’ field. (If you don’t immediately see a result, make sure to check if the ‘Auto bake’ box is ticked.)
  4. Copy the Base64 Output.
Explanation on how to use CyberChef to ‘bake’ JSON to Base64

So we’ve now put a JSON line to Base64. The result of the JSON line for ‘Most recent’ will look like this:

eyJycF9jaHJvbm9fc29ydCI6IntcIm5hbWVcIjpcImNocm9ub3NvcnRcIixcImFyZ3NcIjpcIlwifSJ9

Now we’re going to put the URL and the Base64 together;

facebook.com/search/posts/?q=baseball&epa=FILTERS&filters=eyJycF9jaHJvbm9fc29ydCI6IntcIm5hbWVcIjpcImNocm9ub3NvcnRcIixcImFyZ3NcIjpcIlwifSJ9

Now you’ll see the most recent posts on the topic ‘baseball’.

See? This wasn’t that hard, right?!

Possible options per category

As @djnemec explained in his post, there are a couple of options to filter per category. We’ve summed up the possible options and translated some of them to Base64. This does not go for all options; for some options you’ll need the specific Facebook ID. If you don’t know how to retrieve the ID, scroll up for an explanation.

I must say that some of them have brought me better results than the regular search Facebook offers and some of them have shown me less content. So make sure to keep trying, stay (osint)curious and test queries!

Search/top/ (searching for most popular content)

Most recent popular content

JSON: {"rp_chrono_sort":"{\"name\":\"chronosort\",\"args\":\"\"}"}
Base64: eyJycF9jaHJvbm9fc29ydCI6IntcIm5hbWVcIjpcImNocm9ub3NvcnRcIixcImFyZ3NcIjpcIlwifSJ9

Most popular public content

JSON: {"rp_author":"{\"name\":\"merged_public_posts\",\"args\":\"\"}"}
Base64: eyJycF9hdXRob3IiOiJ7XCJuYW1lXCI6XCJtZXJnZWRfcHVibGljX3Bvc3RzXCIsXCJhcmdzXCI6XCJcIn0ifQ==

Most popular content posted from your own profile

JSON:  {"rp_author":"{\"name\":\"author_me\",\"args\":\"\"}"}
Base64: eyJycF9hdXRob3IiOiJ7XCJuYW1lXCI6XCJhdXRob3JfbWVcIixcImFyZ3NcIjpcIlwifSJ9

Most popular content viewed by your profile

JSON: {"interacted_posts":"{\"name\":\"interacted_posts\",\"args\":\"\"}"}
Base64: eyJpbnRlcmFjdGVkX3Bvc3RzIjoie1wibmFtZVwiOlwiaW50ZXJhY3RlZF9wb3N0c1wiLFwiYXJnc1wiOlwiXCJ9In0=

Most popular content posted by your friends

JSON: {"rp_author":"{\"name\":\"author_friends_feed\",\"args\":\"\"}"}
Base64: eyJycF9hdXRob3IiOiJ7XCJuYW1lXCI6XCJhdXRob3JfZnJpZW5kc19mZWVkXCIsXCJhcmdzXCI6XCJcIn0ifQ==

Most popular content from the pages you like or the groups you are a member of

JSON: {"rp_author":"{\"name\":\"my_groups_and_pages_posts\",\"args\":\"\"}"}
Base64: eyJycF9hdXRob3IiOiJ7XCJuYW1lXCI6XCJteV9ncm91cHNfYW5kX3BhZ2VzX3Bvc3RzXCIsXCJhcmdzXCI6XCJcIn0ifQ==

Most popular content in the groups you are a member of

JSON: {"rp_group":"{\"name\":\"my_groups_posts\",\"args\":\"\"}"}
Base64: eyJycF9ncm91cCI6IntcIm5hbWVcIjpcIm15X2dyb3Vwc19wb3N0c1wiLFwiYXJnc1wiOlwiXCJ9In0=

Most popular content from a specific page
Warning: you’ll need the Facebook ID of the page of interest. Replace ‘PutIDHere’ with that ID number.

JSON: {"rp_author":"{\"name\":\"author\",\"args\":\"PutIDHere\"}"}
Base64: Depends on the ID used. 

Most popular content from a specific group
Warning: you’ll need the Facebook ID of the page of interest. Replace ‘PutIDHere’ with that ID number.

JSON: {"rp_group":"{\"name\":\"group_posts\",\"args\":\"PutIDHere\"}"}
Base64: Depends on the ID used. 

Most popular content tagged with a specific location
Warning: you’ll need the Facebook ID of the page of interest. Replace ‘PutIDHere’ with that ID number.

JSON: {"rp_location":"{\"name\":\"location\",\"args\":\"PutIDHere\"}"}
Base64: Depends on the ID used. 

Most popular content posted within a specific time range
Warning: you’ll have to change the time range. You can change the highlighted parts to your liking.
JSON: {“rp_creation_time”:”{\”name\”:\”creation_time\”,\”args\”:\”{\\\”start_year\\\”:\\\”2019\\\”,\\\”start_month\\\”:\\\”2019-1\\\”,\\\”end_year\\\”:\\\”2019\\\”,\\\”end_month\\\”:\\\”2019-12\\\”,\\\”start_day\\\”:\\\”2019-1-1\\\”,\\\”end_day\\\”:\\\”2019-12-31\\\”}\”}”}
Base64: Depends on the time range used.

Search/posts/ (search public posts)

Public posts

JSON: {"rp_author":"{\"name\":\"merged_public_posts\",\"args\":\"\"}"}
Base64: eyJycF9hdXRob3IiOiJ7XCJuYW1lXCI6XCJtZXJnZWRfcHVibGljX3Bvc3RzXCIsXCJhcmdzXCI6XCJcIn0ifQ==

Your own posts from your profile

JSON:  {"rp_author":"{\"name\":\"author_me\",\"args\":\"\"}"}
Base64: eyJycF9hdXRob3IiOiJ7XCJuYW1lXCI6XCJhdXRob3JfbWVcIixcImFyZ3NcIjpcIlwifSJ9

Posts viewed by your profile

JSON: {"interacted_posts":"{\"name\":\"interacted_posts\",\"args\":\"\"}"}
Base64: eyJpbnRlcmFjdGVkX3Bvc3RzIjoie1wibmFtZVwiOlwiaW50ZXJhY3RlZF9wb3N0c1wiLFwiYXJnc1wiOlwiXCJ9In0=

Posts from your friends

JSON: {"rp_author":"{\"name\":\"author_friends_feed\",\"args\":\"\"}"}
Base64: eyJycF9hdXRob3IiOiJ7XCJuYW1lXCI6XCJhdXRob3JfZnJpZW5kc19mZWVkXCIsXCJhcmdzXCI6XCJcIn0ifQ==

Posts from the pages you like and the groups you are a member of

JSON: {"rp_author":"{\"name\":\"my_groups_and_pages_posts\",\"args\":\"\"}"}
Base64: eyJycF9hdXRob3IiOiJ7XCJuYW1lXCI6XCJteV9ncm91cHNfYW5kX3BhZ2VzX3Bvc3RzXCIsXCJhcmdzXCI6XCJcIn0ifQ==

Posts in the groups you are a member of

JSON: {"rp_group":"{\"name\":\"my_groups_posts\",\"args\":\"\"}"}
Base64: eyJycF9ncm91cCI6IntcIm5hbWVcIjpcIm15X2dyb3Vwc19wb3N0c1wiLFwiYXJnc1wiOlwiXCJ9In0=

Posts from a specific page
Warning: you’ll need the Facebook ID of the page of interest. Replace ‘PutIDHere’ with that ID number.

JSON: {"rp_author":"{\"name\":\"author\",\"args\":\"PutIDHere\"}"}
Base64: Depends on the ID used. 

Posts from a specific group
Warning: you’ll need the Facebook ID of the page of interest. Replace ‘PutIDHere’ with that ID number.

JSON: {"rp_group":"{\"name\":\"group_posts\",\"args\":\"PutIDHere\"}"}
Base64: Depends on the ID used. 

Public posts tagged with a specific location
Warning: you’ll need the Facebook ID of the page of interest. Replace ‘PutIDHere’ with that ID number.

JSON: {"rp_location":"{\"name\":\"location\",\"args\":\"PutIDHere\"}"}
Base64: Depends on the ID used. 

Public posts within a specific time range
Warning: you’ll have to change the time range. You can change the highlighted parts to your liking.
JSON: {“rp_creation_time”:”{\”name\”:\”creation_time\”,\”args\”:\”{\\\”start_year\\\”:\\\”2019\\\”,\\\”start_month\\\”:\\\”2019-1\\\”,\\\”end_year\\\”:\\\”2019\\\”,\\\”end_month\\\”:\\\”2019-12\\\”,\\\”start_day\\\”:\\\”2019-1-1\\\”,\\\”end_day\\\”:\\\”2019-12-31\\\”}\”}”}
Base64: Depends on the time range used.

Search/people/ (search for people)

People within a specific city
Warning: you’ll need the Facebook ID of the page of interest. Replace ‘PutIDHere’ with that ID number.

JSON: {"city":"{\"name\":\"users_location\",\"args\":\"PutIDHere\"}"}
Base64: Depends on the ID used. 

People with a specific education
Warning: you’ll need the Facebook ID of the page of interest. Replace ‘PutIDHere’ with that ID number.

JSON: {"school":"{\"name\":\"users_school\",\"args\":\"PutIDHere\"}"}
Base64: Depends on the ID used. 

People who work at a specific employer
Warning: you’ll need the Facebook ID of the page of interest. Replace ‘PutIDHere’ with that ID number.

JSON: {"employer":"{\"name\":\"users_employer\",\"args\":\"PutIDHere\"}"}
Base64: Depends on the ID used.

Find friends of your own profile

JSON: {"friends":"{\"name\":\"users_friends\",\"args\":\"\"}"}
Base64: eyJmcmllbmRzIjoie1wibmFtZVwiOlwidXNlcnNfZnJpZW5kc1wiLFwiYXJnc1wiOlwiXCJ9In0=

Find mutual friends of your own friends

JSON: {"friends":"{\"name\":\"users_friends_of_friends\",\"args\":\"\"}"}
Base64: eyJmcmllbmRzIjoie1wibmFtZVwiOlwidXNlcnNfZnJpZW5kc19vZl9mcmllbmRzXCIsXCJhcmdzXCI6XCJcIn0ifQ==

Find friends of a specific profile
Warning: you’ll need the Facebook ID of the page of interest. Replace ‘PutIDHere’ with that ID number.

JSON: {"friends":"{\"name\":\"users_friends_of_people\",\"args\":\"PutIDHere\"}"}
Base64: Depends on the ID used. 

Search/photos/ (search photos)

Public photos

JSON: {"rp_author":"{\"name\":\"merged_public_posts\",\"args\":\"\"}"}
Base64: eyJycF9hdXRob3IiOiJ7XCJuYW1lXCI6XCJtZXJnZWRfcHVibGljX3Bvc3RzXCIsXCJhcmdzXCI6XCJcIn0ifQ==

Your own photos posted from your profile

JSON:  {"rp_author":"{\"name\":\"author_me\",\"args\":\"\"}"}
Base64: eyJycF9hdXRob3IiOiJ7XCJuYW1lXCI6XCJhdXRob3JfbWVcIixcImFyZ3NcIjpcIlwifSJ9

Photos viewed by your profile

JSON: {"interacted_posts":"{\"name\":\"interacted_posts\",\"args\":\"\"}"}
Base64: eyJpbnRlcmFjdGVkX3Bvc3RzIjoie1wibmFtZVwiOlwiaW50ZXJhY3RlZF9wb3N0c1wiLFwiYXJnc1wiOlwiXCJ9In0=

Photos posted by your friends

JSON: {"rp_author":"{\"name\":\"author_friends_feed\",\"args\":\"\"}"}
Base64: eyJycF9hdXRob3IiOiJ7XCJuYW1lXCI6XCJhdXRob3JfZnJpZW5kc19mZWVkXCIsXCJhcmdzXCI6XCJcIn0ifQ==

Photos posted by the pages you like and the groups you are a member of

JSON: {"rp_author":"{\"name\":\"my_groups_and_pages_posts\",\"args\":\"\"}"}
Base64: eyJycF9hdXRob3IiOiJ7XCJuYW1lXCI6XCJteV9ncm91cHNfYW5kX3BhZ2VzX3Bvc3RzXCIsXCJhcmdzXCI6XCJcIn0ifQ==

Photos posted by the groups you are a member of

JSON: {"rp_group":"{\"name\":\"my_groups_posts\",\"args\":\"\"}"}
Base64: eyJycF9ncm91cCI6IntcIm5hbWVcIjpcIm15X2dyb3Vwc19wb3N0c1wiLFwiYXJnc1wiOlwiXCJ9In0=

Photos posted by a specific page
Warning: you’ll need the Facebook ID of the page of interest. Replace ‘PutIDHere’ with that ID number.

JSON: {"rp_author":"{\"name\":\"author\",\"args\":\"PutIDHere\"}"}
Base64: Depends on the ID used. 

Photos posted by a specific group
Warning: you’ll need the Facebook ID of the page of interest. Replace ‘PutIDHere’ with that ID number.

JSON: {"rp_group":"{\"name\":\"group_posts\",\"args\":\"PutIDHere\"}"}
Base64: Depends on the ID used. 

Photos tagged with a specific location
Warning: you’ll need the Facebook ID of the page of interest. Replace ‘PutIDHere’ with that ID number.

JSON: {"rp_location":"{\"name\":\"location\",\"args\":\"PutIDHere\"}"}
Base64: Depends on the ID used. 

Photos posted within a specific time range
Warning: you’ll have to change the time range. You can change the highlighted parts to your liking.
JSON: {“rp_creation_time”:”{\”name\”:\”creation_time\”,\”args\”:\”{\\\”start_year\\\”:\\\”2019\\\”,\\\”start_month\\\”:\\\”2019-1\\\”,\\\”end_year\\\”:\\\”2019\\\”,\\\”end_month\\\”:\\\”2019-12\\\”,\\\”start_day\\\”:\\\”2019-1-1\\\”,\\\”end_day\\\”:\\\”2019-12-31\\\”}\”}”}
Base64: Depends on the time range used.

Search/videos/ (search for videos)

Search live videos

JSON: {"videos_source":"{\"name\":\"videos_live\",\"args\":\"\"}"}
Base64: eyJ2aWRlb3Nfc291cmNlIjoie1wibmFtZVwiOlwidmlkZW9zX2xpdmVcIixcImFyZ3NcIjpcIlwifSJ9

Search for episodes

JSON: {"videos_source":"{\"name\":\"videos_episode\",\"args\":\"\"}"}
Base64: eyJ2aWRlb3Nfc291cmNlIjoie1wibmFtZVwiOlwidmlkZW9zX2VwaXNvZGVcIixcImFyZ3NcIjpcIlwifSJ9

Videos posted by your friends and the groups you are a member of

JSON: {"videos_source":"{\"name\":\"videos_feed\",\"args\":\"\"}"}
Base64: eyJ2aWRlb3Nfc291cmNlIjoie1wibmFtZVwiOlwidmlkZW9zX2ZlZWRcIixcImFyZ3NcIjpcIlwifSJ9

Videos tagged to a specific location
Warning: you’ll need the Facebook ID of the page of interest. Replace ‘PutIDHere’ with that ID number.

JSON: {"rp_location":"{\"name\":\"location\",\"args\":\"PutIDHere\"}"}
Base64: Depends on the ID used. 

Videos posted within a specific time range
Warning: you’ll have to change the time range. You can change the highlighted parts to your liking.
JSON: {“rp_creation_time”:”{\”name\”:\”creation_time\”,\”args\”:\”{\\\”start_year\\\”:\\\”2019\\\”,\\\”start_month\\\”:\\\”2019-1\\\”,\\\”end_year\\\”:\\\”2019\\\”,\\\”end_month\\\”:\\\”2019-12\\\”,\\\”start_day\\\”:\\\”2019-1-1\\\”,\\\”end_day\\\”:\\\”2019-12-31\\\”}\”}”}
Base64: Depends on the time range used.

Search/pages (search for pages)

Search for ‘verified’ pages

JSON: {"verified":"{\"name\":\"pages_verified\",\"args\":\"\"}"}
Base64: eyJ2ZXJpZmllZCI6IntcIm5hbWVcIjpcInBhZ2VzX3ZlcmlmaWVkXCIsXCJhcmdzXCI6XCJcIn0ifQ==

Search for pages of local business or places

JSON: {"category":"{\"name\":\"pages_category\",\"args\":\"1006\"}"}
Base64: eyJjYXRlZ29yeSI6IntcIm5hbWVcIjpcInBhZ2VzX2NhdGVnb3J5XCIsXCJhcmdzXCI6XCIxMDA2XCJ9In0=

Search for pages of companies, organisations or institutions

JSON: {"category":"{\"name\":\"pages_category\",\"args\":\"1013\"}"}
Base64: eyJjYXRlZ29yeSI6IntcIm5hbWVcIjpcInBhZ2VzX2NhdGVnb3J5XCIsXCJhcmdzXCI6XCIxMDEzXCJ9In0=

Search for pages of a brand or a product

JSON: {"category":"{\"name\":\"pages_category\",\"args\":\"1009\"}"}
Base64: eyJjYXRlZ29yeSI6IntcIm5hbWVcIjpcInBhZ2VzX2NhdGVnb3J5XCIsXCJhcmdzXCI6XCIxMDA5XCJ9In0=

Search for pages of artists, bands or public figures

JSON: {"category":"{\"name\":\"pages_category\",\"args\":\"1007,180164648685982\"}"}
Base64: eyJjYXRlZ29yeSI6IntcIm5hbWVcIjpcInBhZ2VzX2NhdGVnb3J5XCIsXCJhcmdzXCI6XCIxMDA3LDE4MDE2NDY0ODY4NTk4MlwifSJ9

Search for pages in entertainment

JSON: {"category":"{\"name\":\"pages_category\",\"args\":\"1019\"}"}
Base64: eyJjYXRlZ29yeSI6IntcIm5hbWVcIjpcInBhZ2VzX2NhdGVnb3J5XCIsXCJhcmdzXCI6XCIxMDE5XCJ9In0=

Search for pages of a cause or a community

JSON: {"category":"{\"name\":\"pages_category\",\"args\":\"2612\"}"}
Base64: eyJjYXRlZ29yeSI6IntcIm5hbWVcIjpcInBhZ2VzX2NhdGVnb3J5XCIsXCJhcmdzXCI6XCIyNjEyXCJ9In0=

Search/places

According to @djnemec blog he hasn’t figured this option out yet. I haven’t either.
When looking at ‘Places’ you have a couple of filtering options, but nothing that can be translate from/to Base64. If you’ve looked into this and found the solution, we’d love to know!

I get errors when executing the queries

You probably get either a blank page or a page that says that the page doesn’t exists.
If you get a blank page, you’re doing something wrong in the query. This means that, for example, you’ve tried to search for ‘Most recent’ in the category ‘People’, which is not possible. Check to see if you’ve selected the right category and the right query. Rebuild your query just to be sure.
If you’re seeing the ‘This page does not exists”-error; this means that you’ve misspelled something in your query. Check if you’ve copied the right Base64 line, used the right base URL as mentioned above, did not accidentally removed a character somewhere and read the query character for character.

Here I made a mistake in the base URL; it should have been:
‘/?q=baseball”
Because I forgot the question mark, my query didn’t work.

There is a chance you’re getting errors while everything is spelled correctly. This might have to do with the fact that the quotations in your JSON string aren’t straight but slightly tilted. Make sure you use the straight quotations.

Combining the queries

So far so good right? So if you’ve managed to get this far, we’re going to step it up a notch: we’re going to combine queries. This way you can, for example, search for everyone named ‘John’, who live in ‘Mountain View, California’ and work for ‘Google’. This will be all featured in the next blog.
If you’re ready, press here to continue and read the second part!

CLICK here for ‘The new Facebook Graph Search – part 2’

Did you find an error? Or find an interesting query? Please share it in the comments :)!

P.S. Liked this posted? Support us via Patreon from just $1 a month!

43 thoughts on “The new Facebook Graph Search – part 1

  1. Great article, is searching individual user likes / comments / interactions impossible using this method?

    1. There are no effective ways to search likes/comments/etc at this point. But stay tuned, we are actively looking for that.

    1. Yes, but it’s a bit messy. You should search the name and then toggle to photos. They’ll be in there, even if they were untagged. But it’s a proper mess. Better if you do some research first and use the filter on the side to look for photos posted by friends, family members or employers.

  2. What am I doing wrong – can’t seem to get many of the “people”-searches to work? For instance if I am looking for people who work at a certain company?

    1. Without further information about the BASE64-encoded JSON that you have sent to FB, it will be very challenging to troubleshoot this. Overall, ensure that the JSON in the string you send to FB is properly formatted and then BASE64 encoded.

  3. I tried this example without any modification
    facebook.com/search/posts/?q=baseball&epa=FILTERS&filters=
    I used CyberChef to transfer this Json
    {“rp_chrono_sort”:”{\”name\”:\”chronosort\”,\”args\”:\”\”}”}
    but the result is different from the one appeard to you. this is base64 you provided:
    eyJycF9jaHJvbm9fc29ydCI6IntcIm5hbWVcIjpcImNocm9ub3NvcnRcIixcImFyZ3NcIjpcIlwifSJ9
    and this is what I get
    e+KAnHJwX2Nocm9ub19zb3J04oCdOuKAnXtc4oCdbmFtZVzigJ06XOKAnWNocm9ub3NvcnRc4oCdLFzigJ1hcmdzXOKAnTpc4oCdXOKAnX3igJ19
    when i try my result it gives be a blank page but when i try yours it gives me results. here is the complete link as i copy&paste it:
    https://www.facebook.com/search/posts/?q=baseball&epa=FILTERS&filters=e+KAnHJwX2Nocm9ub19zb3J04oCdOuKAnXtc4oCdbmFtZVzigJ06XOKAnWNocm9ub3NvcnRc4oCdLFzigJ1hcmdzXOKAnTpc4oCdXOKAnX3igJ19

    1. Ahhh. There’s the issue. The quotes in what you pasted are “smart quotes” instead of regular ones. Ensure that the quotes are straight ones and not curved. I like pasting content I get from websites into a regular text editor like TextPad (Mac) or Notepad (Windows) or gedit (Linux) so I can correct these things. Try that and let us know.

  4. Hi there, this is really cool! Is there a way to do combinations, like people who work for a certain employer and live in a certain city, similar to how the old graph search would work?

  5. can I search someone’s groups? like I know a person ,and I want to know what groups he/she joined? does this possible?

    1. Unfortunately you can’t ‘Graph Search’ this anymore. But you can search their profile to see if there are any public groups you can see. But if someone is a member of a closed group, you won’t be able to see it. But if you’ve found another solution, would love to hear it :)!

      1. I can’t seem to find any groups at all in my friends profile, public or closed. Is this option gone or am I missing something?

      2. HI Lasse, I’ve tried this too, but couldn’t find the groups either… Not sure if this is because my FB friends aren’t in any, or that they removed the option completely. When I typ ‘group’ in the search bar, select ‘All’ as a category and than ‘Your friends’ as a filter, I get even stranger results; I get posts from my friends friends who post something in a public group. Not sure why this is, I’ll try to figure it out and come back to you later. My apologies for any inconvenience! Cheers, Technisette

  6. Greetings from Los angeles! I’m bored at work so I decided to check out your site on my iphone during lunch break. I love the info you present here and can’t wait to take a look when I get home. I’m surprised at how fast your blog loaded on my phone .. I’m not even using WIFI, just 3G .. Anyways, superb blog!

  7. Unfortunately, photo search has a significant defect — max 9 thumbnails are displayed. There is the “See All” button, but when you click it two bad things happen:
    1) All filters go away, you get near all photos for the given keywords (not really ALL, FB tries to limit the result size).
    2) The address line switches to old GRAPH search with magic hash (f=…) and you can’t modify it anymore.
    The GUI provides some basic filters, but for date the choice is only: 2019, 2018, 2017. Years before 2017 and month/day selection aren’t available.

    Any hacks to improve photo search?

  8. Hi. I need to find companies by categories. Before facebook changes, I just put the category ID in the facebook search URL and the companies were numbered along with a map on the side. Then I could locate all the companies in the category by updating directly to a specific location on the map. Is there any tool to do this? Thanks for everything

    1. That search seems to be completely gone. We are still looking for a way to do it. If you find anything, please let us know!

  9. I can’t seem to get the people search by employer working. This is what I type in:
    facebook.com/search/people/?q=people&epa=FILTERS&filters=eyJlbXBsb3llciI6IntcIm5hbWVcIjpcInVzZXJzX2VtcGxveWVyXCIsXCJhcmdzXCI6XCIzOTI3NTE1ODA3NDExMzIKXCJ9In0=

    The last bit after “&filters=” is the Base 64 output for the input {“employer”:”{\”name\”:\”users_employer\”,\”args\”:\”392751580741132
    \”}”}

    with 392751580741132 being the page_id of the employer I am interested in.

    Why isn’t this working?

    1. It may be that the ending “=” sign is giving problems. You need to URLEncode all characters after doing the Base64 encode. The = sign translates to %3D – eyJlbXBsb3llciI6IntcIm5hbWVcIjpcInVzZXJzX2VtcGxveWVyXCIsXCJhcmdzXCI6XCIzOTI3NTE1ODA3NDExMzIKXCJ9In0%3D

  10. facebook.com/search/people/?q=people&epa=FILTERS&filters=IHsiZW1wbG95ZXIiOiJ7XCJuYW1lXCI6XCJ1c2Vyc19lbXBsb3llclwiMjYwMzEzNzc3NjUyMDg4XCJhcmdzXCI6XCJcIn0ifQ==

    Hi I am having the same problem with the people search by employer. This is the page ID of the employer and above is the full search query I am using after using cyber chef – is it the same problem with the == and how do I correct this myself please!

    1. Hi OldLadyOSINT, there are a couple of things that can cause an error. Looking at your URL, my guess is that your JSON might be wrong. When I ‘translate’ the JSON employer string into Base64 (using the ID you’ve provided) this is what I get in return: https://www.facebook.com/search/people/?q=people&epa=FILTERS&filters=eyJlbXBsb3llciI6IntcIm5hbWVcIjpcInVzZXJzX2VtcGxveWVyXCIsXCJhcmdzXCI6XCI1NDg1MjY2NDU1NDEzNDhcIn0ifQoK

      But; because your query is ‘people’ you might not get any results. Unfortunately you’ll have to be more specific on who you’re trying to find there. Maybe using Google in order to search for people who work here might be giving you more luck. Maybe using something like ‘site:facebook.com “company name” “(worked at OR works at)” ‘. Try to play around with these Google Dorks a little to see if that might bring you more luck 🙂
      Good luck! Technisette

  11. Hi,
    Total noob here; I’m trying to figure out what keyword to use when searching for an individual’s friends list. Any advice or tips?

  12. Wow that was strange. I just wrote an really long comment but after I clicked submit my comment didn’t appear. Grrrr… well I’m not writing all that over again. Anyways, just wanted to say excellent blog!

  13. Hi,
    First of all, great job!!
    I’d like to know if we can find for example “anyone living in Paris who like Tennis”?
    Thanks!

  14. Hi! Is there a way to find people who like my facebook page and are from specific location? I know how to find for people from certain location but is there any query to combine with people who like specific FB page? Thanks!

  15. I have been trying for days to get my URL correct, but maybe I’m confused… I’m trying to search for people’s public comments on public pages. Can this be done?

Leave a Reply

Your email address will not be published. Required fields are marked *