Don't waste time and resources scraping sites or trying to unfurl urls.
$ curl -X GET "https://opengraph.io/api/1.1/site/url_encoded_link?app_id=xxxxxx"
{
"hybridGraph": {
"title": "Google",
"description": "Search the world's information...",
"image": "http://google.com/images/srpr/logo9w.png",
...
},
"openGraph": {
// ...
},
"htmlInferred": {
// ...
}
}
Support More Sites
We update our scraping algorithms daily so you don’t have to worry about it. Don’t spend countless development hours supporting every last site out there!
Not Just Open Graph
Many sites still don’t provide the proper Open Graph tags in their markup but that doesn’t matter! Our system will fallback and make very smart guesses based on page content.
Scrape those Products
We parse html from URLs you provide for products being offered and provide them back in a common format to make displaying it in your product a breeze. When available, our API provides back prices, descriptions, and images.
Advanced Proxy Pool
We manage pools of millions of proxies across dozens of ISPs and intelligently route your request to avoid being blocked to get your the information you need without the hassle!
Discover the simplicity of OpengraphIO and experience how effortless it is to harness its power.
Check Out Our Awesome Documentation
require 'opengraph-io'
opengraph = OpenGraphIO.new({app_id: '!!!!YOUR_APP_ID!!!'})
ogData = opengraph.get_site_info('https://github.com')
siteDescription = ogData["hybridGraph"]["description"]
print siteDescription
using System;
using System.Net;
using System.IO;
using System.Json;
namespace CSharpDemo
{
class MainClass
{
public static void Main (string[] args)
{
var url = "http://cnet.com";
var urlEncoded = Uri.EscapeDataString(url);
var requestUrl = "https://opengraph.io/api/1.1/site/" + urlEncoded;
// Make sure to get your API key! No need for a CC
requestUrl += "?app_id=XXXXXXXXXXXXXXXXXXXXXXXX";
var request = WebRequest.Create(requestUrl);
request.ContentType = "application/json;";
string text;
var response = (HttpWebResponse)request.GetResponse();
using (var sr = new StreamReader(response.GetResponseStream()))
{
text = sr.ReadToEnd();
dynamic x = JsonConvert.DeserializeObject(text);
Console.WriteLine("Title " + x.hybridGraph.title);
Console.WriteLine("Description " + x.hybridGraph.description);
Console.WriteLine("Image " + x.hybridGraph.image);
}
}
}
}
$siteUrl = 'http://cnet.com';
$requestUrl = 'https://opengraph.io/api/1.1/site/' . urlencode($siteUrl);
// Make sure you include your free app_id here! No CC required
$requestUrl = $requestUrl . '?app_id=XXXXXXXXXXXXXXXXXXXXXXXX';
$siteInformationJSON = file_get_contents ($requestUrl);
$siteInformation = json_decode($siteInformationJSON, true);
print 'Title ' . $siteInformation['hybridGraph']['title'] . '\n';
print 'Description ' . $siteInformation['hybridGraph']['description'] . '\n';
print 'Logo URL ' . $siteInformation['hybridGraph']['image'] . '\n';
var opengraph = require('opengraph-io')({appId: 'xxxxxx'}); // <-- Enter your app_id!
var express = require('express');
var app = express();
app.get('/site/info', function (req, res) {
var siteUrl = req.query['url'];
opengraph.getSiteInfo(siteUrl, function(err, siteInfo){
console.log('hey err', err);
console.log('hey result', siteInfo);
res.json(siteInfo);
});
});
app.listen(3000, function() {
console.log('Example app listening on port 3000!');
console.log('Test this proxy with the following url:', 'http://localhost:3000/site/info?url=https%3A%2F%2Fnytimes.com');
});
var url = 'http://cnet.com';
var urlEncoded = encodeURIComponent(url);
var apiKey = 'xxxxxxxxxx';
// The entire request is just a simple get request with optional query parameters
var requestUrl = 'https://opengraph.io/api/1.1/site/' + urlEncoded + '?app_id=' + apiKey;
$('#loadOpenGraphData').click(function(){
$.getJSON(requestUrl, function(json) {
console.log('hey result', json);
// Throw the object in the console to see what it looks like!
console.log('json', json);
// Update the HTML elements!
$('#title').text(json.hybridGraph.title);
$('#description').text(json.hybridGraph.description);
$('#icon').attr('src', json.hybridGraph.image);
});
});
Choose a plan that's right for you
1000 API Credits | |
1 Concurrent Request | |
No credit card required | |
Priority Support | |
Concurrent proxy request | |
Superior Proxy | |
Multiple Users |
50,000 API Credits | |
3 Users | |
$1 / thousand API Credits after 50k | |
5 Concurrent Requests | |
Email Support |
250,000 API Credits | |
Unlimited Users | |
1 Dedicated Worker | |
$0.80 / thousand API Credits after 250k | |
25 Concurrent Requests | |
Email Support |
1,000,000 API Credits | |
Unlimited Users | |
2 Dedicated Workers | |
$0.50 / thousand API Credits after 1 million | |
100 concurrent proxy request | |
Priority Support |
Growing plan features plus... | |
---|---|
Unmetered dedicated | |
Custom domain | |
Development services | |
Available SLA | |
Phone support | |
Cancel anytime |
Many websites like Twitter block bots to prevent link unfurling activity, the list below breaks down the difference between openGraph and hybridGraph:
Unfortunately, we are constantly trying to battle abuse of our free service, and this is the result. People will jump through a lot of hoops to save $20 a month.
If you end up using the product for anything more than development, we would recommend switching to the paid plan. If you end up being dissatisfied with the service, or just find it not to be a fit, reach out to us and let us know… we will be happy to help you out.
We do not perform any sanitizing of data that comes back from sites we process.
As part of our commitment to user privacy, we provide clear instructions on how users can request their data to be deleted. If you wish to delete your account, you can do so by going to your profile page and selecting the ‘delete account’ option. Upon deletion, all of your data will be permanently removed from our systems. Alternatively, if you prefer, you can contact our support team at support@opengraph.io and request that your data be deleted. We will process your request promptly and with the utmost care to ensure that your data is completely removed from our servers.
Can't find the answer you're looking for? Please chat to our friendly team. We usually respond within 24 hours.
Contact Us