SerpAPI Client Installation and Authentication
Overview
Select an official client, keep the private key server-side, and prove access with the free Account API before spending a search.
Prerequisites
- A SerpAPI account and private key from the account dashboard
- Python or Node.js project ownership and an approved secret store
- A named environment and owner for usage, rotation, and revocation
Tool Discipline
Use Read, Glob, and Grep to inspect dependency and configuration files, WebFetch to re-check official client and Account API documentation, Write or Edit for secretless configuration, and Bash(python3:*), Bash(npm:*), or Bash(curl:*) only after the operator approves installation or a live check.
Current Contract
SerpAPI's current official packages are serpapi for Python and serpapi for JavaScript. Search and Account APIs authenticate with the private api_key. The Account API reports current quota and throughput fields and does not count against the monthly search allowance.
Authentication
Store the key as SERPAPI_KEY in a server-side secret manager. Never commit it, expose it to browser code, print it, place it in a fixture, or persist a command containing it in shell history. Do not assume OAuth, scopes, or multiple independently scoped keys unless current account documentation confirms them.
Instructions
- Inspect the runtime, package manager, existing SerpAPI packages,
.gitignore, secret-loading convention, and deployment environment. - Re-fetch the official Python or JavaScript client documentation and pin a version under the repository's dependency policy.
- Present the dependency and secret-store changes before installing anything.
- Install with
python3 -m pip install serpapiornpm install serpapiafter approval. - Add
SERPAPI_KEYto the approved local and deployment secret stores; add only variable names and redacted examples to tracked files. - Verify access through the official client Account API and retain only non-secret fields such as account status, plan name, searches left, and hourly throughput.
- Run a live search only when the operator explicitly accepts that it may consume allowance.
Output
Return the selected client and pinned version, changed files, secret-store location, redacted Account API receipt, live-search decision, and rotation/revocation owner.
Error Handling
| Condition | Response |
|---|---|
401 Unauthorized | Confirm that the correct secret is loaded; never echo the value. |
403 Forbidden | Treat the account as unauthorized or disabled and stop. |
429 Too Many Requests | Query Account API to distinguish hourly throughput from exhausted searches. |
| Package collision | Remove legacy packages only through a reviewed migration plan. |
Example
import os
import serpapi
client = serpapi.Client(api_key=os.environ["SERPAPI_KEY"], timeout=10)
account = client.account()
print({key: account.get(key) for key in (
"account_status", "plan_name", "plan_searches_left",
"account_rate_limit_per_hour",
)})
Resources
Next Steps
Run the hello-world workflow with a harmless query and record its search ID without recording the key.