Skip to content

Quickstart

Five steps from zero to your first result.

Sign in to the SEO Checker dashboard, open the API section, and create a key. Copy it — it’s shown only once and looks like sk_live_…. See Authentication for details.

Send the keyword, region, and device. You get back a task_id.

Terminal window
curl -X POST https://api.seo-checker.com.ua/v1/serp/tasks \
-H "Authorization: Bearer sk_live_your_key" \
-H "Content-Type: application/json" \
-d '{"keyword":"best running shoes","region":"us","device":"desktop","depth":1}'
{ "task_id": "58e6ea50-492b-494c-9767-f6f1396e9298", "status": "queued" }

Poll GET /serp/tasks/{id} until status is done (or error). Results usually land within a few seconds; back off between polls.

Terminal window
curl https://api.seo-checker.com.ua/v1/serp/tasks/58e6ea50-492b-494c-9767-f6f1396e9298 \
-H "Authorization: Bearer sk_live_your_key"
{
"task_id": "58e6ea50-492b-494c-9767-f6f1396e9298",
"status": "done",
"result": {
"keyword": "best running shoes",
"region": "us",
"device": "desktop",
"total_results": 1010,
"items": [
{ "position": 1, "url": "https://example.com/best-running-shoes",
"title": "Best Running Shoes — 2026 Guide", "snippet": "",
"displayed_url": "example.com" }
]
},
"cost": 1
}
Python
import os, time, requests
BASE = "https://api.seo-checker.com.ua/v1"
headers = {"Authorization": f"Bearer {os.environ['SEO_CHECKER_API_KEY']}"}
task = requests.post(f"{BASE}/serp/tasks", headers=headers, json={
"keyword": "best running shoes", "region": "us", "device": "desktop",
}).json()
task_id = task["task_id"]
while True:
res = requests.get(f"{BASE}/serp/tasks/{task_id}", headers=headers).json()
if res["status"] in ("done", "error"):
break
time.sleep(2)
print(res["result"]["items"] if res["status"] == "done" else res["error"])
JavaScript
const BASE = "https://api.seo-checker.com.ua/v1";
const headers = {
Authorization: `Bearer ${process.env.SEO_CHECKER_API_KEY}`,
"Content-Type": "application/json",
};
const { task_id } = await fetch(`${BASE}/serp/tasks`, {
method: "POST", headers,
body: JSON.stringify({ keyword: "best running shoes", region: "us", device: "desktop" }),
}).then((r) => r.json());
let res;
do {
await new Promise((r) => setTimeout(r, 2000));
res = await fetch(`${BASE}/serp/tasks/${task_id}`, { headers }).then((r) => r.json());
} while (res.status !== "done" && res.status !== "error");
console.log(res.status === "done" ? res.result.items : res.error);