Skip to Content
IndexNow

Submit URLs

Submit up to 1000 new, changed or deleted URLs from one host to IndexNow in a single call.

POSThttps://api.rankparse.com/v1/indexnow1 credit (refunded on failure)API key

Submits a batch of URLs from one host to IndexNow, which shares it with Bing, Yandex, Seznam, Naver and the other participating engines. Before the first submission for a host, create its key and host the key file.

Body parameters

Send JSON with Content-Type: application/json.

urlsarray of stringsrequired

1 to 1000 absolute public http or https URLs, all on the same host, each on the default port. See the rules below. More than 1000 returns 400 indexnow_too_many_urls; a missing, empty or malformed list returns 400 indexnow_invalid_url.

Rules for urls:

  • Every URL must be a valid public http(s) URL. Private or reserved addresses, URLs with credentials (user:pass@), URLs with a # fragment, and URLs with leading or trailing whitespace are rejected with indexnow_invalid_url.
  • Every URL must use the default port. https://example.com:8443/a is rejected because IndexNow keys are verified on the default port.
  • Every URL must have the same hostname. https://example.com/a and https://www.example.com/b in one call fail with indexnow_host_mismatch. Make one call per host.
  • The host must be one of your websites or a subdomain of one (blog.example.com for a website example.com), else indexnow_host_not_a_website.
  • URLs are normalized (for example the host is lowercased) before they are sent.
  • Submit URLs that are new, changed or deleted. IndexNow is a change signal, not a way to re-submit unchanged pages.

Response

dataobject

The submission.

Show properties
hoststring

The host that was submitted.

url_countinteger

Number of URLs sent.

key_locationstring

Where the key file was verified.

statusstring

accepted when IndexNow answered HTTP 200 or 202.

credits_usedinteger

1.

credits_remaininginteger

Your balance after the call.

accepted means IndexNow accepted the notification. It does not mean any engine has crawled or indexed the pages yet.

Behavior and limits

  • Cost: 1 credit per call, whatever the number of URLs. The credit is charged first and refunded automatically when the call fails, including validation errors and upstream failures. See Credits.
  • Order of checks: body and URL validation, then website ownership, then key lookup, then key file verification (cached for 24 hours, see Key file verification), then the upstream submission (30 second timeout).
  • Indexing page: submitted URLs that are tracked on the website's Indexing page get their IndexNow submission time recorded, shown as indexnow.submitted_at in Indexing status.
  • Rate limit: the shared 60 requests per minute per key. IndexNow applies its own limits and can answer with indexnow_rate_limited; send changes in batches instead of one URL per call.

Approval inbox for agents

If your workspace uses the approval inbox, a call made by an AI agent does not submit right away. A call is agent-origin when it uses an API key and carries the header X-RankParse-Client: mcp, which the RankParse API-key MCP server sends for submit_indexnow_urls. Calls from your own code without that header, and RapidAPI calls, are never held for approval.

For an agent-origin call in such a workspace, the submission goes through the same checks as a proposal before anything is charged:

SituationResponse
The website's policy is to ask (the default)202 with data.status awaiting_approval, plus data.host, data.url_count, data.proposal_id, data.review_url and a top-level message. credits_used is 0. Nothing is submitted until you approve it in RankParse. The same URLs proposed again return the same proposal.
The website's policy is automatic and the daily URL limit (200 by default) has roomThe submission runs now and returns the normal 200 accepted response with data.proposal_id added. The 1 credit is charged once.
The website's policy is automatic but the daily URL limit is used up202 awaiting_approval, and the message says the automatic limit is used up.
The automatic run is left to the hourly retry, or the same proposal was already approved202 with data.status approved and a message. Do not propose it again.
The automatic run failedThe status and code it would have had as a direct call (see Errors), with proposal_id added to the body. The credit is refunded.
The proposal is refusedThe proposal error, for example 400 indexnow_key_not_found (checked before a proposal is created), 403 action_disabled_by_policy (the website's policy is off), 429 too_many_pending_proposals (25 waiting for the website) or 429 daily_proposal_limit_reached (100 new proposals today).

credits_remaining in these responses is null only if the balance could not be read. Show the review_url to the person who must approve, and track the outcome with proposals. An agent that should always go through the inbox can call propose_indexnow_submit instead.

Errors

HTTPCodeWhen
400indexnow_invalid_urlBody is not JSON, urls is missing or empty, an entry is not a string or not a valid public http(s) URL, or a URL has an explicit port.
400indexnow_too_many_urlsMore than 1000 URLs in one call.
400indexnow_host_mismatchThe URLs do not all share one host.
400indexnow_host_not_a_websiteThe host is not one of your websites or a subdomain of one. Add it under Dashboard, Sites.
400indexnow_key_not_foundNo key exists for this host. Create one first.
400indexnow_key_not_verifiedThe key file at key_location is missing, not HTTP 200, or does not contain exactly the key.
400indexnow_invalid_requestIndexNow rejected the submission as malformed.
401invalid_api_keyMissing, invalid or revoked API key.
402insufficient_creditsNot enough credits. Nothing was charged.
402spend_cap_reachedYour monthly spend cap is reached. Nothing was charged.
403capability_missingYour workspace role cannot spend credits.
403indexnow_key_rejectedIndexNow rejected the key. Confirm the key file is still hosted, then retry.
422indexnow_url_mismatchIndexNow rejected the URLs: they do not belong to the host, or the key does not match.
429rate_limitedMore than 60 requests in a minute.
429indexnow_rate_limitedIndexNow's rate limit was reached. Slow down and retry later.
503indexnow_unavailableIndexNow is unreachable or returned an unexpected status. Retry later.

Every failed call is refunded. See Errors for the error body format.

MCP tools: submit_indexnow_urls (accepts urls; API-key MCP server) and propose_indexnow_submit (accepts urls, optional site_id and note; also on the secure OAuth connector).