{"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.","x-pricing":{"model":"pay-per-call","currency":"USDC","network":"Base 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":"parsing","x-provider-url":"https://underscoredone.com","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"}},"paths":{"/extract":{"post":{"tags":["Parsing"],"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"},"examples":{"typical":{"summary":"Typical input","value":{"sitemap_url":"https://onescales.com/sitemap.xml"}},"zero_or_empty":{"summary":"Zero or empty input","value":{"sitemap_url":""}},"negative_or_invalid":{"summary":"Invalid input (400 error)","value":{"sitemap_url":"not-a-real-url"}},"large":{"summary":"Large input","value":{"sitemap_url":"https://www.nytimes.com/sitemaps/sitemap_index.xml"}}}}},"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}]}}}}}},"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 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"}]}