Yandex organic results
Yandex organic SERP with extended regional coverage.
$1.00 / 1,000
POST /v1/query
x402 · USDC on Base
Overview
Single endpoint, predictable JSON. Send POST /v1/query with the
tool field set to yandex_web.
curl -X POST https://api.serp-base.com/v1/query \
-H "Content-Type: application/json" \
-d '{"tool": "yandex_web", "query": "best coffee machines"}'
Parameters
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
query | string | required | Search phrase | best coffee machines |
geo | int|string | optional | Region id or name | 213, moscow, 84 |
depth | int | optional | Results count, 10..100 | 10, 50 |
device | string | optional | desktop | mobile | tablet | mobile |
lang | string | optional | Language | ru, en |
blocks | string[] | optional | Extra SERP blocks | ["sitelinks","topads"] |
Extra SERP blocks optional
Request additional blocks in one call — pass an array in blocks:
{"tool": "yandex_web", "query": "...", "blocks": ["sitelinks"]}
sitelinksoneline_sitelinksknowledge_graphtopadsrightadsbottomadscache_linkextended_snippetkoldunshikikoldunshiki_sidecarouselshows_monthfullsnippetshop_priceslocal_resultsrelated_searches
Regions optional
Pass either a numeric code or a name. Common examples:
| Region | Code |
|---|---|
| United States | us / 2840 |
| New York | 84 / new york |
| London | 1000000 / london |
| Berlin | 96 / berlin |
| Paris | 225 / paris |
Code examples
cURL
curl -X POST https://api.serp-base.com/v1/query \
-H "Content-Type: application/json" \
-d '{"tool": "yandex_web", "query": "best coffee machines", "geo": "us", "depth": 10}'
Python
import requests
r = requests.post("https://api.serp-base.com/v1/query", json={
"tool": "yandex_web",
"query": "best coffee machines",
"geo": "us",
"depth": 10
})
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": "yandex_web",
"query": "best coffee machines",
"geo": "us",
"depth": 10
})
});
const { data } = await r.json();
PHP
$ch = curl_init('https://api.serp-base.com/v1/query');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"tool": "yandex_web", "query": "best coffee machines", "geo": "us", "depth": 10}',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);
Response
{
"ok": true,
"tool": "yandex_web",
"paid_via": "x402",
"data": {
"found": 100,
"count": 10,
"results": [
{
"position": 1,
"url": "..."
}
]
}
}
Payment
Pay per request with USDC on Base via the x402 protocol. Gas is paid by the facilitator — you only need USDC in your wallet.
- Network: Base mainnet (
eip155:8453) - Asset: USDC
- Price: $1.00 per 1,000 requests — charged only when data is returned
- Test: Base Sepolia (
eip155:84532) with free USDC from Circle faucet
No payment is taken when a service fails. We run the work first and settle afterwards.
Errors
| Code | Meaning | Action |
|---|---|---|
402 | Payment required | Sign the payment and retry with X-PAYMENT |
400 | Bad parameters | Check required fields above |
422 | Data could not be produced | Nothing charged — retry later |
429 | Rate limited | Back off and retry |
503 | Tool temporarily unavailable | Retry later — nothing charged |
Related tools
Google organic results · Google images · Yandex images · News · Shopping · Suggestions