Skip to main content
AI/MLjeremylongshore

serpapi-prod-checklist

'Production readiness checklist for SerpApi integrations.

Stars
2,267
Source
jeremylongshore/claude-code-plugins-plus-skills
Updated
2026-05-31
Slug
jeremylongshore--claude-code-plugins-plus-skills--serpapi-prod-checklist
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/jeremylongshore/claude-code-plugins-plus-skills/HEAD/plugins/saas-packs/serpapi-pack/skills/serpapi-prod-checklist/SKILL.md -o .claude/skills/serpapi-prod-checklist.md

Drops the SKILL.md into .claude/skills/serpapi-prod-checklist.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

SerpApi Production Checklist

Checklist

API Key & Authentication

  • API key stored in secret manager (not env files)
  • Backend proxy for all client-side search requests
  • Key not exposed in frontend bundles or logs
  • Usage monitoring configured

Credit Budget

  • Monthly search volume estimated
  • Plan tier matches expected volume
  • Response caching implemented (LRU or Redis)
  • Archive API used for result retrieval (free)
  • Budget alerts set (e.g., 80% threshold)

Error Handling

  • Check search_metadata.status before using results
  • Handle error field in responses
  • Retry on 500/timeout (max 2 retries)
  • Graceful fallback when credits exhausted
  • Log search IDs for debugging (search_metadata.id)

Performance

  • Response caching with appropriate TTL
  • Rate limiting per plan tier (see serpapi-rate-limits)
  • Async search for non-critical queries
  • Proxy endpoint rate-limited to prevent abuse

Health Check

app.get('/health', async (req, res) => {
  try {
    const account = await fetch(
      `https://serpapi.com/account.json?api_key=${process.env.SERPAPI_API_KEY}`
    ).then(r => r.json());

    res.json({
      status: account.plan_searches_left > 0 ? 'healthy' : 'degraded',
      serpapi: {
        plan: account.plan_name,
        remaining: account.plan_searches_left,
        used: account.this_month_usage,
      },
    });
  } catch {
    res.status(503).json({ status: 'unhealthy', serpapi: { error: 'unreachable' } });
  }
});

Error Handling

Alert Condition Severity
Credits Low remaining < 10% P2
Credits Exhausted remaining = 0 P1
API Unreachable Account check fails P1
High Error Rate > 5% searches fail P2

Resources

Next Steps

For version upgrades, see serpapi-upgrade-migration.