DEVELOPER DOCUMENTATION

IndexChecker API Reference

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.

Endpoint Overview

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

1. Authentication

All API requests must include your secret API token in the Authorization header. Generate tokens from your API Tokens Dashboard.

Header Format
Authorization: Bearer YOUR_API_TOKEN

2. How Bulk Processing Works

All /bulk endpoints follow the same async pattern — no timeouts, no blocked connections, no limits on your app.

1️⃣
Submit
POST your URLs. Credits are deducted instantly. You get a batch_id in < 200ms.
2️⃣
Process
Background workers process each URL in parallel, updating live progress in the database.
3️⃣
Collect
Poll GET /api/v1/batch/{'{batch_id}'} or receive results automatically via webhook.
Batch status values: pending → processing → completed / partial / failed. Poll every few seconds until status is no longer processing.

3. Check Single URL — Index Checker

Verify if a URL is indexed in Google. Returns an immediate synchronous response. Costs 1 credit.

POST https://indexchecker.live/api/v1/check
cURL
PHP
Node.js
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"}'
Response (200 OK)
{
  "success": true,
  "url": "https://example.com/page",
  "is_indexed": true,
  "engine": "google",
  "request_id": 42,
  "checked_at": "2026-08-27T10:00:00+00:00"
}

4. Bulk Index Check — Up to 2,000 URLs

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.

POST https://indexchecker.live/api/v1/check/bulk
cURL
PHP
Node.js
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"
  }'
Response (202 Accepted)
{
  "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-...",
}

5. HTTP Status Checker — Single URL

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.

POST https://indexchecker.live/api/v1/http-status
cURL
PHP
Node.js
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"}'
Response (200 OK)
{
  "success": true,
  "url": "https://example.com/missing-page",
  "status": 404,
  "is_soft404": false,
  "request_id": 55
}

6. Bulk HTTP Status Check — Up to 2,000 URLs

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.

POST https://indexchecker.live/api/v1/http-status/bulk
cURL
PHP
Node.js
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"
  }'

7. Keyword Position Tracker — Up to 2,000 Queries

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.

POST https://indexchecker.live/api/v1/keyword-track
cURL
PHP
Node.js
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
urlstring✅ YesDomain or URL to match in SERP results
keywordstring✅ YesThe keyword to search Google for
countrystring (2-char)NoCountry code e.g. US, GB, IN. Default: US
languagestring (2-char)NoLanguage code e.g. en, de. Default: en
start_pageintegerNoFirst SERP page to check. Default: 1
end_pageinteger (max 10)NoLast SERP page to check. Default: 10
brd_mobilebooleanNoUse mobile SERP results. Default: false

8. Poll Batch Status

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.

GET https://indexchecker.live/api/v1/batch/{batch_id}
Poll Response
Completed
{
  "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

GET https://indexchecker.live/api/v1/batches?type=index&per_page=20
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

9. Webhook Payloads

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

{
  "event": "bulk_index_check.completed",
  "batch_id": "8e10fd20-e08c-44cf-ae78-047fe33e16e8",
  "type": "index",
  "status": "completed",
  "total": 5,
  "successful": 5,
  "failed": 0,
  "completed_at": "2026-08-27T10:18:44+00:00",
  "results": [
    {
      "url": "https://example.com/page",
      "is_indexed": true,
      "request_id": 5,
      "checked_at": "2026-08-27T10:07:00+00:00"
    }
  ]
}

HTTP Status Webhook

{
  "event": "bulk_http_status.completed",
  "batch_id": "afbffe58-1d53-49af-9e10-9baa2500702e",
  "type": "http",
  "status": "completed",
  "total": 3,
  "successful": 3,
  "failed": 0,
  "completed_at": "2026-08-27T10:20:00+00:00",
  "results": [
    {
      "url": "https://example.com",
      "status_code": 200,
      "is_soft404": false,
      "request_id": 55,
      "checked_at": "2026-08-27T10:19:10+00:00"
    }
  ]
}

Keyword Tracker Webhook

{
  "event": "bulk_keyword_track.completed",
  "batch_id": "c3d4e5f6-7890-abcd-ef12-345678901234",
  "type": "keyword",
  "status": "completed",
  "total": 2,
  "successful": 2,
  "failed": 0,
  "completed_at": "2026-08-27T10:25:00+00:00",
  "results": [
    {
      "target_url": "example.com",
      "keyword": "running shoes",
      "rank": 3,
      "ranked_url": "https://example.com/shoes",
      "status": "completed",
      "request_id": 89,
      "checked_at": "2026-08-27T10:24:30+00:00"
    }
  ]
}

10. Credit Balance

Retrieve your current available credits. Free to call — costs 0 credits.

GET https://indexchecker.live/api/v1/credits
curl https://indexchecker.live/api/v1/credits \
  -H "Authorization: Bearer YOUR_API_TOKEN"
Response (200 OK)
{ "credits": 9450 }

11. Error Codes

HTTP Status Meaning
200 OKRequest succeeded (single URL endpoints)
202 AcceptedBulk job queued successfully — poll the poll_url
401 UnauthorizedMissing or invalid API token
402 Payment RequiredInsufficient credits — top up at /credits
422 UnprocessableValidation error — check the errors field in the response
503 Service UnavailableBrightData upstream error — retry after a few seconds
500 Server ErrorUnexpected error — contact support if persistent