技能 编程开发 生产环境搜索API部署集成

生产环境搜索API部署集成

v20260423
serpapi-deploy-integration
本指南提供了将 SerpApi 搜索功能部署到生产环境的详细方法,涵盖了 Vercel Serverless 和 Cloud Run 等主流平台。核心原则是:必须通过后端服务器代理调用,绝不能将 API Key 暴露给前端浏览器,从而确保搜索请求的安全性、稳定性和可扩展性。
获取技能
64 次下载
概览

SerpApi Deploy Integration

Overview

Deploy SerpApi-powered search as a backend API endpoint. Always proxy through your server -- never expose the API key to browsers.

Instructions

Vercel Serverless Function

// api/search.ts
import { getJson } from 'serpapi';

export default async function handler(req: Request) {
  const url = new URL(req.url);
  const q = url.searchParams.get('q');
  if (!q) return new Response('Missing q parameter', { status: 400 });

  const engine = url.searchParams.get('engine') || 'google';
  const num = parseInt(url.searchParams.get('num') || '5');

  const result = await getJson({
    engine, q, num,
    api_key: process.env.SERPAPI_API_KEY,
  });

  return Response.json({
    results: result.organic_results?.slice(0, num) || [],
    answer_box: result.answer_box || null,
    total_results: result.search_information?.total_results,
  });
}
vercel env add SERPAPI_API_KEY production
vercel --prod

Cloud Run with Python

# main.py
from flask import Flask, request, jsonify
import serpapi, os

app = Flask(__name__)
client = serpapi.Client(api_key=os.environ["SERPAPI_API_KEY"])

@app.route("/search")
def search():
    q = request.args.get("q")
    if not q:
        return jsonify({"error": "Missing q parameter"}), 400

    result = client.search(engine="google", q=q, num=5)
    return jsonify({
        "results": result.get("organic_results", [])[:5],
        "answer_box": result.get("answer_box"),
    })
gcloud run deploy search-api \
  --source . --region us-central1 \
  --set-secrets=SERPAPI_API_KEY=serpapi-key:latest \
  --allow-unauthenticated

Health Check

app.get('/health', async (req, res) => {
  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' : 'credits_exhausted',
    remaining: account.plan_searches_left,
  });
});

Error Handling

Issue Cause Solution
Cold start slow First request initializes Pre-warm with min instances
Credits run out No budget monitoring Add health check with credit count
Key exposed Frontend calling SerpApi directly Always proxy through backend

Resources

Next Steps

For webhook-like patterns, see serpapi-webhooks-events.

信息
Category 编程开发
Name serpapi-deploy-integration
版本 v20260423
大小 3.01KB
更新时间 2026-04-28
语言