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-php
Then 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",
"num" => "Number of Results",
"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->id
Now 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 example
see: 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 [email protected] 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