From serpapi-pack
Migrates legacy google-search-results SerpApi clients to official serpapi package for Python and Node.js, updating imports, init patterns, search calls, and responses.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin serpapi-packThis skill is limited to using the following tools:
The main migration path: `google-search-results` (legacy) to `serpapi` (current official package). The API itself is stable -- changes are in client library interfaces, not the REST API.
Installs SerpApi client via pip/npm for Python/Node.js and configures API key authentication. Verifies setup with test search and account check for search scraping.
Migrates Node.js search pipelines from Google, Bing, Tavily, Serper to Exa neural search. Installs exa-js SDK, compares APIs, and provides TypeScript adapter for unified interface.
Migrates from Google Custom Search, Bing API, SerpAPI, or legacy LLMs to Perplexity Sonar using strangler fig pattern. Assesses integrations, builds adapters for incremental replacement.
Share bugs, ideas, or general feedback.
The main migration path: google-search-results (legacy) to serpapi (current official package). The API itself is stable -- changes are in client library interfaces, not the REST API.
# BEFORE: Legacy package
from serpapi import GoogleSearch
search = GoogleSearch({"q": "test", "api_key": key})
result = search.get_dict()
# AFTER: New official package
import serpapi
client = serpapi.Client(api_key=key)
result = client.search(engine="google", q="test")
# Result is already a dict -- no get_dict() needed
# Migration steps
pip uninstall google-search-results
pip install serpapi
# Update imports across codebase
# OLD: from serpapi import GoogleSearch
# NEW: import serpapi
// BEFORE: Legacy
import { GoogleSearch } from 'google-search-results-nodejs';
const search = new GoogleSearch('api_key');
search.json({ q: 'test', engine: 'google' }, (result) => { ... });
// AFTER: Current (Promise-based)
import { getJson } from 'serpapi';
const result = await getJson({ engine: 'google', q: 'test', api_key: key });
// No callbacks -- uses Promises natively
| Aspect | Legacy | Current |
|---|---|---|
| Python import | from serpapi import GoogleSearch | import serpapi |
| Python init | GoogleSearch(params_dict) | serpapi.Client(api_key=key) |
| Python search | search.get_dict() | client.search(engine="google", q=...) |
| Node import | google-search-results-nodejs | serpapi |
| Node pattern | Callback-based | Promise/async-await |
| Engine param | Via class name (GoogleSearch, BingSearch) | Via engine parameter |
pip install serpapi / npm install serpapiengine parameter.get_dict() calls (Python -- result is already dict)For CI integration, see serpapi-ci-integration.