Google Organic Search Result API
Google search main results are called organic results. Some results are simple and straightforward. Others include rich
data like reviews, thumbnails, and other special snippets. SERPHouse is able to scrape, extract, and make sense of both
simple and more complex organic results.When SERPHouse encounters organic results, we add them to our JSON output
as the array organic.For each organic result, we are able to extract its position, title, site_title, link, displayed_link,
cached_page, snippet, sitelinks and more.
data like reviews, thumbnails, and other special snippets. SERPHouse is able to scrape, extract, and make sense of both
simple and more complex organic results.When SERPHouse encounters organic results, we add them to our JSON output
as the array organic.For each organic result, we are able to extract its position, title, site_title, link, displayed_link,
cached_page, snippet, sitelinks and more.
JSON structure overview
{
"organic": [
{
"position": 1,
"site_title": "Wikipedia",
"title": "Black tea",
"link": "https://en.wikipedia.org/wiki/Black_tea",
"displayed_link": "https://en.wikipedia.org › wiki › Black_tea ",
"cached_page": "",
"snippet": "Black tea is a type of tea that is more oxidized than oolong, yellow, white and green teas. Black tea is generally stronger in flavour than other teas.",
"sitelinks": {
"inline": [
{
"link": "https://en.wikipedia.org/wiki/Yellow_tea",
"title": "Yellow tea"
},
{
"link": "https://en.wikipedia.org/wiki/Compressed_tea",
"title": "Compressed tea"
},
{
"link": "https://en.wikipedia.org/wiki/Gunfire_(drink)",
"title": "Gunfire (drink)"
}
],
"expanded": [
{
"link": "https://www.lemontreehotels.com/hotels.aspx",
"title": "Chain of Hotels in India"
},
{
"link": "https://www.lemontreehotels.com/contact-us.aspx",
"title": "Contact Us"
},
{
"link": "https://www.lemontreehotels.com/about-us.aspx",
"title": "About Us"
}
]
}
}
]
}
Results for: black tea
https://api.serphouse.com/serp/live?q=black+tea&domain=google.com&lang=en&device=desktop&serp_type=web&loc=Austin,Texas,United States&loc_id=1026201&verbatim=0&gfilter=0&page=1&num_result=100

Curl
Ruby
Python
Node.js
PHP
Java
GO
Curl
curl -X POST \
https://api.serphouse.com/serp/live \
-H 'accept: application/json' \
-H 'authorization: Bearer API_TOKEN' \
-H 'content-type: application/json' \
-d '{
"data": {
"domain":"google.com",
"lang":"en",
"q": "Black tea",
"loc":"Texas,United States",
"device": "desktop",
"serp_type": "web"
}
}'
Ruby
require 'uri'
require 'net/http'
url = URI("https://api.serphouse.com/serp/live")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["accept"] = 'application/json'
request["content-type"] = 'application/json'
request["authorization"] = 'Bearer API_TOKEN'
request.body = '{"data": {
"domain": "google.com",
"lang": "en",
"q": "Black tea",
"loc": "Texas,United States",
"device": "desktop",
"serp_type": "web"
}}'
response = http.request(request)
puts response.read_body
Python
import requests, json
url = "https://api.serphouse.com/serp/live"
payload = json.dumps({
"data": {
"domain": "google.com",
"lang": "en",
"q": "black tea",
"loc": "Texas,United States",
"device": "desktop",
"serp_type": "web"
}
})
headers = {
'accept': "application/json",
'content-type': "application/json",
'authorization': "Bearer API_TOKEN"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Node.js
var axios = require('axios');
var data = JSON.stringify({
data: {
domain: 'google.com',
lang: 'en',
q: 'black tea',
loc: 'Texas,United States',
device: 'desktop',
serp_type: 'web'
}
});
var config = {
"method": "POST",
"url": "https://api.serphouse.com/serp/live",
"headers": {
"content-type": "application/json",
"authorization": "Bearer API_TOKEN"
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error){
console.log(error);
});
PHP
$client = new GuzzleHttp\Client();
$headers= [
'Authorization' => 'Bearer API_TOKEN',
'Content-Type' => 'Application/json',
];
$body = '{
"data" : {
"domain": "google.com",
"lang": "en",
"q": "black tea",
"loc": "Texas,United States",
"device": "desktop",
"serp_type": "web"
}}';
$request = new GuzzleHttp\Psr7\Request('POST','https://api.serphouse.com/serp/live', $headers, $body);
$res = $client->sendAsync($request)->wait();
Java
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
JSONObject jsonObject = new JSONObject();
JSONObject data = new JSONObject();
data.put("domain", "google.com");
data.put("lang", "en");
data.put("q", "black tea");
data.put("loc", "Texas,United States");
data.put("device", "desktop");
data.put("serp_type", "web");
jsonObject.put("data", data);
String bodyJson = jsonObject.toString();
RequestBody body = RequestBody.create(mediaType, bodyJson);
Request request = new Request.Builder()
.url("https://api.serphouse.com/serp/live")
.method("POST", body)
.addHeader("content-type", "application/json")
.addHeader("authorization", "Bearer API_TOKEN")
.build();
Response response = client.newCall(request).execute();
System.out.println(response.body().string());
GO
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.serphouse.com/serp/live"
payload := strings.NewReader(`{"data": {
"domain":"google.com",
"lang": "en",
"q": "black tea",
"loc": "Texas,United States",
"device": "desktop",
"serp_type": "web"}}
`)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("accept", "application/json")
req.Header.Add("content-type", "application/json")
req.Header.Add("authorization", "Bearer API_TOKEN")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
{
...
"organic": [
{
"position": 1,
"site_title": "Wikipedia",
"title": "Black tea",
"link": "https://en.wikipedia.org/wiki/Black_tea",
"displayed_link": "https://en.wikipedia.org \u203a wiki \u203a Black_tea ",
"cached_page": "",
"snippet": "Black tea is a type of tea that is more oxidized than oolong, yellow, white and green teas. Black tea is generally stronger in flavour than other teas.",
"sitelinks": {
"inline": [
{
"link": "https://en.wikipedia.org/wiki/Yellow_tea",
"title": "Yellow tea"
},
{
"link": "https://en.wikipedia.org/wiki/Compressed_tea",
"title": "Compressed tea"
},
{
"link": "https://en.wikipedia.org/wiki/Gunfire_(drink)",
"title": "Gunfire (drink)"
}
]
}
},
{
"position": 2,
"site_title": "Healthline",
"title": "10 Evidence-Based Health Benefits of Black Tea",
"link": "https://www.healthline.com/nutrition/black-tea-benefits",
"displayed_link": "https://www.healthline.com \u203a ... \u203a Nutrition ",
"cached_page": "",
"snippet": "Black tea is rich in antioxidants and may provide health benefits, including improved heart and gut health and a reduced risk for certain diseases."
},
]
...
}
Results for: lemon tree hotels
https://api.serphouse.com/serp/live?q=lemon+tree+hotels&domain=google.com&lang=en&device=desktop&serp_type=web&loc=Austin,Texas,United States&loc_id=1026201&verbatim=0&gfilter=0&page=1&num_result=100

Curl
Ruby
Python
Node.js
PHP
Java
GO
Curl
curl -X POST \
https://api.serphouse.com/serp/live \
-H 'accept: application/json' \
-H 'authorization: Bearer API_TOKEN' \
-H 'content-type: application/json' \
-d '{
"data": {
"domain":"google.com",
"lang":"en",
"q": "lemon tree hotels",
"loc":"Texas,United States",
"device": "desktop",
"serp_type": "web"
}
}'
Ruby
require 'uri'
require 'net/http'
url = URI("https://api.serphouse.com/serp/live")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["accept"] = 'application/json'
request["content-type"] = 'application/json'
request["authorization"] = 'Bearer API_TOKEN'
request.body = '{"data": {
"domain": "google.com",
"lang": "en",
"q": "lemon tree hotels",
"loc": "Texas,United States",
"device": "desktop",
"serp_type": "web"
}}'
response = http.request(request)
puts response.read_body
Python
import requests, json
url = "https://api.serphouse.com/serp/live"
payload = json.dumps({
"data": {
"domain": "google.com",
"lang": "en",
"q": "lemon tree hotels",
"loc": "Texas,United States",
"device": "desktop",
"serp_type": "web"
}
})
headers = {
'accept': "application/json",
'content-type': "application/json",
'authorization': "Bearer API_TOKEN"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Node.js
var axios = require('axios');
var data = JSON.stringify({
data: {
domain: 'google.com',
lang: 'en',
q: 'lemon tree hotels',
loc: 'Texas,United States',
device: 'desktop',
serp_type: 'web'
}
});
var config = {
"method": "POST",
"url": "https://api.serphouse.com/serp/live",
"headers": {
"content-type": "application/json",
"authorization": "Bearer API_TOKEN"
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error){
console.log(error);
});
PHP
$client = new GuzzleHttp\Client();
$headers= [
'Authorization' => 'Bearer API_TOKEN',
'Content-Type' => 'Application/json',
];
$body = '{
"data" : {
"domain": "google.com",
"lang": "en",
"q": "lemon tree hotels",
"loc": "Texas,United States",
"device": "desktop",
"serp_type": "web"
}}';
$request = new GuzzleHttp\Psr7\Request('POST','https://api.serphouse.com/serp/live', $headers, $body);
$res = $client->sendAsync($request)->wait();
Java
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
JSONObject jsonObject = new JSONObject();
JSONObject data = new JSONObject();
data.put("domain", "google.com");
data.put("lang", "en");
data.put("q", "lemon tree hotels");
data.put("loc", "Texas,United States");
data.put("device", "desktop");
data.put("serp_type", "web");
jsonObject.put("data", data);
String bodyJson = jsonObject.toString();
RequestBody body = RequestBody.create(mediaType, bodyJson);
Request request = new Request.Builder()
.url("https://api.serphouse.com/serp/live")
.method("POST", body)
.addHeader("content-type", "application/json")
.addHeader("authorization", "Bearer API_TOKEN")
.build();
Response response = client.newCall(request).execute();
System.out.println(response.body().string());
GO
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.serphouse.com/serp/live"
payload := strings.NewReader(`{"data": {
"domain":"google.com",
"lang": "en",
"q": "lemon tree hotels",
"loc": "Texas,United States",
"device": "desktop",
"serp_type": "web"}}
`)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("accept", "application/json")
req.Header.Add("content-type", "application/json")
req.Header.Add("authorization", "Bearer API_TOKEN")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
{
"organic": [
{
"position": 1,
"site_title": "Lemon Tree Hotels",
"title": "Lemon Tree Hotels, India - Official Website for Hotel Booking ...",
"link": "https://www.lemontreehotels.com/",
"displayed_link": "https://www.lemontreehotels.com",
"cached_page": "",
"snippet": "Lemon Tree Hotel, Dehradun. Lemon Tree Hotel, Dehradun, located atop the award winning and Upper Midscale Pacific Mall on Rajpur road, a premium area of the ...",
"sitelinks": {
"expanded": [
{
"link": "https://www.lemontreehotels.com/hotels.aspx",
"title": "Chain of Hotels in India"
},
{
"link": "https://www.lemontreehotels.com/contact-us.aspx",
"title": "Contact Us"
},
{
"link": "https://www.lemontreehotels.com/about-us.aspx",
"title": "About Us"
},
{
"link": "https://www.lemontreehotels.com/noida-hotels.aspx",
"title": "Hotels in noida (2)"
},
{
"link": "https://www.google.com/search?q=lemon+tree+hotels+site:lemontreehotels.com&num=100&hl=en&gl=US&sa=X&ved=2ahUKEwj5yMXwwbD_AhUjk4kEHXRGCSMQrAN6BAgcEAE",
"title": "More results from lemontreehotels.com »"
}
]
}
}
]
}
Results for: mobile keyboard on mobile
https://api.serphouse.com/serp/live?q=mobile+keyboard&domain=google.com&lang=en&device=mobile&serp_type=web&loc=Austin,Texas,United States&loc_id=1026201&verbatim=0&gfilter=0&page=1&num_result=100

Curl
Ruby
Python
Node.js
PHP
Java
GO
Curl
curl -X POST \
https://api.serphouse.com/serp/live \
-H 'accept: application/json' \
-H 'authorization: Bearer API_TOKEN' \
-H 'content-type: application/json' \
-d '{
"data": {
"domain":"google.com",
"lang":"en",
"q": "mobile keyboard",
"loc":"Texas,United States",
"device": "desktop",
"serp_type": "web"
}
}'
Ruby
require 'uri'
require 'net/http'
url = URI("https://api.serphouse.com/serp/live")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["accept"] = 'application/json'
request["content-type"] = 'application/json'
request["authorization"] = 'Bearer API_TOKEN'
request.body = '{"data": {
"domain": "google.com",
"lang": "en",
"q": "mobile keyboard",
"loc": "Texas,United States",
"device": "desktop",
"serp_type": "web"
}}'
response = http.request(request)
puts response.read_body
Python
import requests, json
url = "https://api.serphouse.com/serp/live"
payload = json.dumps({
"data": {
"domain": "google.com",
"lang": "en",
"q": "mobile keyboard",
"loc": "Texas,United States",
"device": "desktop",
"serp_type": "web"
}
})
headers = {
'accept': "application/json",
'content-type': "application/json",
'authorization': "Bearer API_TOKEN"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Node.js
var axios = require('axios');
var data = JSON.stringify({
data: {
domain: 'google.com',
lang: 'en',
q: 'mobile keyboard',
loc: 'Texas,United States',
device: 'desktop',
serp_type: 'web'
}
});
var config = {
"method": "POST",
"url": "https://api.serphouse.com/serp/live",
"headers": {
"content-type": "application/json",
"authorization": "Bearer API_TOKEN"
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error){
console.log(error);
});
PHP
$client = new GuzzleHttp\Client();
$headers= [
'Authorization' => 'Bearer API_TOKEN',
'Content-Type' => 'Application/json',
];
$body = '{
"data" : {
"domain": "google.com",
"lang": "en",
"q": "mobile keyboard",
"loc": "Texas,United States",
"device": "desktop",
"serp_type": "web"
}}';
$request = new GuzzleHttp\Psr7\Request('POST','https://api.serphouse.com/serp/live', $headers, $body);
$res = $client->sendAsync($request)->wait();
Java
z
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
JSONObject jsonObject = new JSONObject();
JSONObject data = new JSONObject();
data.put("domain", "google.com");
data.put("lang", "en");
data.put("q", "mobile keyboard");
data.put("loc", "Texas,United States");
data.put("device", "mobile");
data.put("serp_type", "web");
jsonObject.put("data", data);
String bodyJson = jsonObject.toString();
RequestBody body = RequestBody.create(mediaType, bodyJson);
Request request = new Request.Builder()
.url("https://api.serphouse.com/serp/live")
.method("POST", body)
.addHeader("content-type", "application/json")
.addHeader("authorization", "Bearer API_TOKEN")
.build();
Response response = client.newCall(request).execute();
System.out.println(response.body().string());
GO
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.serphouse.com/serp/live"
payload := strings.NewReader(`{"data": {
"domain":"google.com",
"lang": "en",
"q": "mobile keyboard",
"loc": "Texas,United States",
"device": "desktop",
"serp_type": "web"}}
`)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("accept", "application/json")
req.Header.Add("content-type", "application/json")
req.Header.Add("authorization", "Bearer API_TOKEN")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
{
...
"organic": [
{
"position": 1,
"title": "Phone Keyboard",
"link": "https://www.amazon.com/phone-keyboard/s?k=phone+keyboard",
"displayed_link": " Amazon.com https://www.amazon.com \u203a phone-k... Phone Keyboard",
"snippet": "Ultra-Slim Bluetooth Keyboard Portable Mini Wireless Keyboard Rechargeable for Apple iPad iPhone Samsung Tablet."
},
{
"position": 2,
"title": "Smartphone Keyboard",
"link": "https://www.amazon.com/Smartphone-Keyboard/s?k=Smartphone+Keyboard",
"displayed_link": " Amazon.com https://www.amazon.com \u203a Smartph... Smartphone Keyboard",
"snippet": "Logitech K480 Wireless Multi-Device Keyboard for Windows, macOS, iPadOS, Android or \u00b7 Geyes Folding Bluetooth Keyboard, Foldable Wireless Keyboard with Portable\u00a0..."
},
{
"position": 3,
"title": "Keyboard For Android",
"link": "https://www.amazon.com/Keyboard-Android/s?k=Keyboard+for+Android",
"displayed_link": " Amazon.com https://www.amazon.com \u203a Keyboa... Keyboard For Android",
"snippet": "Ultra-Slim Bluetooth Keyboard Portable Mini Wireless Keyboard Rechargeable for Apple iPad iPhone Samsung Tablet Phone Smartphone iOS Android Windows (7 inch\u00a0..."
},
]
...
}

Get in touch with us!
You may contact us from here for any concern.