技能 编程开发 API速率限制与配额管理

API速率限制与配额管理

v20260423
serpapi-rate-limits
本技能详细指导开发者如何管理SerpApi的API使用配额和速率限制。它提供了使用Python和TypeScript实现请求节流(Throttling)的完整代码示例,帮助用户监控账户剩余点数(Credits),确保大规模API调用过程稳定高效,并指导如何利用搜索存档等高级功能避免资源浪费。
获取技能
214 次下载
概览

SerpApi Rate Limits

Overview

SerpApi uses credit-based pricing (each search = 1 credit) plus per-second rate limits. Retrieving cached/archived searches does not consume credits. Plans range from 100 searches/month (free) to unlimited (enterprise).

Plan Limits

Plan Searches/Month Rate Limit Price
Free 100 1/second $0
Developer 5,000 5/second $75/mo
Business 15,000 10/second $200/mo
Enterprise 50,000+ 15/second Custom

Instructions

Step 1: Monitor Credit Usage

import serpapi, os

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

# Check remaining credits before batch operations
account = client.account()
remaining = account["plan_searches_left"]
used = account["this_month_usage"]
total = account["total_searches_left"]

print(f"Used: {used}, Remaining: {remaining}")
if remaining < 100:
    print("WARNING: Low credits remaining")

Step 2: Request Throttling

import time
from threading import Semaphore

class ThrottledSerpApi:
    def __init__(self, api_key: str, max_per_second: int = 5):
        self.client = serpapi.Client(api_key=api_key)
        self.semaphore = Semaphore(max_per_second)
        self.last_request = 0

    def search(self, **params) -> dict:
        with self.semaphore:
            # Enforce minimum interval
            elapsed = time.time() - self.last_request
            if elapsed < 0.2:  # 5/sec max
                time.sleep(0.2 - elapsed)
            self.last_request = time.time()
            return self.client.search(**params)

Step 3: Use Archive to Avoid Credit Waste

# Retrieve a previous search result by ID (FREE, no credit charge)
archived = client.search(engine="google", search_id="previous_search_id")

# Check if a query was recently searched before spending a credit
# Store search IDs in your database keyed by query+params hash

Step 4: Node.js Rate Limiter

import PQueue from 'p-queue';
import { getJson } from 'serpapi';

const queue = new PQueue({
  concurrency: 3,       // Max parallel requests
  interval: 1000,       // Per second
  intervalCap: 5,       // Max 5 per second
});

async function throttledSearch(params: Record<string, any>) {
  return queue.add(() => getJson({
    ...params,
    api_key: process.env.SERPAPI_API_KEY,
  }));
}

// Batch search with automatic throttling
const queries = ['query1', 'query2', 'query3'];
const results = await Promise.all(
  queries.map(q => throttledSearch({ engine: 'google', q }))
);

Error Handling

Error Cause Solution
429 Too Many Requests Rate limit exceeded Slow down, check plan tier
Searches exhausted Monthly credits used up Cache results, upgrade plan
Account disabled Payment issue or abuse Contact SerpApi support

Resources

Next Steps

For security configuration, see serpapi-security-basics.

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