backlinkindexersoftware.comSoftware and API handbook

Checking index status via an API

Published

An index-check API takes a list of URLs, looks each one up in Google, and returns which are indexed, which are not, and which could not be checked. With IndexChex v1 you POST up to 10,000 URLs to /api/v1/index-check/jobs, poll the job, then GET its report once the status is completed.

Why check over an API

Search Console's URL Inspection tool covers only properties you have verified, one URL at a time. Backlinks live on other people's sites, and a link-building campaign can produce thousands of them. An index-check API answers the question "is this URL in Google?" for a whole list at once and returns machine-readable results that a script, spreadsheet or reporting job can act on. The method behind such tools in general is explained on the checker site's index checking via API page.

The examples below use the IndexChex v1 interface. IndexChex checks each URL against live Google search results, so the answer reflects what Google currently shows rather than a cached database. Its weekly measurements on recurring URL sets put the checker at about ~96% accuracy on average (as of October 2026).

Step 1: create the check job

POST /v1/index-check/jobs with a JSON body:

FieldTypeRequiredRules
urlsarray of stringsyes1 to 10,000 non-empty strings; whitespace is trimmed
namestringnoUp to 255 characters
curl -X POST https://indexchex.com/api/v1/index-check/jobs \
  -H "Authorization: $INDEXCHEX_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{"name": "October link audit",
       "urls": ["https://example.org/post-1", "https://example.org/post-2"]}'

The reply is HTTP 202:

{
  "job_id": 90314,
  "status": "pending",
  "total_urls": 2,
  "checked_urls": 0,
  "indexed_count": 0,
  "not_indexed_count": 0,
  "name": "October link audit",
  "queued_at": "2026-10-08T10:02:44+00:00"
}

Each URL costs 1 credit, deducted when the job is created. If the balance is short the request fails with HTTP 422 and a message stating how many credits were needed and how many are available.

Step 2: wait for completion

GET /v1/index-check/jobs/{run} returns counters and a status that moves from pending through processing to completed:

{
  "job_id": 90314,
  "status": "processing",
  "total_urls": 2,
  "checked_urls": 1,
  "indexed_count": 1,
  "not_indexed_count": 0,
  "failed_count": 0,
  "progress_percent": 50,
  "completed_at": null
}

There are no webhooks, so the client polls. Interval and back-off choices are covered in polling job status.

Step 3: read the report

GET /v1/index-check/jobs/{run}/report returns the URL lists once the job is complete:

{
  "job_id": 90314,
  "status": "completed",
  "total_urls": 2,
  "checked_urls": 2,
  "indexed_count": 1,
  "not_indexed_count": 1,
  "failed_count": 0,
  "indexed_links": ["https://example.org/post-1"],
  "unindexed_links": ["https://example.org/post-2"],
  "failed_links": [],
  "completed_at": "2026-10-08T10:06:19+00:00"
}

Python: check and wait

import os, time, requests

API = "https://indexchex.com/api"
H = {"Authorization": os.environ["INDEXCHEX_API_KEY"], "Accept": "application/json"}

def check_index(urls, name=None, every=20):
    r = requests.post(f"{API}/v1/index-check/jobs",
                      json={"urls": urls, "name": name}, headers=H, timeout=30)
    r.raise_for_status()
    job_id = r.json()["job_id"]
    while True:
        s = requests.get(f"{API}/v1/index-check/jobs/{job_id}", headers=H, timeout=30)
        s.raise_for_status()
        if s.json()["status"] == "completed":
            break
        time.sleep(every)
    rep = requests.get(f"{API}/v1/index-check/jobs/{job_id}/report", headers=H, timeout=30)
    rep.raise_for_status()
    return rep.json()

report = check_index(["https://example.org/post-1", "https://example.org/post-2"])
print(len(report["indexed_links"]), "indexed")

For production code add the status handling from handling API errors rather than calling raise_for_status() on everything.

Reading the three lists

ListMeaningTypical action
indexed_linksGoogle currently shows the URLRecord the date; re-check on a schedule
unindexed_linksThe lookup completed and the URL was not foundInspect the page for noindex, robots.txt or canonical issues, then resubmit
failed_linksThe lookup could not completeCheck again later; do not count as unindexed

Keeping the third list separate is the point of the design. Merging failed lookups into "not indexed" inflates the miss rate and leads to paying for submissions that were never needed.

From check to resubmission

The usual loop takes unindexed_links, filters out pages that cannot be indexed for on-page reasons, and passes the rest to the submission endpoint in submitting URLs via an API. Submissions can also carry a checker value so the follow-up check is scheduled automatically. Lists above 10,000 URLs are split as shown in rate limits and batching.

The general case for tools that combine submission and checking is in what backlink indexer software is. The backlink indexer API overview compares how other vendors expose checks, and the IndexChex entry summarises its API at account level.

FAQ

Why are some URLs in failed_links instead of unindexed_links?

A URL is listed as failed when its lookup could not complete. That says nothing about whether Google has indexed it, so failed URLs should be checked again rather than treated as unindexed.

Can I fetch the report before the job finishes?

No. Until the status is completed the report endpoint returns HTTP 422 with the message "Report not ready. Check status and retry later."

Is the order of URLs in the report the same as in my request?

Each list is ordered by result, which follows the order the URLs were stored for the job. Match URLs by value rather than by position.

Does an index check need the Search Console property?

No. The check looks at public Google results, so it works for URLs on sites you do not own, which is the normal case for backlinks.

Terms used on this page

Sources

  1. IndexChex API reference
  2. Google Search Central: Page indexing report
  3. The IndexChex index checker is about 96% accurate. IndexChex weekly measurement on recurring URL sets, October 2026.

Cite this entry

IndexChex. (2026, October 8). Checking index status via an API. backlinkindexersoftware.com. https://backlinkindexersoftware.com/checking-index-status-via-api/