Skip to content
Docs

Overview

Early access. Tell us what you're building and we'll set you up. Contact us

Lempile exposes a SerpApi-compatible Google Search API at https://api.lempile.com.

Fresh browser-backed searches are queue-first. A new request creates an archived search record, returns 202 Accepted, and gives you a search_metadata.json_endpoint to poll. The runner processes the job when capacity is available. Cached successful searches may return 200 OK immediately.

Text
client -> Lempile API -> queue -> runner lease -> browser -> Google -> parser -> archive

60-Second Quickstart#

Create a search:

Shell
curl -sS "https://api.lempile.com/search.json?engine=google&q=site%3Alinkedin.com%2Fposts%2F%20%22AI%20outreach%22&gl=us&hl=en&tbs=qdr%3Am" \
  -H "X-API-KEY: your-api-key"

Poll the returned search_metadata.json_endpoint:

Shell
curl -sS "https://api.lempile.com/searches/{search_id}.json" \
  -H "X-API-KEY: your-api-key"

Stop polling when search_metadata.status is Success or Error.

Lifecycle#

Step API result What it means
Create 202, status: "Processing" The search was accepted and queued.
Poll 202, status: "Processing" The search is still queued or running.
Success 200, status: "Success" Parsed Google results are available.
Error 200, status: "Error" The search finished with a real failure reason.

Queue-specific fields may appear inside search_metadata:

JSON
{
  "search_metadata": {
    "id": "search_id",
    "status": "Processing",
    "status_detail": "Queued",
    "queued_at": "2026-06-01T08:00:00Z",
    "json_endpoint": "https://api.lempile.com/searches/search_id.json"
  }
}

status_detail can show internal states such as Queued, Running, completed, or a terminal error detail. The public SerpApi-compatible status remains Processing, Success, or Error.

Production Host#

Use the public host:

Text
https://api.lempile.com

Do not use staging URLs for production integrations.

Authentication#

Pass an API key with search.write for create routes and search.read for archive routes.

Use either:

  • X-API-KEY header
  • api_key query parameter

Capacity Model#

Production is conservative by design: one active Google browser job per runner by default. Bursts are queued instead of launching unlimited browser sessions.

If a workspace exceeds its queue cap, Lempile returns 429 workspace_search_queue_full.

Was this page helpful?