Laravel package provide Google Custom Search JSON and Restricted JSON API lets you develop websites and applications to retrieve and display search results from Programmable Search Engine programmatically.
Add jainsubh/google-search-json-api
to composer.json
.
"jainsubh/google-search-json-api": "~1.0.1"
Run composer update
to pull down the latest version.
Or run
composer require jainsubh/google-search-json-api
Now open up /config/app.php
and add the service provider to your providers
array.
'providers' => [
jainsubh\GoogleSearchApi\GoogleSearchApiProvider::class,
]
Now add the alias.
'aliases' => [
'GoogleSearchApi' => jainsubh\GoogleSearchApi\Facades\GoogleSearchApi::class,
]
Run php artisan vendor:publish --provider="jainsubh\GoogleSearchApi\GoogleSearchApiProvider"
and modify the config file with your own information.
/config/googlesearchapi.php
With Laravel 5, it's simple to edit the config.php file - in fact you don't even need to touch it! Just add the following to your .env file and you'll be on your way:
GOOGLE_SEARCH_ENGINE_ID=
GOOGLE_SEARCH_API_KEY=
- If you create your engine at https://cse.google.com/cse/ you will find the ID after you click at Settings
- Just check the URL you have like https://cse.google.com/cse/setup/basic?cx=search_engine_id and the string after cx= is your search engine ID
!! Attention !! If you change style of your Custom search engine, the ID can be changed
- go to https://console.developers.google.com, than
- click on the menu on the right side of the GoogleAPI logo and click on 'Create project'
- enter the name of the new project - it is up to you, you can use 'Google CSE'
- wait until project is created - the indicator is color circle on the top right corner around the bell icon
- API list is shown - search for 'Google Custom Search API' and click on it
- click on 'Enable' icone on the right side of Custom Search API headline
- click on the 'Credentials' on the left menu under the 'Library' section
- click on the 'Create credentials' and choose 'API key'
- your API key is shown, so copy and paste it here
Create an object and call the function getResults to get first 10 results
$googleSearch = new GoogleSearchApi(); // initialize
$results = $googleSearch->getResults('some phrase'); // get first 10 results for query 'some phrase'
It is only example controller name, you can use whatever you want, this is notice mainly for novices in Laravel
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use jainsubh\GoogleSearchApi\GoogleSearchApi;
class GoogleSearchController extends Controller {
public function index() {
$googleSearch = new GoogleSearchApi(); // initialize
$results = $googleSearch->getResults('some phrase'); // get first 10 results for query 'some phrase'//
}
}
You can also get information about the search like total records and search time
$googleSearch = new GoogleSearchApi(); // initialize
$results = $googleSearch->getResults('some phrase'); // get first 10 results for query 'some phrase'
$info = $googleSearch->getSearchInformation(); // get search information
You can use any parameter supported at Google. List of parameters is here: https://developers.google.com/custom-search/json-api/v1/reference/cse/list#parameters
E.g. you want to get next 10 results
$parameters = array(
'start' => 10, // start from the 10th results,
'num' => 10 // number of results to get, 10 is maximum and also default value
);
$search_type = 'site_restrict'// if empty by default Google Custom Search JSON API would work
$googleSearch = new GoogleSearchApi(); // initialize
$results = $googleSearch->getResults('some phrase', $parameters, $search_type); // get second 10 results for query 'some phrase'
You can also get the raw result from Google including other information Full list of response variables is available here: https://developers.google.com/custom-search/json-api/v1/reference/cse/list#response
$googleSearch = new GoogleSearchApi(); // initialize
$results = $googleSearch->getResults('some phrase'); // get first 10 results for query 'some phrase'
$rawResults = $googleSearch->getRawResults(); // get complete response from Google
For getting the number of results only use
$googleSearch = new GoogleSearchApi(); // initialize
$results = $googleSearch->getResults('some phrase'); // get first 10 results for query 'some phrase'
$noOfResults = $googleSearch->getTotalNumberOfResults(); // get total number of results (it can be less than 10)
If you have more engines / more api keys, you can override the config variables with following functions
$googleSearch = new GoogleSearchApi(); // initialize
$googleSearch->setEngineId('someEngineId'); // sets the engine ID
$googleSearch->setApiKey('someApiId'); // sets the API key
$results = $googleSearch->getResults('some phrase'); // get first 10 results for query 'some phrase'