# Serpapi Upgrade Migration

> 'Migrate between SerpApi client versions and handle package changes. Use when upgrading from google-search-results to serpapi package, or handling API response schema changes. Trigger: "upgrade serpapi", "serpapi migration", "serpapi new package". '

- Skill: `jeremylongshore/serpapi-upgrade-migration` (Agent Skill)
- Install (CLI): `npx skillmds@latest add jeremylongshore/serpapi-upgrade-migration`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jeremylongshore/serpapi-upgrade-migration/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: jeremylongshore (https://skillmd.com/u/jeremylongshore)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/jeremylongshore/serpapi-upgrade-migration

---


# SerpApi Upgrade & Migration

## Overview

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.

## Instructions

### Python: google-search-results to serpapi

```python
# 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
```

```bash
# Migration steps
pip uninstall google-search-results
pip install serpapi

# Update imports across codebase
# OLD: from serpapi import GoogleSearch
# NEW: import serpapi
```

### Node.js: google-search-results-nodejs to serpapi

```typescript
// 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
```

### Key Changes

| 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 |

### Migration Checklist

- [ ] Replace package: `pip install serpapi` / `npm install serpapi`
- [ ] Update all imports
- [ ] Replace class-per-engine with `engine` parameter
- [ ] Replace callbacks with async/await (Node.js)
- [ ] Remove `.get_dict()` calls (Python -- result is already dict)
- [ ] Test all search queries return expected structure
- [ ] Update CI dependencies

## Resources

- [serpapi Python](https://github.com/serpapi/serpapi-python)
- [serpapi Node.js](https://www.npmjs.com/package/serpapi)
- [Legacy Python](https://github.com/serpapi/google-search-results-python)

## Next Steps

For CI integration, see `serpapi-ci-integration`.

---

**Source:** [`jeremylongshore/claude-code-plugins-plus-skills`](https://github.com/jeremylongshore/claude-code-plugins-plus-skills) → `plugins/saas-packs/serpapi-pack/skills/serpapi-upgrade-migration/SKILL.md`

