Google Paid ADS Result API
For some searches, Google search includes the ads block. SERPHouse is able to scrape, extract, and make sense of this information.
JSON structure overview
{
"ads": [
{
"position": 1,
"block_position": "top",
"title": "Flight paris - Your flights at the best price",
"link": "https://www.googleadservices.com/pagead/aclk?sa=L&ai=DChcSEwi78OKbvvn-AhWRELMAHcfmB-IYABAAGgJ5bQ&ohost=www.google.com&cid=CAASJORoPZm_G06zDvaw23U2PMSZGzHmlufm_SaH8NgW2mopAKupZg&sig=AOD64_0WRCVU4t8koamL-tdwA4OPJmfAqg&adurl=&q=",
"displayed_link": "https://wwws.airfrance.fr › official_site › booking ",
"description": "Direct flights every day. Taking Elegance To New Heights with Air France! Fly away to Paris. Experience something unique with Air France. Best Entertainment EU. Best EU airline – Skytrax. Exclusive offers. Over 250 destinations. Seat Options. Secure Payment. ",
"sitelinks": [
{
"title": "View Offers",
"link": "https://www.airfrance.fr/FR/en/local/purchase-booking/best-offers/fare-promotion-flight.do"
},
{
"title": "Flights to Europe",
"link": "https://www.airfrance.fr/FR/en/local/achat-reservation/meilleures-offres/tarif-promotion-vol-europe.do?origine=PAR"
},
{
"title": "Flights to America",
"link": "https://www.airfrance.fr/FR/en/local/achat-reservation/meilleures-offres/tarif-promotion-vol-ameriques.do?origine=PAR"
}
]
}
]
}
Results for: Flight to paris
https://api.serphouse.com/serp/live?q=Flight+to+paris&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": "Flight to paris",
"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": "Flight to paris",
"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": "Flight to paris",
"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: 'Flight to paris',
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": "Flight to paris",
"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", "Flight to paris");
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": "Flight to paris",
"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))
}
{
...
"ads": [
{
"position": 1,
"block_position": "top",
"title": "Flight paris - Your flights at the best price",
"link": "https://www.googleadservices.com/pagead/aclk?sa=L&ai=DChcSEwi78OKbvvn-AhWRELMAHcfmB-IYABAAGgJ5bQ&ohost=www.google.com&cid=CAASJORoPZm_G06zDvaw23U2PMSZGzHmlufm_SaH8NgW2mopAKupZg&sig=AOD64_0WRCVU4t8koamL-tdwA4OPJmfAqg&adurl=&q=",
"displayed_link": "https://wwws.airfrance.fr › official_site › booking ",
"description": "Direct flights every day. Taking Elegance To New Heights with Air France! Fly away to Paris. Experience something unique with Air France. Best Entertainment EU. Best EU airline – Skytrax. Exclusive offers. Over 250 destinations. Seat Options. Secure Payment. ",
"sitelinks": [
{
"title": "View Offers",
"link": "https://www.airfrance.fr/FR/en/local/purchase-booking/best-offers/fare-promotion-flight.do"
},
{
"title": "Flights to Europe",
"link": "https://www.airfrance.fr/FR/en/local/achat-reservation/meilleures-offres/tarif-promotion-vol-europe.do?origine=PAR"
},
{
"title": "Flights to America",
"link": "https://www.airfrance.fr/FR/en/local/achat-reservation/meilleures-offres/tarif-promotion-vol-ameriques.do?origine=PAR"
},
{
"title": "Flights to Caribbean",
"link": "https://www.airfrance.fr/FR/en/local/achat-reservation/meilleures-offres/tarif-promotion-vol-caraibes.do?origine=PAR"
},
{
"title": "Contact Us",
"link": "https://www.airfrance.fr/FR/en/local/transverse/footer/nous-contacter.htm"
}
]
},
{
"position": 2,
"block_position": "top",
"title": "Flights 2023 - From Paris to France - Fly Direct With easyJet®",
"link": "https://www.easyjet.com/",
"displayed_link": "https://www.easyjet.com › paris › france ",
"description": "Low Cost Flights To Over 120 Destinations At easyJet.com. Book Flights & Holidays Today. Manage Your Booking and Track your flight with our Award-Winning App. Allocated Seating. "
}
]
...
}
Results for: hostinger on mobile
https://api.serphouse.com/serp/live?q=info+edge+news&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": "hostinger",
"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": "hostinger",
"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": "hostinger",
"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: 'hostinger',
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": "hostinger",
"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", "hostinger");
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": "hostinger",
"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))
}
{
...
"ads": [
{
"position": 1,
"block_position": "top",
"title": "Hostinger - Web Hosting - Reliable & Fast Hosting ",
"link": "https://www.hostinger.com/",
"displayed_link": "https://www.hostinger.com ",
"description": "Find the perfect Hostinger domain name by using the domain checker. Go live in minutes. Get your website up and running in a few clicks. You have everything...",
"sitelinks": [
{
"title": "Get a Free DomainCertain plans include a free domain You also get custom email for free.",
"link": "https://www.hostinger.com/free-domain?sa=X&ved=2ahUKEwimjefHyvn-AhUoOkQIHRwEA-EQqyQoAHoECAMQCg"
},
{
"title": "Hostinger Product Pricing",
"link": "https://www.hostinger.com/pricing?sa=X&ved=2ahUKEwimjefHyvn-AhUoOkQIHRwEA-EQqyQoAXoECAMQDA"
},
{
"title": "Web Hosting Deal",
"link": "https://www.hostinger.com/?sa=X&ved=2ahUKEwimjefHyvn-AhUoOkQIHRwEA-EQqyQoAnoECAMQDQ"
},
{
"title": "Buy a Website Domain",
"link": "https://www.hostinger.com/buy-domain?sa=X&ved=2ahUKEwimjefHyvn-AhUoOkQIHRwEA-EQqyQoA3oECAMQDg"
}
]
}
]
...
}

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