Overview

SerpAlgova is a multi-engine search API that returns structured results from Google, Startpage, and Yahoo. All requests go through residential proxies with real browser fingerprints for reliable scraping.

The API uses an async job model: you submit a search and poll for results. Most searches complete in 2-8 seconds.

Base URL: https://api.serp.algova.dev

Authentication

All API requests require an API key passed via the X-API-Key header.

Example
curl https://api.serp.algova.dev/v1/health \
  -H "X-API-Key: sk-your-api-key"

API keys are created from the dashboard after registration. Each key is tied to a plan that determines monthly search limits and concurrent request capacity.

PlanMonthly searchesConcurrent requests
Free2002
Starter5,0005
Growth30,00010
Pro100,00025
Business500,00050
Enterprise2,000,000100

Get Results

GEThttps://api.serp.algova.dev/v1/search/{job_id}

Poll this endpoint until status is "done" or "error". Results are available for 1 hour after completion.

Status values

StatusDescription
pendingJob is queued, not yet picked up by a worker
processingWorker is executing the search
doneSearch completed, results available
errorSearch failed (see error field)
Response (done)
{
  "job_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "status": "done",
  "query": "best restaurants in Lima",
  "engine": "google",
  "created_at": 1709856000.0,
  "completed_at": 1709856004.2,
  "search_information": {
    "total_results": "About 45,200,000 results",
    "time_taken": "0.52s"
  },
  "organic_results": [
    {
      "position": 1,
      "title": "Los 10 mejores restaurantes de Lima - TripAdvisor",
      "url": "https://tripadvisor.com/Restaurants-Lima.html",
      "snippet": "Descubre los mejores restaurantes en Lima, Peru...",
      "displayed_url": "tripadvisor.com > Lima"
    },
    {
      "position": 2,
      "title": "Central Restaurante - Lima",
      "url": "https://centralrestaurante.com.pe",
      "snippet": "Mejor restaurante de Sudamerica 2023...",
      "displayed_url": "centralrestaurante.com.pe"
    }
  ],
  "related_questions": [
    "What is the best restaurant in Lima?",
    "Is Lima known for food?"
  ],
  "related_searches": [
    "best ceviche in Lima",
    "fine dining Lima Peru"
  ],
  "knowledge_graph": null,
  "result_count": 10
}

Polling example (Python)

poll.py
import requests, time

API_KEY = "sk-your-api-key"
BASE = "https://api.serp.algova.dev"

# 1. Submit search
resp = requests.post(f"{BASE}/v1/search", json={
    "query": "best coffee shops NYC",
    "engine": "google",
    "gl": "us",
    "hl": "en",
}, headers={"X-API-Key": API_KEY})
job_id = resp.json()["job_id"]

# 2. Poll for results
while True:
    resp = requests.get(
        f"{BASE}/v1/search/{job_id}",
        headers={"X-API-Key": API_KEY}
    )
    data = resp.json()
    if data["status"] == "done":
        for r in data["organic_results"]:
            print(f'{r["position"]}. {r["title"]}')
            print(f'   {r["url"]}')
        break
    elif data["status"] == "error":
        print(f'Error: {data.get("error")}')
        break
    time.sleep(2)

Check Usage

GEThttps://api.serp.algova.dev/v1/usage

Returns your current monthly usage and remaining quota.

Response
{
  "client": "my-app",
  "plan": "starter",
  "monthly_limit": 5000,
  "usage_this_month": 1234,
  "remaining_this_month": 3766
}

Search Engines

Use the engine parameter to choose which search engines to query.

ValueDescription
googleGoogle Search (default). Most comprehensive results.
startpageStartpage (Google proxy). No CAPTCHAs needed.
yahooYahoo Search. Alternative result set.
bothGoogle + Startpage in parallel.
allGoogle + Startpage + Yahoo in parallel.

When using both or all, results from each engine are returned under separate keys in the response.

Geo Targeting

Control where your search appears to originate using the gl, hl, and location parameters.

ParameterExampleDescription
gl"us"Country code (ISO 3166-1 alpha-2). Affects which Google country domain is used.
hl"en"Language code (BCP-47). Controls the language of results and UI.
location"New York, NY"City/region for precise geo-targeting via Google's uule parameter.
Example: Search from Japan in Japanese
{
  "query": "Tokyo restaurants",
  "engine": "google",
  "gl": "jp",
  "hl": "ja",
  "location": "Tokyo, Japan"
}

Error Handling

The API uses standard HTTP status codes.

CodeMeaning
200Success
400Bad request (invalid parameters)
401Missing or invalid API key
403Key revoked or not authorized
404Job not found or expired
429Rate limit exceeded (monthly quota or concurrent limit)
503Service degraded (Redis unavailable)

Error responses include a detail field with a human-readable message:

Error response
{
  "detail": "Monthly search limit exceeded (5000/5000). Upgrade plan or wait until next month."
}

Rate Limits

Rate limits are enforced per API key at two levels:

  • Monthly quota — total searches per calendar month. Resets on the 1st.
  • Concurrent requests — maximum simultaneous in-flight searches. Requests above this limit receive a 429.

Check your current usage at any time with GET /v1/usage. When you hit the monthly limit, upgrade your plan from the dashboard or wait until the next month.