Warning
We are ending support for this package in favor of serpapi-php. We recommend migrating to the newer implementation to ensure continued support and access to the latest features and improvements.
This PHP API is meant to scrape and parse Google, Bing or Baidu results using SerpApi.
The full documentation is available here.
The following services are provided:
SerpApi provides a script builder to get you started quickly.
Php 7+ must be already installed and composer dependency management tool.
Package available from packagist.
if you're using composer, you can add this package (link to packagist).
$ composer require serpapi/google-search-results-phpThen you need to load the dependency in your script.
<?php
require __DIR__ . '/vendor/autoload.php';
?>
if not, you must clone this repository and link the class.
require 'path/to/google-search-results';
require 'path/to/restclient';Get "your secret key" from https://serpapi.com/dashboard
Then you can start coding something like:
$client = new GoogleSearch("your secret key");
$query = ["q" => "coffee","location"=>"Austin,Texas"];
$response = $client->get_json($query);
print_r($response);This example runs a search about "coffee" using your secret api key.
The SerpApi service (backend)
- searches on Google using the query: q = "coffee"
- parses the messy HTML responses
- return a standardizes JSON response The Php class GoogleSearch
- Format the request to SerpApi server
- Execute GET http request
- Parse JSON into Ruby Hash using JSON standard library provided by Ruby Et voila..
Alternatively, you can search:
- Bing using BingSearch class
- Baidu using BaiduSearch class
- Ebay using EbaySearch class
- Yahoo using YahooSearch class
- Yandex using YandexSearch class
- Walmart using WalmartSearch class
- Youtube using YoutubeSearch class
- HomeDepot using HomeDepotSearch class
- Apple App Store using AppleAppStoreSearch class
- Naver using NaverSearch class
See the playground to generate your code. https://serpapi.com/playground
- How to set SERP API key
- Search API capability
- Location API
- Search Archive API
- Account API
- Search Google Images
- Generic SerpApiClient
- Example by specification
- Composer example
The SerpApi api_key can be set globally using a singleton pattern.
$client = new GoogleSearch();
$client->set_serp_api_key("Your Private Key");Or
$client = new GoogleSearch("Your Private Key");$query = [
"q" => "query",
"google_domain" => "Google Domain",
"location" => "Location Requested",
"device" => "device",
"hl" => "Google UI Language",
"gl" => "Google Country",
"safe" => "Safe Search Flag",
"start" => "Pagination Offset",
"serp_api_key" => "Your SERP API Key",
"tbm" => "nws|isch|shop"
"tbs" => "custom to be search criteria"
"async" => true|false # allow async
];
$client = new GoogleSearch("private key");
$html_results = $client->get_html($query);
$json_results = $client->get_json($query);$client = new GoogleSearch(getenv("API_KEY"));
$location_list = $client->get_location('Austin', 3);
print_r($location_list);it prints the first 3 location matching Austin (Texas, Texas, Rochester)
[{:id=>"585069bdee19ad271e9bc072",
:google_id=>200635,
:google_parent_id=>21176,
:name=>"Austin, TX",
:canonical_name=>"Austin,TX,Texas,United States",
:country_code=>"US",
:target_type=>"DMA Region",
:reach=>5560000,
:gps=>[-97.7430608, 30.267153],
:keys=>["austin", "tx", "texas", "united", "states"]},
...]Let's run a search to get a search_id.
$client = new GoogleSearch(getenv("API_KEY"));
$result = $client->get_json($this->QUERY);
$search_id = $result->search_metadata->idNow let's retrieve the previous search from the archive.
$archived_result = $client->get_search_archive($search_id);
print_r($archived_result);it prints the search from the archive.
$client = new GoogleSearch($this->API_KEY);
$info = $client->get_account();
print_r($info);it prints your account information.
$client = new GoogleSearch(getenv("API_KEY"));
$data = $client->get_json([
'q' => "Coffee",
'tbm' => 'isch'
]);
foreach($data->images_results as $image_result) {
print_r($image_result->original);
//to download the image:
// `wget #{image_result[:original]}`
}this code prints all the images links, and download image if you un-comment the line with wget (linux/osx tool to download image).
The code described above is tested in the file test.php and example.php. To run the test locally.
export API_KEY='your secret key'
make test examplesee: https://github.com/serpapi/google-search-results-php/example_composer/
To run the code.
- git clone https://github.com/serpapi/google-search-results-php
- cd google-search-results-php/example_composer/
- make API_KEY= all
- 2.0
- Code refractoring SearchResult -> Search
- Add walmart and youtube search engine
- 1.2.0
- Add more search engine
- 1.0
- First stable version
SerpApi supports all the major search engines. Google has the more advance support with all the major services available: Images, News, Shopping and more.. To enable a type of search, the field tbm (to be matched) must be set to:
- isch: Google Images API.
- nws: Google News API.
- shop: Google Shopping API.
- any other Google service should work out of the box.
- (no tbm parameter): regular Google search. The field tbs allows to customize the search even more.
The full documentation is available here.
Author: Victor Benarbia victor@serpapi.com For more information: https://serpapi.com
Thanks Rest API for Php
- Travis Dent - https://github.com/tcdent/php-restclient
- Test framework - PhpUnit - https://phpunit.de/getting-started/phpunit-7.html