A JavaScript library for searching Google, easily.
npm install googlesearch-jsconst { search } = require('googlesearch-js');
// Using async/await with for-await-of
async function searchGoogle() {
// Get just the URLs (default behavior)
for await (const url of search('javascript tutorials')) {
console.log(url);
}
}
searchGoogle();const { search } = require('googlesearch-js');
async function searchGoogleAdvanced() {
// Get full search results with title and description
for await (const result of search('javascript tutorials', { advanced: true })) {
console.log(`URL: ${result.url}`);
console.log(`Title: ${result.title}`);
console.log(`Description: ${result.description}`);
console.log('---');
}
}
searchGoogleAdvanced();const { search } = require('googlesearch-js');
async function searchWithOptions() {
const options = {
numResults: 5, // Number of results to fetch
lang: 'fr', // Language setting (e.g., 'en', 'fr', 'es')
proxy: null, // Proxy URL (e.g., 'http://user:pass@host:port')
advanced: true, // Return SearchResult objects with title and description
sleepInterval: 1, // Sleep 1 second between pagination requests
timeout: 10, // Request timeout in seconds
safe: 'off', // Safe search setting ('active', 'moderate', 'off')
sslVerify: true, // Verify SSL certificates
region: 'fr', // Region setting (e.g., 'us', 'uk', 'fr')
startNum: 0, // Start index for pagination
unique: true // Filter out duplicate results
};
for await (const result of search('javascript tutorials', options)) {
console.log(result.toString());
}
}
searchWithOptions();const { search } = require('googlesearch-js');
async function searchMultipleTerms() {
const terms = ['javascript', 'node.js', 'react'];
const searchPromises = terms.map(async (term) => {
const results = [];
for await (const url of search(term, { numResults: 3 })) {
results.push(url);
}
return { term, results };
});
const allResults = await Promise.all(searchPromises);
console.log(allResults);
}
searchMultipleTerms();Performs a Google search and returns results as an async generator.
Parameters:
term(string): The search query termoptions(object, optional): Configuration optionsnumResults(number): Number of results to return (default: 10)lang(string): Language code (default: 'en')proxy(string|null): Proxy URL (default: null)advanced(boolean): Whether to return advanced results (default: false)sleepInterval(number): Sleep interval between requests in seconds (default: 0)timeout(number): Request timeout in seconds (default: 5)safe(string): Safe search setting ('active', 'moderate', 'off') (default: 'active')sslVerify(boolean): Whether to verify SSL certificates (default: true)region(string|null): Region code (default: null)startNum(number): Start index (default: 0)unique(boolean): Whether to return unique results (default: false)
Returns:
An async generator that yields either:
- URL strings (if
advancedis false) SearchResultobjects (ifadvancedis true)
A class representing a Google search result.
Properties:
url(string): URL of the search resulttitle(string): Title of the search resultdescription(string): Description of the search result
Methods:
toString(): Returns a string representation of the search result
Generates a random user agent string.
Returns:
A randomly generated user agent string.
This library is for educational purposes only. Please be aware that scraping Google may violate their terms of service. Use responsibly and at your own risk.
MIT