IndexNow and Indexing APIs in Nuxt

Notify search engines instantly when content changes using IndexNow, Google Indexing API, and RequestIndexing.
Harlan WiltonHarlan Wilton8 mins read Published

Search engines discover content changes through regular crawling, which can take days or weeks. Indexing APIs let you notify search engines immediately when you publish, update, or delete content.

IndexNow Protocol

IndexNow is an open-source protocol that notifies search engines instantly when URLs change. Instead of waiting for crawlers to discover updates, you push notifications directly to participating engines.

Supported search engines:

  • Microsoft Bing - Primary supporter and developer
  • Yandex - Russian search engine
  • Seznam.cz - Czech search engine
  • Naver - Korean search engine
  • Yep - Privacy-focused search engine

Important: Google does not support IndexNow. Use Google Search Console's manual "Request Indexing" feature or third-party tools (covered below).

When to Use IndexNow

Use IndexNow when:

  • Publishing new content (blog posts, product pages)
  • Updating existing pages (price changes, corrections)
  • Deleting pages (discontinued products, removed content)
  • Fixing critical errors on important pages
  • Running time-sensitive content (news, events, flash sales)

Don't use IndexNow for:

  • Minor text edits or typo fixes
  • Styling or layout changes
  • Pages already noindexed via robots meta tag
  • Private or staging content

Setting Up IndexNow

Generate an API key (8-128 alphanumeric characters):

openssl rand -hex 32

Create a key file in your public directory:

public/abc123def456.txt
abc123def456

The key must be accessible at https://yoursite.com/{key}.txt for verification.

Submitting URLs

Submit URLs after content changes. One notification reaches all IndexNow engines.

server/api/indexnow.post.ts
export default defineEventHandler(async (event) => {
  const { urls } = await readBody(event)

  await $fetch('https://api.indexnow.org/indexnow', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: {
      host: 'yoursite.com',
      key: useRuntimeConfig().indexnowKey,
      keyLocation: `https://yoursite.com/${useRuntimeConfig().indexnowKey}.txt`,
      urlList: urls
    }
  })

  return { success: true, count: urls.length }
})

Call from your content management workflows:

pages/admin/publish.vue
<script setup>
async function publishPost(post) {
  // Save content
  await $fetch('/api/posts', {
    method: 'POST',
    body: post
  })

  // Notify search engines
  await $fetch('/api/indexnow', {
    method: 'POST',
    body: {
      urls: [`https://yoursite.com/blog/${post.slug}`]
    }
  })
}
</script>

Submit up to 10,000 URLs per request. For single URLs, use GET:

https://api.indexnow.org/IndexNow?url=https://yoursite.com/page&key=abc123def456

Automated Integration

Nuxt SEO provides zero-config IndexNow support:

Nuxt SEO v3.3.0
2.1M
1.3K
The all-in-one module that brings it all together.

With the module installed, IndexNow triggers automatically when you:

  • Prerender pages with nuxt generate
  • Update content in supported CMS integrations
  • Call the useIndexNow() composable manually

See the IndexNow documentation for configuration options.

Google Indexing API

Google Indexing API works differently than IndexNow. It's limited to JobPosting and BroadcastEvent schema types only.

Don't use Google Indexing API for:

  • Blog posts
  • Product pages
  • General website content
  • News articles
  • Landing pages

Only use it if your site has:

  • Job listings with JobPosting schema
  • Livestream videos with BroadcastEvent schema

Using the API for other content types violates Google's terms and gets ignored. Google confirmed it won't help or hurt—it's simply ignored.

2025 API Changes

Google now requires approval for Indexing API access. The default quota is 200 requests for testing. Production use requires partner authorization. Smaller job boards and recruitment sites lost direct access.

If you run a job board, follow the official quickstart and request quota increases through Google Search Console.

RequestIndexing Tool

RequestIndexing by @harlan_zw automates bulk URL submission to Google Search Console. It uses your Search Console credentials to programmatically trigger the manual "Request Indexing" button for multiple URLs.

This isn't an official API—it automates the manual workflow. Google allows requesting indexing for individual URLs; RequestIndexing does this in bulk.

Use cases:

  • Bulk indexing after site migration
  • Re-indexing updated content
  • Submitting new pages when sitemaps aren't crawled quickly
  • Emergency indexing for time-sensitive content

Limitations:

  • Requires Google Search Console access
  • Subject to Google's rate limits
  • Not instant (still requires Googlebot crawling)
  • Manual process, not integrated into your build

Choosing the Right Method

Pick based on search engine priority and content type:

MethodBest ForLimitations
IndexNowBing/Yandex users, instant updatesDoesn't work for Google
Google Indexing APIJob boards, livestreamsJobPosting/BroadcastEvent only
RequestIndexingBulk Google submissionsManual process, rate limited
Search Console ManualOne-off important pagesSlow, not scalable
XML SitemapRoutine crawlingPassive, no urgency signal

Recommendation: Implement IndexNow for all content changes. Your Bing and Yandex traffic gets instant updates. For Google, use XML sitemaps for routine discovery and RequestIndexing for bulk submissions after major updates.

Don't waste time on Google Indexing API unless you're a job board or livestream platform.

Implementation Checklist

  1. Generate IndexNow API key
  2. Add key file to /public/{key}.txt
  3. Create server endpoint to call IndexNow API
  4. Trigger notifications in publish/update workflows
  5. Submit sitemap to Google Search Console
  6. Use RequestIndexing for bulk Google submissions
  7. Monitor Search Console for indexing status

For automated setup, install Nuxt SEO and configure IndexNow in your nuxt.config.ts.