How To Get Historical "Facebook Page Likes" Data via Graph API or FQL - facebook-graph-api

Was wondering if anyone knows how to get the historical data for any Facebook Page.
For example, number of fans for RedBull fan page on a given day in the past or for a given period that ends today so that I can show fan development of any page over a given period.
I tried it with the graph API and FQL (insights) but no luck.
https://graph.facebook.com/{USERNAME}/insights?fields=likes&period('week')&end_time_date('2011-06-26') --> empty result
Pulling the data via FQL also returns no results, plus it seems without a read_insights permission nothing is possible for page data
I'd need this to be available with only a generic user access token. This data is publicly available anyway. Result should be somewhat like this: http://www.socialbakers.com/facebook-pages/australia/

https://graph.facebook.com/{{pagename}}/insights/page_views?access_token={{access_token_key}}&since=1420070400&until=1421625600
Since & until parameter in the above code takes in unix time.
add necessary information in the {{ }} and this code should work.

Without insight permission I recommend that you write something to perform a nightly query on the page graph and record the stats you need. If the page is public most of the information shown on that site is available.
You could also scrape info from http://pagedata.appdata.com if the page has already been listed...

Related

Facebook opengraph insights api on specific post id from my app

I want to build a dashboard that returns more customized insights from the insights generated by app.
The app is a facebook connect website that users visit and view a list of products. They can post to facebook about that particular product by sharing a custom story that incorporates that product on their timeline.
When I go to the insights for my app, it does a great job of showing me all social impressions for all custom stories that were generated on my site.
I'd like to narrow that down even more for specific products.
My plan is to record the object ids that are generated by these actions and link them to a partucular product in my database.
I'd then like to create a new dashboard page that will allow me to login, request read_insights permission from me and then use that object_id:product mapping from my database to show how many social impressions where recorded for a given product's object_ids.
Is this possible? I've read alot about it but still haven't found the most elegant way to get a segmented report of social impressions per type of content that was posted.
Thanks for your time.
The implementation all depends on which platform you want your app to run on.
The first major component is you must have a Facebook developers account which is easy to signup for. Just go to developers.facebook.com and register. Takes like 2 mins. After that you will need to create your first app and add the correct domain name where your app will be hosted and what platform it will run on. (iOS, Android, Web, ect.) Once that is finished you can make your app public so you can use the Facebook API in your code.
For the app creation itself. The first thing you need to do is import the correct API for your platform. Which you can find a walk through at https://developers.facebook.com/docs/. Once the API is imported you must build a Facebook object which contains your app id and possibly app secret. If you're using JavaScript you don't want to use the app secret because it will be visible to the public.
Now that you have your Facebook object you must require the app users to log in and grant permission to your app. You can add extended permissions to your log in process by adding a scope value to the log in button generated by Facebook. Here is an example.
<fb:login-button id="loginBtn" max_rows="1" scope="basic_info,read_insights,manage_pages" size="medium" show_faces="false" auto_logout_link="true"></fb:login-button>
After the user is logged in you can now query information from the users account using Facebook Api calls to Social Graph. Facebook also provides a tool to help you figure out what information you can query. https://developers.facebook.com/tools/explorer
Everything else you want to do with the app can be done by Facebook API calls. You just need to insure you grant the user the correct permissions before making the API calls.
API calls are a little different depending on which language syntax you are using but they all follow the same data model and return some array of responses which can be parsed using JSON or the standard array format. The Graph Explorer tool listed above will show you the output for your queries so you can handle them accordingly.
I hope this helps gets you started.
EDITED
Here's the implementation in JavaScript
function getMetric(){
// make the API call
FB.api(
"/{app-id}/insights/application_opengraph_story_impressions",
function (response) {
if (response && !response.error) {
/* handle the result */
}
}
);
}
Here's the reference now that Facebook docs are back up https://developers.facebook.com/docs/graph-api/reference/insights
application_opengraph_story_impressions will probably give you the total impression of all stories made by your app. I ran it against my Facebook app and it came back empty but I don't have any stories so it might work with your's. Also to note in the documentation there is an * by this metric and I could't find what that means.
I'm pretty sure that right now Facebook don't give developers ability to get insights about app custom stories.
Currently Facebook documentation has the following Graph APIs for Insights data:
/{page-id}/insights
/{app-id}/insights
/{domain-id}/insights
/{post-id}/insights (where this is a Page post)
So /{post-id}/insights won't work because custom story is actually user's post and others endpoints don't apply to your case.
As far as I know the only other option to access Insights is FQL. For that you'd use insights table in a manner similar to this:
SELECT ... FROM insights WHERE object_id = ... AND metric = ... AND end_time = ... AND period = ...
Now most likely this also won't work with your custom story posts (I don't have posts which I could try it on right now, so I can't tell) but at least it is not explicitly stated so in the documentation, so you should probably try it out.
UPDATE:
I wasn't able to get any insights data via FQL, although as far as I understand the following code should have gave me at least something (object id is for my page):
SELECT breakdown, end_time, event, metric, object_id, period, value FROM insights WHERE object_id = 224981264214413 and metric = 'page_fans' and period = period('lifetime') and end_time = 1395597892
But it results just in
{
"data": []
}
Facebook also has some pretty old bug report about similar topic: https://developers.facebook.com/x/bugs/508088155954330/ where they confirmed the issue, assigned it, and... did nothing to fix it for 6 months.
In case FQL doesn't work, my suggestion to you is - use your own analytics code to track the creation of custom stories and get the friend count of the users. It won't show you the real exposure of the posts but at least you will see some data on which types of custom stories where posted more often and what was the maximum potential friend count that could have seen them. By the way - to make charting easier, you could use Google Analytics events for that.

Is it possible to get insight metrics using Facebook API

I am interested in fetching all data available on this page (https://developers.facebook.com/docs/opengraph/insights/) with Facebook API. Is it possible to get raw data to use with my own graphing tools?
Yes. You can query the insights table using either the Graph API or FQL.
The insights documentation is not very clear, and in FQL especially, you need to manually ask for data points one period at a time. The FQL documentation is worth reading even if you're using the API since it defines all the different metrics which are available.
Visit the Graph API Explorer, get an access token with the Extended Permission read_insights and type /PAGE_ID_OR_USERNAME/insights into the search box. You'll see a bit of what is available.
You can drill down by adding parameters to the end of the url. For instance /PAGE_ID_OR_USERNAME/insights/page_fan_adds_unique/day?since=-1 month gets you a json object with the unique page fan adds each day for about the past month.
You are only able to get insights data for a page where you have admin rights.

How can I get review-rank in the Amazon Product Advertising API?

Using the Amazon API it seems that it's not possible anymore to get the review rank information of a product. Checking this link the note says:
As of November 8, 2010, only the iframe URL is returned in the request
content.
However, testing with the params they suggest to get the Iframe, but it seems that now even the Iframe doesn't work anymore. Thus, even in the latest API Reference in the chapter "Motivating Customers to Buy" the part "reviews" is completely missing.
However: Since I'm also very interested if it's still possible somehow to get the review rank information - maybe even not using the Amazon API but a competitor's API to get review rank information - I hope someone can provide something helpful on this topic.
Preamble: I'm not sure that I understand exactly what you are looking for here but I'll share my findings anyways.
I was able to retrieve the iframe URL for the reviews and was able to see the reviews iframe after embedding it into an .html page. I used the following attributes to retrieve the iframe URL:
Operation=ItemLookup&
ItemId=1451648537&
ResponseGroup=Reviews&
TruncateReviewsAt="256"&
IncludeReviewsSummary="False"&
Version=2011-08-01 <= important: can't be less than this version
AssociateTag=<YourAssociateTag> <= required when using this version, can be anything (not verified by Amazon)
The relevant part of the response:
<Item>
<ASIN>1451648537</ASIN>
<CustomerReviews>
<IFrameURL>http://www.amazon.com/reviews/iframe?akid=<YourAmazonKey>&alinkCode=xm2&asin=1451648537&atag=<YourAssociateTag>&exp=2012-01-06T02%3A10%3A38Z&summary=0&truncate=256&v=2&sig=kjWPue1N75%2FiI1hW67XYApWxnKeT2tlT%2FJ1rw4WLlUo%3D</IFrameURL>
<HasReviews>true</HasReviews>
</CustomerReviews>
</Item>
Note that you will not be able to use this iframe URL due to the fact that (1) I've removed my Amazon Key and the Associate Tag that was used to create the signature and (2) it expires 24 hours after the call.
If you use the same attributes that I've used, paying close attention to the Version and AssociateTag fields, you will get a result with an iframe URL included.
I then embedded the url in an iframe:
<html>
<body>
<iframe src="http://www.amazon.com/reviews/iframe?akid=<YourAmazonKey>&alinkCode=xm2&asin=1451648537&atag=<YourAssociateTag>&exp=2012-01-06T02%3A10%3A38Z&summary=0&truncate=256&v=2&sig=kjWPue1N75%2FiI1hW67XYApWxnKeT2tlT%2FJ1rw4WLlUo%3D"/>
</body>
</html>
Which looked like the following:
As I said in the preamble, I'm unsure if this is what you are looking for since the requirements for the bounty was:
...to get access to amazons reviewrank informations
This isn't exactly the review rank information but the actual reviews and I take the meaning of review rank info to be more along the lines of the data itself (such as 100 reviews # 4 stars etc.). However, in your question you stated that the iframe did not work:
However, testing with the params they suggest to get the Iframe, but it seems that now even the Iframe doesn't work anymore.
So I thought that I would at least provide you with the proper method of getting and using the iframe.
Amazon has completely removed support for accessing rating/review information from their API. The docs mention a Response Element in the form of customer rating, but that doesn't work either.
Google shopping using Viewpoints for some reviews. I came across a good article for this
I know you said you don't want to screen scrape, but as that is the only solution available, I have been using the screen scraping solution for some time and it has not caused me a problem yet, although I agree it is fragile. If my screen scraping code does not get what it expects, it will log an error for me to adjust the code, and it will degrade gracefully to just display a link to open the review information in an iFrame. This error has yet to trigger and the solution has worked great for us.

using POST request on Facebook Graph API

I want to access graph API to get the number of shares for different pages of my website. I can use the GET method to do so but I want to use POST so that I can send more url in a single request. The current implementation I have for GET is
http://graph.facebook.com/?ids=http://umairj.com/,http://umairj.com/146/how-to-clear-facebook-shares-cache/
Can anyone please help ?
This is badly documented (I mean I didn't find the information when I looked for it!), but there is way to pass all the parameters to the Graph API through POST method:
in your example, you should POST to http://graph.facebook.com/
with the following DATA:
ids=http://umairj.com/,http://umairj.com/146/how-to-clear-facebook-shares-cache/&method=GET
I'm not sure about the encoding of the POST DATA..in our case, we were just using ids=.....,.....,..... with numeric FB user ids and we didn't need to do any encoding, but you might need some url-encoding
Don't forget the &method=GET or it won't work ! It helped me break the url length limit that was causing bugs on Internet Explorer (I think RFC says 1024 characters, all browsers support much more, IE only ~4096 ) when we were passing too many ids through GET
if you wish to access non-public information, the same trick works with https://graph.facebook.com/ , provided you add &session_token=***** to your query
You can try to run a FQL query to get the stats for multiple urls. Facebook link_stat documentation has an example of how to do this. I'm pretty sure you can't POST to either the FQL query or the graph api you were using though unfortunately. Your FQL query would be:
SELECT url, share_count, like_count FROM link_stat WHERE url IN("http://umairj.com/","http://umairj.com/146/how-to-clear-facebook-shares-cache/")
Here is the url after properly url encoding the query: https://api.facebook.com/method/fql.query?query=SELECT+url%2C+share_count%2C+like_count+FROM+link_stat+WHERE+url+IN%28"http%3A%2F%2Fumairj.com%2F"%2C"http%3A%2F%2Fumairj.com%2F146%2Fhow-to-clear-facebook-shares-cache%2F"%29&format=json
Facebook provides a FQL testing tool to help.
Update: their API documention (see section titled "Delete) mentions you can do an HTTP POST to any of their methods and set the variable method to the method you want. You could try this, although this was designed for delete and put methods not available to javascript clients. It still looks like is all url based so I'm not sure it will take a form encoded parameter like you are looking to do.
I work at Facebook and I've updated our Graph API documentation to document this work around for very large requests:
https://developers.facebook.com/docs/graph-api/using-graph-api#largerequests

Facebook Page - Get Post feedback and impression via Graph API

I'm trying to get some insights on a list of Posts by a Page on Facebook.
To be specific, I want to get the information highlighted in this blog post via the API.
But I can't figure out how, anyone knows how?
As far as I know it's only possible using the "stream" table. So you've got to use FQL to query this data. Using this technique you'll only get the impressions directly. Feedback rate can be calculated by adding #comments and #likes and dividing the result by #impressions. Hope they'll add this to the insights graph api as well.
MartinHN
Refer to https://developers.facebook.com/docs/reference/api/#analytics
If you are trying to aggregate multiple pages or a page other than the requesting app then you may need grant read_insights permissions to your application.
Refer to http://developers.facebook.com/docs/reference/api/insights/