> ## Documentation Index
> Fetch the complete documentation index at: https://speedy-index.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Google index checker API

> Endpoints, request bodies and response fields of the SpeedyIndex bulk Google index checker API, with notes for teams migrating from Custom Search JSON API.

The SpeedyIndex checker API verifies whether URLs are present in Google's index. It is the programmatic side of the [bulk Google index checker](https://en.speedyindex.com/google-index-checker/). Teams migrating off the Google Custom Search JSON API (retired on January 1, 2027) use it as a drop-in for `site:`-based checks; the [migration walkthrough](https://speedyindex---google-indexing-service.webflow.io/blog/migrate-index-checker-from-custom-search-api) covers the code changes, and the [background on the shutdown](https://uskotoivo81-netizen.github.io/google-index-checker-api-after-custom-search-shutdown/) covers why.

## Base URL and authentication

| Item | Value |
| - | - |
| Base URL | `https://app.speedyindex.com` |
| Auth header | `Authorization: <API key>` |
| Content type | `application/json` |
| Key issued in | [app.speedyindex.com](https://app.speedyindex.com/) or the Telegram bot |

<Note>The checker draws on its own balance, separate from indexing tokens. Current per-URL pricing is on the [checker page](https://en.speedyindex.com/google-index-checker/).</Note>

## Endpoints

### Create a check task

`POST /v2/task/google/checker/create`

<CodeGroup>
  ```json Request theme={null}
  {
    "title": "backlinks batch 2026-09",
    "urls": ["https://example.com/page-1", "https://example.com/page-2"]
  }
  ```

  ```json Response theme={null}
  { "code": 0, "task_id": "6609d023a3188540f09fec6c" }
  ```
</CodeGroup>

Limit: **10,000 URLs per request**. Split larger lists into several tasks.

### Task status

`POST /v2/task/google/checker/status` with body `{ "task_id": "..." }`. Processing is asynchronous; poll this endpoint rather than expecting the report immediately.

### Full report

`POST /v2/task/google/checker/fullreport` with body `{ "task_id": "..." }`. The response carries two arrays: `indexed_links` and `unindexed_links`.

## Verify

A successful run ends with `code: 0` on every call and a report where `indexed_links` plus `unindexed_links` equals the number of URLs submitted. A non-zero `code` means the request was rejected (bad key, empty list, over the limit); the message field says which.

<Warning>Keep the API key in an environment variable or secret store. Any client holding the key can spend the account balance.</Warning>

## Related

* [Official API documentation](https://en.speedyindex.com/api.php)
* [Google Custom Search JSON API overview](https://developers.google.com/custom-search/v1/overview) — the API being retired
