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