Sitemap URL Extractor

Give it a sitemap.xml link and get back every URL listed in it — including nested sub-sitemaps — with metadata like last modified date and change frequency. Give this API a link to any website's sitemap.xml file and it will fetch and parse it, returning every URL found inside. If the sitemap links to other sitemaps (called sitemap indexes), it will follow and extract those too. Each URL is returned with any extra information available, such as when the page was last updated and how often it changes. Useful for SEO audits, content inventories, broken link checks, and competitive research. Pay-per-call at $0.01 USDC over x402 on Base or Solana — no account, no API key. OpenAPI 3.1.0; 1 operation(s): POST /extract.

OpenAPI Specification

done-sitemap-url-extractor-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Sitemap URL Extractor
  description: Give this API a link to any website's sitemap.xml file and it will fetch and parse it, returning every URL
    found inside. If the sitemap links to other sitemaps (called sitemap indexes), it will follow and extract those too. Each
    URL is returned with any extra information available, such as when the page was last updated and how often it changes.
    Useful for SEO audits, content inventories, broken link checks, and competitive research.
  version: 1.0.0
  contact:
    name: _done
    url: https://forms.gle/5KzuSFH7p8hHtDmz7
    email: info@underscoredone.com
  x-openapi-url: https://sitemap-url-extractor.underscoredone.com/openapi.json
  x-logo:
    url: https://underscoredone.com/logo.png
    altText: _done
  x-guidance: POST a JSON body with a single field called 'sitemap_url' containing the full URL of the sitemap.xml file you
    want to parse. The API will follow any nested sitemap index files automatically and return a flat list of all discovered
    URLs along with their metadata. If the sitemap is unreachable, returns a 400 error. If the URL does not point to valid
    XML sitemap content, returns a 400 error. Do not pass multiple URLs — one call, one sitemap URL. Use the 'total_urls'
    field to quickly count results without iterating the list.
  x-ai-instructions: POST a JSON body with a single field called 'sitemap_url' containing the full URL of the sitemap.xml
    file you want to parse. The API will follow any nested sitemap index files automatically and return a flat list of all
    discovered URLs along with their metadata. If the sitemap is unreachable, returns a 400 error. If the URL does not point
    to valid XML sitemap content, returns a 400 error. Do not pass multiple URLs — one call, one sitemap URL. Use the 'total_urls'
    field to quickly count results without iterating the list.
  x-provider: _done — single-purpose utility APIs for developers and AI agents. Pay per call with USDC on Base Mainnet or
    Solana Mainnet.
  x-pricing:
    model: pay-per-call
    currency: USDC
    network: Base Mainnet or Solana Mainnet
    price: $0.01
  x-keywords:
  - parsing
  - sitemap
  - url extractor
  - seo audit
  - content inventory
  - site crawl
  - sitemap index
  - xml parsing
  - broken link check
  - competitive analysis
  - utility
  - api
  - ai-agent
  - pay-per-call
  - usdc
  - x402
  x-category: sitemap
  x-provider-url: https://underscoredone.com
  x-agentcash-auth:
    mode: paid
  x-402:
    price: $0.01
    network: eip155:8453
    asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
    pay_to: '0xE9740820225B3918b4ddd1292C7cA4Ca0e2C2F08'
    facilitator: https://api.cdp.coinbase.com/platform/v2/x402
    scheme: exact
    description: Give this API a link to any website's sitemap.xml file and it will fetch and parse it, returning every URL
      found inside. If the sitemap links to other sitemaps (called sitemap indexes), it will follow and extract those too.
      Each URL is returned with any extra information available, such as when the page was last updated and how often it changes.
      Useful for SEO audits, content inventories, broken link checks, and competitive research.
    mime_type: application/json
    networks:
    - network: eip155:8453
      asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
      pay_to: '0xE9740820225B3918b4ddd1292C7cA4Ca0e2C2F08'
    - network: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
      asset: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
      pay_to: 8ugAWAXDB8V18kiUrGZTq1oMvU3C6Fxs8hfC6rvzQT3b
paths:
  /extract:
    post:
      tags:
      - sitemap
      - sitemap parser
      - extract sitemap urls
      - parse sitemap
      - sitemap.xml
      - sitemap crawler
      - url extraction
      - sitemap index
      - crawl sitemap
      - website urls
      - sitemap reader
      - seo crawl
      - url discovery
      - list site urls
      summary: Extract all URLs from a sitemap.xml file, including nested sub-sitemaps, with metadata.
      description: Fetch and parse the sitemap at the given address, returning every URL found inside along with any available
        metadata like last-modified date and change frequency.
      operationId: handler_extract_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Request'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
              examples:
                success:
                  summary: Successful response
                  value:
                    api_version: 1.0.0
                    total_urls: 6
                    sitemaps_found: 1
                    urls:
                    - url: https://onescales.com/pages/contact
                      lastmod: '2022-12-27T03:01:05-05:00'
                      changefreq: weekly
                      priority: null
                    - url: https://onescales.com/pages/about
                      lastmod: '2025-09-29T21:38:56-04:00'
                      changefreq: weekly
                      priority: null
                    - url: https://onescales.com/pages/join-our-community
                      lastmod: '2023-11-29T18:49:48-05:00'
                      changefreq: weekly
                      priority: null
                    - url: https://onescales.com/pages/podcast
                      lastmod: '2024-01-01T23:12:34-05:00'
                      changefreq: weekly
                      priority: null
                    - url: https://onescales.com/pages/support-us
                      lastmod: '2024-10-07T21:21:59-04:00'
                      changefreq: weekly
                      priority: null
                    - url: https://onescales.com/pages/shopify-growth-course
                      lastmod: '2025-05-06T21:28:16-04:00'
                      changefreq: weekly
                      priority: null
        '422':
          description: Unprocessable — a required field is missing or the wrong type. Check the detail field for specifics.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: array
        '402':
          description: Payment required. Send a signed USDC payment on Base Mainnet or Solana Mainnet using the x402 protocol.
          headers:
            X-Payment-Response:
              description: x402 payment challenge — base64-encoded JSON with payment details.
              schema:
                type: string
        '400':
          description: Bad request — your input failed validation or could not be processed. Check the detail field for specifics.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
      x-ai-instructions: POST a JSON body with a single field called 'sitemap_url' containing the full URL of the sitemap.xml
        file you want to parse. The API will follow any nested sitemap index files automatically and return a flat list of
        all discovered URLs along with their metadata. If the sitemap is unreachable, returns a 400 error. If the URL does
        not point to valid XML sitemap content, returns a 400 error. Do not pass multiple URLs — one call, one sitemap URL.
        Use the 'total_urls' field to quickly count results without iterating the list.
      x-guidance: POST a JSON body with a single field called 'sitemap_url' containing the full URL of the sitemap.xml file
        you want to parse. The API will follow any nested sitemap index files automatically and return a flat list of all
        discovered URLs along with their metadata. If the sitemap is unreachable, returns a 400 error. If the URL does not
        point to valid XML sitemap content, returns a 400 error. Do not pass multiple URLs — one call, one sitemap URL. Use
        the 'total_urls' field to quickly count results without iterating the list.
      x-payment-info:
        price:
          fixed:
            mode: fixed
            currency: USD
            amount: '0.01'
        protocols:
        - x402: {}
components:
  schemas:
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    Request:
      properties:
        sitemap_url:
          type: string
          title: Sitemap Url
          description: 'The full web address of the sitemap.xml file you want to read, for example: https://example.com/sitemap.xml'
      type: object
      required:
      - sitemap_url
      title: Request
      example:
        sitemap_url: https://onescales.com/sitemap.xml
    Response:
      properties:
        api_version:
          type: string
          title: Api Version
          description: API version
          default: 1.0.0
        total_urls:
          type: integer
          title: Total Urls
          description: The total number of unique page addresses found across all sitemaps
        sitemaps_found:
          type: integer
          title: Sitemaps Found
          description: How many individual sitemap files were read, including any nested ones
        urls:
          items:
            $ref: '#/components/schemas/URLEntry'
          type: array
          title: Urls
          description: The full list of page addresses found, each with any available metadata
      type: object
      required:
      - total_urls
      - sitemaps_found
      - urls
      title: Response
      example:
        api_version: 1.0.0
        sitemaps_found: 1
        total_urls: 6
        urls:
        - changefreq: weekly
          lastmod: '2022-12-27T03:01:05-05:00'
          url: https://onescales.com/pages/contact
        - changefreq: weekly
          lastmod: '2025-09-29T21:38:56-04:00'
          url: https://onescales.com/pages/about
    URLEntry:
      properties:
        url:
          type: string
          title: Url
          description: The full web address of the page
        lastmod:
          anyOf:
          - type: string
          - type: 'null'
          title: Lastmod
          description: When this page was last updated, as reported by the sitemap
        changefreq:
          anyOf:
          - type: string
          - type: 'null'
          title: Changefreq
          description: 'How often this page is expected to change, for example: weekly or monthly'
        priority:
          anyOf:
          - type: string
          - type: 'null'
          title: Priority
          description: The relative importance of this page compared to others on the site, from 0.0 to 1.0
      type: object
      required:
      - url
      title: URLEntry
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
  securitySchemes:
    siwx:
      type: apiKey
      in: header
      name: SIGN-IN-WITH-X
      description: CAIP-122 wallet signature for repeat access after payment
servers:
- url: https://sitemap-url-extractor.underscoredone.com
  description: Production
tags:
- name: sitemap
- name: sitemap parser
- name: extract sitemap urls
- name: parse sitemap
- name: sitemap.xml
- name: sitemap crawler
- name: url extraction
- name: sitemap index
- name: crawl sitemap
- name: website urls
- name: sitemap reader
- name: seo crawl
- name: url discovery
- name: list site urls
x402Version: 2
x-payment-accepts:
- scheme: exact
  network: eip155:8453
  payTo: '0xE9740820225B3918b4ddd1292C7cA4Ca0e2C2F08'
  asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
- scheme: exact
  network: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
  payTo: 8ugAWAXDB8V18kiUrGZTq1oMvU3C6Fxs8hfC6rvzQT3b
  asset: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v