Integrate live Google index verification, HTTP status checks and keyword rank tracking directly into your applications, CRMs, or SEO workflows. All bulk endpoints support up to 2,000 items per request and process asynchronously via background workers.
| Method | Endpoint | Description | Limit | Credits |
|---|---|---|---|---|
| POST | /api/v1/check |
Check a single URL — synchronous | 1 | 1 |
| POST | /api/v1/check/bulk |
Bulk index check — async queue | 2,000 | 1 / URL |
| POST | /api/v1/http-status |
Check HTTP status + soft 404 — synchronous | 1 | 1 |
| POST | /api/v1/http-status/bulk |
Bulk HTTP status check — async queue | 2,000 | 1 / URL |
| POST | /api/v1/keyword-track |
Keyword rank tracker — 1 query sync, 2+ async | 2,000 | 1 / query |
| GET | /api/v1/batch/{batch_id} |
Poll batch progress + results | — | 0 |
| GET | /api/v1/batches |
List all your batch jobs | — | 0 |
| GET | /api/v1/credits |
Get your current credit balance | — | 0 |
| GET | /api/v1/history |
Paginated index check history | — | 0 |
All API requests must include your secret API token in the Authorization header. Generate tokens from your API Tokens Dashboard.
Authorization: Bearer YOUR_API_TOKEN
All /bulk endpoints follow the same async pattern — no timeouts, no blocked connections, no limits on your app.
batch_id in < 200ms.GET /api/v1/batch/{'{batch_id}'} or receive results automatically via webhook.pending → processing → completed / partial / failed. Poll every few seconds until status is no longer processing.
Verify if a URL is indexed in Google. Returns an immediate synchronous response. Costs 1 credit.
curl -X POST https://indexchecker.live/api/v1/check \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/page"}'
{
"success": true,
"url": "https://example.com/page",
"is_indexed": true,
"engine": "google",
"request_id": 42,
"checked_at": "2026-08-27T10:00:00+00:00"
}
Submit up to 2,000 URLs in a single request. Returns a batch_id instantly (202 Accepted). Poll the batch endpoint or supply an optional webhook_url to receive results automatically. Costs 1 credit per URL.
curl -X POST https://indexchecker.live/api/v1/check/bulk \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"urls": [
"https://example.com/page-1",
"https://example.com/page-2"
],
"webhook_url": "https://yourserver.com/webhook"
}'
{
"success": true,
"message": "Bulk index check queued. 2 items will be processed by workers.",
"batch_id": "8e10fd20-e08c-44cf-ae78-047fe33e16e8",
"total": 2,
"status": "pending",
"poll_url": "https://indexchecker.live/api/v1/batch/8e10fd20-...",
}
Fetch a URL's real HTTP status code with heuristic Soft 404 detection — pages returning 200 OK but containing "not found" text. Costs 1 credit.
curl -X POST https://indexchecker.live/api/v1/http-status \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/missing-page"}'
{
"success": true,
"url": "https://example.com/missing-page",
"status": 404,
"is_soft404": false,
"request_id": 55
}
Submit up to 2,000 URLs for HTTP status checking in one request. Processed asynchronously — returns a batch_id immediately. You can optionally supply a webhook_url for completion alerts. Costs 1 credit per URL.
curl -X POST https://indexchecker.live/api/v1/http-status/bulk \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"urls": [
"https://example.com/page-1",
"https://example.com/page-2"
],
"webhook_url": "https://yourserver.com/webhook"
}'
Track where your pages rank in Google for any keyword, country, device and page range. 1 query = synchronous response. 2+ queries = automatically queued — returns a batch_id to poll. You can optionally supply a webhook_url. Costs 1 credit per query.
curl -X POST https://indexchecker.live/api/v1/keyword-track \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"webhook_url": "https://yourserver.com/webhook",
"queries": [
{
"url": "example.com",
"keyword": "best running shoes",
"country": "US",
"language": "en",
"start_page": 1,
"end_page": 10,
"brd_mobile": false
}
]
}'
Query Parameters
| Field | Type | Required | Description |
|---|---|---|---|
url | string | ✅ Yes | Domain or URL to match in SERP results |
keyword | string | ✅ Yes | The keyword to search Google for |
country | string (2-char) | No | Country code e.g. US, GB, IN. Default: US |
language | string (2-char) | No | Language code e.g. en, de. Default: en |
start_page | integer | No | First SERP page to check. Default: 1 |
end_page | integer (max 10) | No | Last SERP page to check. Default: 10 |
brd_mobile | boolean | No | Use mobile SERP results. Default: false |
Use the batch_id from any bulk response to check progress. Results are included once the batch is complete. Works for all three tool types.
{
"success": true,
"batch_id": "8e10fd20-e08c-44cf-ae78-047fe33e16e8",
"type": "index",
"status": "processing",
"total": 2000,
"processed": 450,
"successful": 448,
"failed": 2,
"progress": "22%",
"created_at": "2026-08-27T10:00:00+00:00",
"completed_at": null
}
List All Batches
curl -X GET "https://indexchecker.live/api/v1/batches?type=index&per_page=20" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Optional type filter: index | http | keyword
If you supply a webhook_url, we POST JSON to it when the batch completes. Each tool type sends a slightly different payload.
Index Check Webhook
HTTP Status Webhook
Keyword Tracker Webhook
Retrieve your current available credits. Free to call — costs 0 credits.
curl https://indexchecker.live/api/v1/credits \
-H "Authorization: Bearer YOUR_API_TOKEN"
{ "credits": 9450 }
| HTTP Status | Meaning |
|---|---|
200 OK | Request succeeded (single URL endpoints) |
202 Accepted | Bulk job queued successfully — poll the poll_url |
401 Unauthorized | Missing or invalid API token |
402 Payment Required | Insufficient credits — top up at /credits |
422 Unprocessable | Validation error — check the errors field in the response |
503 Service Unavailable | BrightData upstream error — retry after a few seconds |
500 Server Error | Unexpected error — contact support if persistent |