Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use this when you need to search web on Google and websearch tool is not enough
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | -22% | 0% |
| case-13 | ✗→✓ | ▲ Improved | -46% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 25% | 0% |
| case-16 | ✗→✓ | ▲ Improved | -30% | 0% |
| case-19 | ✗→✓ | ▲ Improved | -44% | 0% |
Use the googleSearch global in the REPL tool. It fetches Google Search with the browser profile's cookies, then parses the result DOM with stable selectors verified against a live SERP. You do not need to manually inspect the results page unless parsing fails.
jsconst results = await googleSearch.search('openai', { limit: 5 }); console.log(JSON.stringify(results, null, 2)); // → [{ title, url, sourceName, publishedAtText, snippet, sitelinks }] // Pagination const page2 = await googleSearch.search('openai', { start: 10 }); const page3 = await googleSearch.search('openai', { start: 20 });
Do not run Google Search queries in parallel. Parallel query bursts can trigger CAPTCHA or bot blocks even when each individual query is valid.
Avoid patterns like:
jsconst queries = ['first query', 'second query', 'third query']; await Promise.all(queries.map((q) => googleSearch.search(q)));
Also avoid firing multiple searches from loop bodies without waiting for each result before deciding the next query. Keep Google searches sequential and only issue the next query after you have inspected the previous result.
googleSearch.search(query: string, opts?: GoogleSearchOptions): Promise<GoogleSearchResult[]>Search Google web results and return compact structured results.
div[data-rpos]a[href] that wraps an h3jsname hooks.start offset:start or use start: 0start: 10start: 20tsinterface GoogleSearchOptions { limit?: number; // max results. default: 10 safeSearch?: 'active' | 'off'; language?: string; // e.g. 'en', 'ko', 'ja' country?: string; // e.g. 'us', 'kr', 'jp' start?: number; // pagination offset. e.g. 10 = page 2 time?: 'day' | 'week' | 'month' | 'year'; } interface GoogleSearchResult { title: string; url: string; sourceName?: string; publishedAtText?: string; // e.g. '2 hours ago' snippet?: string; sitelinks?: Array<{ title: string; url: string }>; }
Other measured skills in the registry, with their headline benchmark lift.