API Documentation
One endpoint, 38 tools, one predictable JSON contract. Pay per request with USDC on Base via x402 — or top up a balance and use an API key.
https://api.serp-base.com
All requests go to POST /v1/query with a JSON body. The tool name selects the service.
Quickstart
Send a request without payment first. You will receive HTTP 402 with the price and payment details. Sign the payment, repeat the request with the X-PAYMENT header, and get your data.
curl -X POST https://api.serp-base.com/v1/query \
-H "Content-Type: application/json" \
-d '{"tool":"google_web","query":"best crm software","depth":10}'
Typical flow with x402:
POST /v1/query -> 402 Payment Required
{ price, network, payTo, asset }
POST /v1/query + X-PAYMENT -> 200 OK { ok: true, tool, data }
If you prefer an API key, create a dashboard account, top up with USDC and send the key in the X-API-KEY header instead.
Authentication
Two ways to pay — pick either one:
| Method | Header | Best for |
|---|---|---|
| Per-request crypto | X-PAYMENT | Agents, scripts, no signup |
| Balance + API key | X-API-KEY | Dashboards, teams, predictable spend |
Requests without any payment receive 402 with the exact requirements.
Services — what each group does
Every service has a page with use cases, the full tool list for that group and a link to each tool's API reference. Start from the service if you know the job, or from the tool if you know the endpoint.
| SERVICE | WHAT IT IS FOR |
|---|---|
Search | 11 search tools: Google, Yandex, images, maps, news, shopping, positions, Wordstat |
Web Scraping | Fetch and parse any page — plain HTTP or real stealth browser |
Forms & Applications | Read a form, submit an application — no logins, no payments |
Captcha Solving | 17 captcha types with a 100% accuracy mode |
OCR & Documents | Text from images and PDFs, 100+ languages |
Data by Schema | Give a URL and the fields you want — get validated JSON |
Browser Fingerprints | 24 coherent fields from profiles that passed real sites |
Screenshots | Full page, viewport or element, custom width and zoom |
Proxies | Dedicated IPv4, IPv6 or MTproto by country and period |
Not sure which one you need? See the price table on the main page — every tool with its price per 1,000 requests, all in one place.
All tools — detailed reference
Every tool has its own page with full parameters, flexible options, code samples and the response format. Pick one:
Payment (x402)
Payments use the x402 protocol over USDC on Base. Gas is paid by the facilitator, so you only need USDC.
- Network: Base mainnet (
eip155:8453) - Asset: USDC
- Test network: Base Sepolia (
eip155:84532) — free test USDC from the Circle faucet
We run the work first and settle the payment afterwards. If a service fails to produce a result, nothing is charged on-chain.
To exercise the test network, send the header X-PAYMENT-NETWORK: base-sepolia to receive testnet requirements.
Response format
Every tool answers with the same envelope:
{
"ok": true,
"tool": "google_web",
"paid_via": "x402",
"network": "base",
"data": { ... }
}
Search tools return a normalized structure:
{
"found": 100,
"count": 10,
"related": ["related query", "..."],
"results": [
{
"position": 1,
"url": "https://example.com",
"title": "Page title",
"snippet": "Text excerpt from the page…",
"breadcrumbs": "example.com › section",
"content_type": "organic"
}
]
}
Search results
11 tools covering Google, Yandex and their verticals. All share one normalized JSON shape.
| Tool | What it returns |
|---|---|
google_web | Google organic results |
google_images | Google Images |
yandex_web | Yandex organic results |
yandex_images | Yandex Images |
maps | Maps / local results |
news | News results |
shop | Shopping results |
tips | Related searches |
positions | Your site's positions for a set of keywords |
wordstat_freq | Keyword frequency (Wordstat) |
wordstat_history | Keyword history (Wordstat) |
Common parameters:
| Field | Type | Description |
|---|---|---|
query | string | Search query (required) |
depth | int | How many results to collect (default 10) |
geo | int / string | Region code or name (e.g. 84 for New York, 1000000 for London) |
device | string | desktop · mobile · tablet |
lang | string | Result language |
Scraping & extraction
| Tool | What it does | Price / 1,000 |
|---|---|---|
parse_page | Fetch a URL, return readable text, HTML or links | $2.00 |
parse_page_pro | Same, but rendered in a stealth browser (JS + anti-bot sites) | $7.00 |
parse_pages | Walk a catalog’s pagination in one call — charged per page actually fetched | $2.00 |
form_action | Read a page’s forms, submit an application, or submit and solve the captcha — no passwords or payments, ever | $1.00 / $2.00 |
extract_schema | Give a URL and a schema — get validated JSON back | $6.00 |
extract_schema example — you describe the fields, we return structure:
{
"tool": "extract_schema",
"url": "https://news.ycombinator.com",
"schema": [
{"name": "titles", "type": "list", "desc": "first 3 story titles"}
]
}
parse_page_pro runs on a limited pool of stealth browsers. For large volumes, throughput depends on your plan — talk to us about capacity before committing to a big batch job.
Captcha solving
17 captcha types, one contract. Image captchas take image; widget captchas take sitekey + url.
| Tool | Type | Input |
|---|---|---|
captcha_image | Classic image captcha | image |
captcha_recaptcha | reCAPTCHA v2 | sitekey, url |
captcha_recaptcha_v3 | reCAPTCHA v3 | sitekey, url |
captcha_hcaptcha | hCaptcha | sitekey, url |
captcha_turnstile | Cloudflare Turnstile | sitekey, url |
captcha_cloudflare | Cloudflare Challenge | sitekey, url |
captcha_smartcaptcha | Yandex SmartCaptcha | sitekey, url |
captcha_geetest | GeeTest | gt, challenge, url |
captcha_datadome | DataDome | url, captcha_url |
captcha_amazon | Amazon WAF | sitekey, iv, context |
captcha_funcaptcha | FunCaptcha (Arkose) | sitekey, url |
captcha_mtcaptcha | MTCaptcha | sitekey, url |
captcha_prosopo | Prosopo Procaptcha | sitekey, url |
captcha_lemine | Lemin Cropped | captcha_id, url |
captcha_vk | VK Captcha | sitekey, url |
captcha_capy | Capy Puzzle | sitekey, url, api_server |
captcha_geetest_v4 | GeeTest v4 | captcha_id, url |
Example — solve an image captcha:
{
"tool": "captcha_image",
"image": "<base64 PNG or JPEG>"
}
// -> {"solution": "x4p9"}
OCR & documents
| Tool | Input | Price / 1,000 |
|---|---|---|
ocr_document | Image (base64 PNG/JPEG/WebP) | $3.00 |
ocr_pdf | PDF document, up to 10 pages | $7.00 |
Multilingual by design — no language parameter needed. Cyrillic, Latin, CJK and Arabic are handled in the same call. PDF pages are returned with page markers.
{
"tool": "ocr_document",
"image": "<base64>",
"prompt": "Extract all text"
}
Large PDFs: documents over 10 pages are handled asynchronously — submit the document, receive a job id, then poll for the result. Ask us to enable it for your account.
Browser fingerprints
Consistent fingerprints collected from real browser profiles — not synthetic templates. 24 coherent fields per fingerprint.
{ "tool": "fingerprint" }
// -> {"fingerprint": {"os": "...", "gpu_renderer": "...", ...}}
The 24 fields: OS and version · CPU cores · RAM · GPU vendor and renderer · screen resolution · viewport · colour depth · timezone · language · user agent · browser version · platform · device type · hardware concurrency · max touch points · connection (downlink, rtt, effective type) · media devices (audio in/out, video in) · fonts · canvas hash · WebGL hash · audio hash · do-not-track · storage quota.
Pass a profile id to collect a fresh fingerprint from a live browser instead:
{ "tool": "fingerprint", "profile": "<profile-id>" }
Screenshots
| Tool | What it does | Price / 1,000 |
|---|---|---|
screenshot_page | Full-page or viewport screenshot of any URL, including protected ones | $10.00 |
Optional fields: full (boolean), width, wait (ms before capture). Returns base64 PNG.
Pricing
Per 1,000 requests, in USD. No monthly fee, no minimum, no subscription.
| Service | Tool | Price / 1,000 |
|---|---|---|
| Search results | google_web, yandex_web, … | $1.00 |
| Page fetch & parse | parse_page | $2.00 |
| OCR — images | ocr_document | $3.00 |
| Data by schema | extract_schema | $6.00 |
| Fingerprints | fingerprint | $6.00 |
| Screenshots | screenshot_page | $10.00 |
| Browser rendering + anti-bot | parse_page_pro | $7.00 |
| Captcha solving 100% accuracy mode | captcha_* | $7.00 |
| Forms — read / submit / submit+captcha | form_action | $1.00 / $2.00 |
| Proxy — dedicated IPv4 (per 30 days) | proxy_buy | $1.77 |
| OCR — PDF (up to 10 pages) | ocr_pdf | $20.00 |
How charging works: one request = one unit. Tools that need several upstream calls (for example positions with a deep keyword set) return a requests field showing how many units were consumed.
Errors
| HTTP | Meaning | What to do |
|---|---|---|
400 | Bad request — missing or invalid fields | Check tool and required parameters |
402 | Payment required | Sign the payment and repeat with X-PAYMENT |
403 | Tool not available | Check the tool name against the list above |
429 | Too many requests | Back off and retry |
502 | Upstream temporarily unavailable | Retry in a few seconds — you were not charged |
Error responses are always JSON: {"error": "human readable message"}.
Code examples
Python — requests + x402 client:
import requests
URL = "https://api.serp-base.com/v1/query"
payload = {"tool": "google_web", "query": "best crm", "depth": 10}
r = requests.post(URL, json=payload)
if r.status_code == 402:
reqs = r.json()["accepts"][0] # price, network, payTo
# sign with your wallet, then:
r = requests.post(URL, json=payload,
headers={"X-PAYMENT": signed_payment})
print(r.json()["data"])
JavaScript:
const r = await fetch("https://api.serp-base.com/v1/query", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ tool: "ocr_document", image: base64 })
});
const data = await r.json();
With an API key (dashboard account):
curl -X POST https://api.serp-base.com/v1/query \
-H "Content-Type: application/json" \
-H "X-API-KEY: your_key_here" \
-d '{"tool":"parse_page","url":"https://example.com"}'
MCP & agents
Agent access over MCP is on the way. Your agent will connect to a single MCP server and discover every tool automatically — no wrapper code, payment settled in-band through x402.
Works with any MCP-capable client: Claude Code, Cursor, CrewAI, LangChain and others. Contact us if you want early access.
FAQ
Do I need an account to use the API?
No. Every tool works pay-per-request with USDC over x402 — no email, no signup. An account is only needed if you want a prepaid balance, API keys and a usage dashboard.
What happens if a request fails?
You are not charged. We execute the work first and settle the payment only after data is produced. A failed request costs you nothing.
How do I test without spending real money?
Use Base Sepolia. Send X-PAYMENT-NETWORK: base-sepolia, get free test USDC from the Circle faucet, and exercise the full flow — the protocol, headers and responses are identical.
Which captchas can you solve?
17 types, listed above — including reCAPTCHA v2/v3, hCaptcha, Cloudflare Turnstile and Challenge, Yandex SmartCaptcha, GeeTest, DataDome, Amazon WAF and VK.
Can I use it from an AI agent?
Yes — that is the primary use case. Agents call the API directly with x402, or connect over MCP once it is available.
Ready to start?
No signup for pay-per-request. Create an account if you want a balance dashboard.
Create account Browse services