Data Sources · Nuxt Sitemap · Nuxt SEO

[NuxtSEO](https://nuxtseo.com/ "Home")

- [Modules](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [Tools](https://nuxtseo.com/tools)
- [Pro](https://nuxtseo.com/pro)
- [Learn SEO](https://nuxtseo.com/learn-seo/nuxt) [Releases](https://nuxtseo.com/releases)

[1.4K](https://github.com/harlan-zw/nuxt-seo)

[Nuxt SEO on GitHub](https://github.com/harlan-zw/nuxt-seo)

[User Guides](https://nuxtseo.com/docs/sitemap/getting-started/introduction)

[API](https://nuxtseo.com/docs/sitemap/api/config)

[Releases](https://nuxtseo.com/docs/sitemap/releases/v8)

Sitemap

- [Switch to Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)
- [Switch to Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [Switch to Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)
- [Switch to OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)
- [Switch to Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)
- [Switch to Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)
- [Switch to SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)
- [Switch to Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)
- [Switch to Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)
- [Switch to AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)

Search…```k`` /`

v8.0.11

- Playgrounds
- [Discord Support](https://discord.com/invite/275MBUBvgP)

### Getting Started

- [Introduction](https://nuxtseo.com/docs/sitemap/getting-started/introduction)
- [Installation](https://nuxtseo.com/docs/sitemap/getting-started/installation)
- [Data Sources](https://nuxtseo.com/docs/sitemap/getting-started/data-sources)
- [Troubleshooting](https://nuxtseo.com/docs/sitemap/getting-started/troubleshooting)

### Core Concepts

- [Dynamic URL Endpoints](https://nuxtseo.com/docs/sitemap/guides/dynamic-urls)
- [Disabling Indexing](https://nuxtseo.com/docs/sitemap/guides/filtering-urls)
- [Multi Sitemaps](https://nuxtseo.com/docs/sitemap/guides/multi-sitemaps)
- [I18n](https://nuxtseo.com/docs/sitemap/guides/i18n)
- [Nuxt Content](https://nuxtseo.com/docs/sitemap/guides/content)
- [Nuxt Prerendering](https://nuxtseo.com/docs/sitemap/guides/prerendering)
- [Best Practices](https://nuxtseo.com/docs/sitemap/guides/best-practices)
- [Submitting Your Sitemap](https://nuxtseo.com/docs/sitemap/guides/submitting-sitemap)
- [Zero Runtime](https://nuxtseo.com/docs/sitemap/guides/zero-runtime)

### Advanced

- [Lastmod, Priority, and Changefreq](https://nuxtseo.com/docs/sitemap/advanced/loc-data)
- [Images, Videos, News](https://nuxtseo.com/docs/sitemap/advanced/images-videos)
- [Sitemap Performance](https://nuxtseo.com/docs/sitemap/advanced/performance)
- [Sitemap Chunking](https://nuxtseo.com/docs/sitemap/advanced/chunking-sources)
- [Customising the UI](https://nuxtseo.com/docs/sitemap/advanced/customising-ui)

Getting Started

# Data Sources

[Copy for LLMs](https://nuxtseo.com/docs/sitemap/getting-started/data-sources.md)

## [Where do sitemap URLs come from?](#where-do-sitemap-urls-come-from)

After installing the module, you may wonder: where do the URLs in your sitemap come from?

Every URL belongs to a **source**. There are two types:

- **Application Sources** - Automatically discovered from your Nuxt app
- **User Sources** - Manually provided by you

For most sites, application sources handle everything automatically. You only need user sources when you have dynamic routes from a CMS or database.

## [Application Sources](#application-sources)

Application sources are automatically generated from your Nuxt application. They provide convenience by automatically discovering URLs from your app's structure, but can be disabled if they don't match your needs.

- `nuxt:pages` - Statically analysed pages of your application (including [`definePageMeta`](https://nuxtseo.com/docs/sitemap/advanced/loc-data#modify-loc-data-with-page-meta) sitemap config)
- `nuxt:prerender` - URLs that were prerendered
- `nuxt:route-rules` - URLs from your route rules
- `@nuxtjs/i18n:pages` - When using the `pages` config with Nuxt I18n. See [Nuxt I18n](https://nuxtseo.com/docs/sitemap/guides/i18n) for more details.
- `nuxt-i18n-micro:pages` - When using the `pages` config with Nuxt I18n Micro. See [Nuxt I18n](https://nuxtseo.com/docs/sitemap/guides/i18n) for more details.
- `@nuxt/content@v2:urls` - When using Nuxt Content v2. See [Nuxt Content](https://nuxtseo.com/docs/sitemap/guides/content) for more details.
- `@nuxt/content@v3:urls` - When using Nuxt Content v3. See [Nuxt Content](https://nuxtseo.com/docs/sitemap/guides/content) for more details.

### [Disabling Application Sources](#disabling-application-sources)

You can disable application sources individually or all at once using the `excludeAppSources` config option.

Disable all app sources

Disable pages app source

```
export default defineNuxtConfig({
  sitemap: {
    // exclude all app sources
    excludeAppSources: true,
  }
})
```

```
export default defineNuxtConfig({
  sitemap: {
    // exclude static pages
    excludeAppSources: ['nuxt:pages'],
  }
})
```

## [User Sources](#user-sources)

User sources allow you to manually configure where your sitemap URLs come from. These are especially useful for dynamic routes that aren't using [prerendering discovery](https://nuxtseo.com/docs/sitemap/guides/prerendering).

You have several options for providing user sources:

### [1. Build-time Sources with `urls` Function](#_1-build-time-sources-with-urls-function)

For sitemap data that only needs to be updated at build time, the `urls` function is the simplest solution. This function runs once during sitemap generation.

It should return an array of path strings or [URL objects](https://nuxtseo.com/docs/sitemap/guides/dynamic-urls#url-structure-reference).

Simple strings

Async function

```
export default defineNuxtConfig({
  sitemap: {
    urls: ['/about', '/contact', '/products/special-offer']
  }
})
```

```
export default defineNuxtConfig({
  sitemap: {
    urls: async () => {
      const response = await fetch('https://api.example.com/posts')
      const posts = await response.json()
      return posts.map(post => ({
        loc: \`/blog/${post.slug}\`,
        lastmod: post.updated_at,
      }))
    }
  }
})
```

### [2. Runtime Sources with `sources` Array](#_2-runtime-sources-with-sources-array)

For sitemap data that must always be up-to-date at runtime, use the `sources` array. Each source is a URL that gets fetched and should return either:

- JSON array of sitemap URL entries
- XML sitemap document

Single Sitemap

Multiple Sitemaps

```
export default defineNuxtConfig({
  sitemap: {
    sources: [
      // create our own API endpoints
      '/api/__sitemap__/urls',
      // use a static remote file
      'https://cdn.example.com/my-urls.json',
      // hit a remote API with credentials
      ['https://api.example.com/pages/urls', { headers: { Authorization: 'Bearer <token>' } }]
    ]
  }
})
```

```
export default defineNuxtConfig({
  sitemap: {
    sitemaps: {
      foo: {
        sources: [
          '/api/__sitemap__/urls/foo',
        ]
      },
      bar: {
        sources: [
          '/api/__sitemap__/urls/bar',
        ]
      }
    }
  }
})
```

You can provide multiple sources, but consider implementing your own caching strategy for performance.

Learn more about working with dynamic data in the [Dynamic URLs](https://nuxtseo.com/docs/sitemap/guides/dynamic-urls) guide.

### [3. Dynamic Sources Using Nitro Hooks](#_3-dynamic-sources-using-nitro-hooks)

For advanced use cases like forwarding authentication headers or adding sources based on request context, see the [Nitro Hooks documentation](https://nuxtseo.com/docs/sitemap/nitro-api/nitro-hooks#sitemap-sources).

[Edit this page](https://github.com/nuxt-modules/sitemap/edit/main/docs/content/0.getting-started/2.data-sources.md)

[Markdown For LLMs](https://nuxtseo.com/docs/sitemap/getting-started/data-sources.md)

Did this page help you?

[Installation Get started with Nuxt Sitemap by installing the dependency to your project.](https://nuxtseo.com/docs/sitemap/getting-started/installation) [Troubleshooting Common issues and debugging tips for Nuxt Sitemap.](https://nuxtseo.com/docs/sitemap/getting-started/troubleshooting)

On this page

- [Where do sitemap URLs come from?](#where-do-sitemap-urls-come-from)
- [Application Sources](#application-sources)
- [User Sources](#user-sources)

[GitHub](https://github.com/harlan-zw/nuxt-seo) [ Discord](https://discord.com/invite/275MBUBvgP)

### [NuxtSEO](https://nuxtseo.com/ "Home")

- [Getting Started](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [MCP](https://nuxtseo.com/docs/nuxt-seo/guides/mcp)

Modules

- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)

### [NuxtSEO Pro](https://nuxtseo.com/pro "Home")

- [Getting Started](https://nuxtseo.com/pro)
- [Dashboard](https://nuxtseo.com/pro/dashboard)
- [Pro MCP](https://nuxtseo.com/docs/nuxt-seo-pro/mcp/installation)

### [Learn SEO](https://nuxtseo.com/learn-seo "Learn SEO")

Nuxt

- [Mastering Meta](https://nuxtseo.com/learn-seo/nuxt/mastering-meta)
- [Controlling Crawlers](https://nuxtseo.com/learn-seo/nuxt/controlling-crawlers)
- [Launch & Listen](https://nuxtseo.com/learn-seo/nuxt/launch-and-listen)
- [Routes & Rendering](https://nuxtseo.com/learn-seo/nuxt/routes-and-rendering)
- [Staying Secure](https://nuxtseo.com/learn-seo/nuxt/routes-and-rendering/security)

Vue

- [Vue SEO Guide](https://nuxtseo.com/learn-seo/vue)
- [Mastering Meta](https://nuxtseo.com/learn-seo/vue/mastering-meta)
- [Controlling Crawlers](https://nuxtseo.com/learn-seo/vue/controlling-crawlers)
- [SPA SEO](https://nuxtseo.com/learn-seo/vue/spa)
- [SSR Frameworks](https://nuxtseo.com/learn-seo/vue/ssr-frameworks)
- [SEO Checklist](https://nuxtseo.com/learn-seo/checklist)
- [Pre-Launch Warmup](https://nuxtseo.com/learn-seo/pre-launch-warmup)
- [Backlinks & Authority](https://nuxtseo.com/learn-seo/backlinks)

### [Tools](https://nuxtseo.com/tools "SEO Tools")

- [Social Share Debugger](https://nuxtseo.com/tools/social-share-debugger)
- [Robots.txt Generator](https://nuxtseo.com/tools/robots-txt-generator)
- [Meta Tag Checker](https://nuxtseo.com/tools/meta-tag-checker)
- [HTML to Markdown](https://nuxtseo.com/tools/html-to-markdown)
- [XML Sitemap Validator](https://nuxtseo.com/tools/xml-sitemap-validator)
- [Schema.org Validator](https://nuxtseo.com/tools/schema-validator)
- [Keyword Research Pro](https://nuxtseo.com/tools/keyword-research)
- [SERP Analyzer Pro](https://nuxtseo.com/tools/serp-analyzer)
- [Domain Rankings Pro](https://nuxtseo.com/tools/domain-rankings)

Copyright © 2023-2026 Harlan Wilton - [MIT License](https://github.com/harlan-zw/nuxt-seo/blob/main/license) · [mdream](https://mdream.dev)