Skip to content

An SEO API for indexing: REST and MCP

The indexing API for developers who would rather script than click. https://indexcyborg.com/v1 exposes sitemap scans, IndexNow notifications, Google index status and Request indexing as plain JSON over HTTPS, with scoped keys, job ids for long work and the same gates as the dashboard. The MCP server offers the same operations to coding agents.

1Authentication and scopes

Create a key in the dashboard under Settings → API keys and send it as a bearer token. Keys look like ic_ followed by 48 hex characters, are shown once and stored hashed.

ScopeAllows
readList sites and URLs, read index status, issues and reports
notifyQueue scans, IndexNow notifications, inspections, technical checks and indexing requests
manageRegister websites and URLs; the MCP server also uses it to set websites up
adminAccount tools of the MCP server (API keys, billing links, Google, removing websites); no REST endpoint uses it
List your websites
curl https://indexcyborg.com/v1/sites \
  -H "Authorization: Bearer $INDEXCYBORG_KEY"

A key can be limited to specific websites: give a client, a CI job or an agent access to one site and nothing else. Rotate or revoke keys at any time; a revoked key stops working on its next request.

2Endpoints

Successful responses wrap their payload in data; errors return error.code and error.message. GET /v1 lists the endpoints without a key.

EndpointScopeWhat it does
GET /v1/sitesreadList websites
POST /v1/sitesmanageRegister a website {domain}
GET /v1/sites/{id}readWebsite detail and setup state
POST /v1/sites/{id}/scannotifyQueue a sitemap discovery and URL inventory scan
GET /v1/sites/{id}/urlsreadList URLs; ?status=, ?unindexed=true, ?limit=, ?offset=
POST /v1/sites/{id}/urlsmanageRegister a URL {url}
POST /v1/sites/{id}/notifynotifyQueue an IndexNow notification for up to 1,000 URLs
POST /v1/sites/{id}/inspectnotifyQueue Search Console URL inspections
POST /v1/sites/{id}/checknotifyQueue technical checks (status, redirects, robots, canonical)
POST /v1/sites/{id}/google-indexingnotifyQueue up to 50 URLs for Request indexing via the Chrome extension
GET /v1/sites/{id}/google-indexingreadRequest indexing budget, queue and Search Console's answers
GET /v1/sites/{id}/issuesreadOpen issues; ?status=, ?severity=
GET /v1/sites/{id}/reportreadIndexing report with coverage over the inspected population
GET /v1/urls/{id}readOne URL, with Google's verbatim inspection result
GET /v1/jobs/{id}readJob status: queued, running, completed or failed

Three more endpoints under /v1/extension serve the Chrome extension: its budgets, the next URLs to request and Search Console's answers.

3Jobs: queue now, poll later

Scans, notifications, inspections, checks and indexing requests take longer than a request should. These endpoints answer 202 with a job id or a queue state, and the work runs on the scheduler.

1Notify IndexNow after a deploy

Request
curl -X POST https://indexcyborg.com/v1/sites/example.com/notify \
  -H "Authorization: Bearer $INDEXCYBORG_KEY" \
  -H "Content-Type: application/json" \
  -d '{"urls": ["https://example.com/pricing"]}'
202 Accepted
{
  "data": {
    "job_id": 1842,
    "status": "queued",
    "url_count": 1,
    "note": "Notification queued for IndexNow engines (Bing, Yandex, Seznam, Naver…). Google does not use IndexNow. …"
  }
}

2Poll the job

Request
curl https://indexcyborg.com/v1/jobs/1842 \
  -H "Authorization: Bearer $INDEXCYBORG_KEY"

The job moves from queued to running to completed or failed, with attempts and the last error. A completed notification job means the IndexNow endpoint accepted the URLs: not crawled, not indexed. Google doesn't use IndexNow; for Google, queue the page for Request indexing:

Queue a Google recrawl after changing a page
curl -X POST https://indexcyborg.com/v1/sites/example.com/google-indexing \
  -H "Authorization: Bearer $INDEXCYBORG_KEY" \
  -H "Content-Type: application/json" \
  -d '{"urls": ["https://example.com/pricing"]}'

4Limits and errors

Every key gets 60 requests per minute. Google's quotas apply on top and are the same for every plan.

StatusCodeMeaning
401missing_api_key, invalid_api_key, key_revokedNo key, an unknown or malformed key, or a revoked one
403insufficient_scopeThe key lacks the scope the endpoint needs
404site_not_foundNo website this key can access matches {id}
409site_not_verified, indexnow_key_not_verifiedVerify the domain (and the IndexNow key file) first
422invalid_body, no_valid_urlsThe body is malformed, or no URL belongs to the website
429rate_limitedMore than 60 requests in a minute; see Retry-After
  • URL inspections: 2,000 per Search Console property per day, Google's quota. 100 are kept for API and MCP calls.
  • Request indexing: 10 per property per rolling 24 hours, enforced by the API, the database and the extension.
  • IndexNow: up to 1,000 URLs per notify call, only for a verified domain with a verified key file.

5REST or MCP

Use the REST API from scripts, CI pipelines, CMS webhooks and no-code tools: call the notify endpoint after a deploy, pull the report into your own dashboard, fail a build when a key page picks up a noindex. Use the indexing MCP server when an agent such as Claude Code or Cursor should choose the calls itself. Both take the same keys and count against the same rate limit.

Building on Google's APIs directly instead? Our guides cover the Google Search Console API, the URL Inspection API and why the Google Indexing API isn't meant for ordinary pages.

6Frequently asked questions

What can the IndexCyborg SEO API do?
It covers the indexing workflow for websites you own: register sites and URLs, scan sitemaps, notify IndexNow, queue Google URL inspections, technical checks and Request indexing, and read index status, issues and reports. Everything the dashboard does is available to scripts and agents.
Does it use the Google Indexing API?
No. Google documents the Indexing API for JobPosting and BroadcastEvent pages only. IndexCyborg reads status through Search Console's URL Inspection API and requests indexing through a Chrome extension that clicks Request indexing in your own Search Console session.
How is the API rate limited?
Each key can make 60 requests per minute. Past that the API answers 429 with a Retry-After header. Google's own quotas apply on top: 2,000 URL inspections per property per day and 10 indexing requests per property per rolling 24 hours.
Is it a Search Console API alternative?
For indexing work, it saves you from scripting the URL Inspection API, its quota and the scheduling yourself, and adds IndexNow and Request indexing. It doesn't return Search Console's performance data (clicks, impressions, queries); use Google's Search Console API for that.
Can an API call get a page indexed?
No API can force Google to crawl or index a page. A call can notify IndexNow engines or queue a page for Request indexing; the response says the work was queued, and later answers say whether it was accepted or requested, never that the page is indexed until Google reports it.

Get an API key

Create an account, verify a website and generate a key under Settings. Starter is $5 a month for one website, Pro is $15 a month for every website you run, or pay once from 1,000 pages for $5. Every plan has the whole workflow, the REST API and the MCP server.

Billing isn't live yet. During early access nothing is charged and every account has Pro limits.