Sitemap URL Extractor: the full URL list of any site avatar

Sitemap URL Extractor: the full URL list of any site

Pricing

$0.50 / 1,000 listed urls

Go to Apify Store
Sitemap URL Extractor: the full URL list of any site

Sitemap URL Extractor: the full URL list of any site

Enter a hostname, get one row per URL with lastmod, priority and changefreq. Reads gzip too. Pay 0.005 USD per 1,000 URLs, nothing for duplicates.

Pricing

$0.50 / 1,000 listed urls

Rating

0.0

(0)

Developer

BEPO Labs

BEPO Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Share

๐Ÿ—บ๏ธ What is Sitemap URL Extractor?

This extractor takes a domain, finds every sitemap, opens each nested one, unzips archives and parses text. You get one clean set of URLs the owner published; only those documents are fetched, never the content itself, so a huge job costs little.

  • SEO audits: get the full list of indexable URLs to check status codes, titles, canonicals or internal links
  • Crawl planning: hand the exact URL list to a scraper instead of walking the whole site
  • Content monitoring: schedule a daily run with modifiedSince and see which pages a competitor added or changed
  • Site migrations: export every old URL before a relaunch and build the redirect map from it
  • AI and RAG pipelines: pick the docs or blog URLs of a site and pass them to a Markdown converter for your LLM

Sitemap URL Extractor: Every URL of a website from its sitemaps, in one deduplicated list with lastmod, changefreq and priority.

โœจ Why use this Actor?

  • โœ… A domain is enough: the Actor reads the Sitemap: lines of robots.txt, else tries /sitemap.xml and /sitemap_index.xml
  • โœ… Every sitemap format: sitemap indexes to any depth, gzip files, plain-text sitemaps, namespaced tags, CDATA and entities
  • โœ… No duplicates: a URL in several sitemaps is saved once, keeps its latest lastmod and records how often it appeared
  • โœ… Filters built in: include or exclude URLs by regular expression, keep only URLs changed since a date, same host only
  • โœ… Polite by design: one request per sitemap file, its own user agent, and sitemaps the site's robots.txt disallows are not fetched
  • โœ… Very cheap: 0.005 USD per 1,000 URLs; duplicates, filtered URLs and failed sitemaps cost nothing

๐Ÿ“ฆ What data can you get with Sitemap URL Extractor?

๐Ÿ”— URL๐Ÿ“… Last modified (lastmod, ISO)๐Ÿ” Change frequency
โญ Priority๐Ÿ—บ๏ธ Sitemap it was found in๐ŸŒ Host
๐Ÿ‘ฏ Duplicate count๐Ÿ“‹ Run summary: every sitemap read, its type and URL countโš ๏ธ Failed sitemaps with the reason

Sites publish lastmod, changefreq and priority as they like: when a site leaves one out, the field is null. The Actor never guesses a date.

๐Ÿš€ How to use Sitemap URL Extractor

Sitemap URL Extractor works in a few clicks, no coding needed:

  1. Create a free Apify account (the free plan includes 5 USD of monthly credit).
  2. Open Sitemap URL Extractor and click Try for free.
  3. Enter one or more domains, sitemap URLs or robots.txt URLs. Optionally set a URL pattern, a date in modifiedSince or a URL limit.
  4. Click Start and wait for the run to finish (most runs take seconds).
  5. Download your data as JSON, CSV, Excel, XML or HTML, or send it straight to Google Sheets, Make, Zapier or your AI agent.

How Sitemap URL Extractor works

โฌ‡๏ธ Input

Add up to 100 domains, pages, sitemap URLs or robots.txt URLs. Everything else is optional.

Which start?

A domain or any page of the site (example.com) starts from the standard crawler rules. A sitemap URL (index, .xml, .xml.gz or .txt) is read directly. A robots.txt URL reads every sitemap it lists.

Only some URLs

includePattern and excludePattern are case-insensitive regular expressions, for example /blog/ or \?|/tag/. modifiedSince (YYYY-MM-DD) keeps only URLs with a lastmod on or after that day.

Big sites

The run stops at maxUrls unique URLs (10,000 unless changed, up to 1,000,000) or after maxSitemaps sitemap files (500 by default). The run summary says when a limit was hit.

FieldTypeWhat it doesDefault
Domains, sitemaps or robots.txt (startUrls)arrayA domain (example.com) or any page of the site: its robots.txt Sitemap lines are read, else /sitemap.xml and /sitemap_index.xml are tried.["apify.com"]
Max URLs (maxUrls)integerStop after this many unique URLs.10000
Only URLs matching (includePattern)stringRegular expression, case-insensitive, e.g.
Skip URLs matching (excludePattern)stringRegular expression, case-insensitive, e.g.
Modified since (modifiedSince)stringOnly URLs whose lastmod is on or after this date (YYYY-MM-DD).
Same site only (sameHostOnly)booleanDrop URLs on other hosts than the start or its sitemap (www.true
Max sitemaps (maxSitemaps)integerStop after reading this many sitemap files (indexes included).500
Retries (maxRetries)integerRetries per sitemap on timeouts, 429 and 5xx.2

Sitemap URL Extractor input form

Input example

{
"startUrls": [
"https://developer.mozilla.org/sitemaps/en-us/sitemap.xml.gz"
],
"modifiedSince": "2026-01-01",
"maxUrls": 300
}

โฌ†๏ธ Output

Every unique URL becomes one row. The run summary in the key-value store (OUTPUT) lists every sitemap that was read, with its type (index, urlset or text), the URLs it held and the error if it failed, plus how many URLs were filtered out.

Sitemap URL Extractor output table

Output example

One row of the dataset (local run on MDN's gzip sitemap, 2026-10-16):

{
"url": "https://developer.mozilla.org/en-US/docs/Games/Anatomy",
"lastmod": "2026-08-21T00:00:00.000Z",
"changefreq": null,
"priority": null,
"sitemap": "https://developer.mozilla.org/sitemaps/en-us/sitemap.xml.gz",
"host": "developer.mozilla.org",
"duplicates": 0
}

Run summary (OUTPUT)

The key-value store record OUTPUT of a real run on nodejs.org/robots.txt with includePattern /learn/ (local run, 2026-10-16): two sitemaps found through robots.txt, 89 URLs kept, 1,657 filtered out.

{
"ok": true,
"rows": 89,
"sitemapsRead": 2,
"sitemapsFailed": 0,
"filtered": 1657,
"truncated": false,
"withLastmod": 89,
"problems": [],
"sitemaps": [
{
"sitemap": "https://nodejs.org/sitemap.xml",
"from": "https://nodejs.org/robots.txt",
"type": "urlset",
"urls": 0,
"error": null
},
{
"sitemap": "https://nodejs.org/learn/sitemap.xml",
"from": "https://nodejs.org/robots.txt",
"type": "urlset",
"urls": 89,
"error": null
}
]
}

View the results as a table or JSON in the Output tab and download them as JSON, CSV, Excel, XML, HTML or RSS, all fields or only those you pick.

๐Ÿ’ฐ How much does Sitemap URL Extractor cost?

Sitemap URL Extractor is priced per event: 0.005 USD per 1,000 URLs (0.000005 USD per URL), with no monthly rental. Each unique URL saved to the dataset is billed; duplicates, filtered URLs and sitemaps that fail cost nothing.

You getYou pay
100 URLs0.0005 USD
1,000 URLs0.005 USD
10,000 URLs0.05 USD
100,000 URLs0.5 USD

๐Ÿ’ก Apify's free plan gives you 5 USD of credit every month, enough for about 1,000,000 URLs at no cost. Set a spending limit per run and the Actor stops there.

โš–๏ธ Sitemap URL Extractor vs. the alternatives

Sitemap URL ExtractorOnline sitemap viewersFull-site crawlers
Finds the sitemaps from a domainโœ… robots.txt + common pathsoften needs the sitemap URLโœ…
Sitemap indexes and .xml.gzโœ…sometimesโœ…
lastmod, changefreq, priorityโœ…โœ…rarely
Changed-since and pattern filtersโœ…โŒsome
Speed on a 100,000-page siteโœ… reads only the sitemapspage limitsvisits every page
API, schedules and MCP for AI agentsโœ…โŒโœ…

๐Ÿ”Œ Integrations, API and MCP

Connect Sitemap URL Extractor to your AI agent (MCP)

Give Claude, ChatGPT, Cursor or any MCP client direct access to Sitemap URL Extractor through the Apify MCP server. Add this URL to its settings:

https://mcp.apify.com/?actors=bepolabs/sitemap-urls

For Claude Desktop, add it under mcpServers in claude_desktop_config.json:

{
"mcpServers": {
"sitemap-urls": {
"command": "npx",
"args": [
"-y",
"@apify/actors-mcp-server",
"--actors",
"bepolabs/sitemap-urls"
],
"env": {
"APIFY_TOKEN": "<your Apify API token>"
}
}
}
}

Then ask: "List every blog URL in the sitemap of example.com that changed since the first of this month."

Run it from your code

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("bepolabs/sitemap-urls").call(run_input={"startUrls":["https://developer.mozilla.org/sitemaps/en-us/sitemap.xml.gz"],"modifiedSince":"2026-01-01","maxUrls":300})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript (npm install apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('bepolabs/sitemap-urls').call({"startUrls":["https://developer.mozilla.org/sitemaps/en-us/sitemap.xml.gz"],"modifiedSince":"2026-01-01","maxUrls":300});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

No-code integrations

Send results to Google Sheets, Slack, Airtable, HubSpot, Make, Zapier, n8n and more from the Integrations tab, start runs on a schedule, or trigger your own endpoint with a webhook when a run finishes. The Apify API gives you full control over runs and datasets.

โ“ FAQ

The site has no sitemap. What do I get?

An empty list, which costs nothing, and a run summary in OUTPUT naming each sitemap tried (robots.txt lines, /sitemap.xml, /sitemap_index.xml) and why it failed. The run fails only when no sitemap could be read at all.

Why are some lastmod values null?

The site did not publish a lastmod for that URL. The Actor never invents a date.

How do I get only new or changed pages?

Use modifiedSince (YYYY-MM-DD). URLs without a lastmod are left out then. Run it on a schedule to watch a site for changes.

Does it visit the pages?

No. It reads only robots.txt and the sitemap files, one request per file. To get the text of the pages, pass the URLs to Website to Markdown.

The run stopped at 10,000 URLs.

That is the default maxUrls. Increase it (up to 1,000,000), or maxSitemaps for sites with many sitemap files; the summary says when a limit was hit.

Does it keep URLs on other domains?

By default only URLs on the same host as the start address or its sitemap (www. ignored). Switch off sameHostOnly to keep all of them.

Sitemaps and robots.txt are published on purpose so that crawlers can find a website's pages; reading them is exactly what they are for. The Actor fetches only these documents, one call each, with its own user agent, and skips any that the rules disallow. You choose the sites and are responsible for how the list is used.

What if something is missing or does not work?

Open an issue on the Issues tab; we read each one and reply. Feature requests are welcome too.

๐Ÿ’ฌ Your feedback

Tell us what Sitemap URL Extractor should add on the Issues tab or leave a review; your notes decide what we work on next.

ActorWhat it does
๐Ÿ”— Broken Link CheckerEvery link and image on your pages checked: HTTP status, each redirect hop, final URL and response time.
๐Ÿฉบ SEO AuditAny page to a 0 to 100 SEO score and grade, with the fixes that matter most first: on-page, links and Core Web Vitals.
๐Ÿ•ฐ๏ธ Wayback Machine ScraperThe archive history of any URL or domain: first and last seen, every capture, and the page text of old versions.
โšก Bulk PageSpeed InsightsLighthouse scores, lab metrics and real-user Core Web Vitals for any list of URLs, on mobile, desktop or both.
๐Ÿ“ Website to MarkdownAny web page or docs site to clean Markdown for LLMs, RAG and AI agents, with headings, links and ready-made chunks.
๐Ÿ“ธ Website ScreenshotFull-page PNG, JPEG or PDF of any URL, on desktop, tablet and phone, with cookie banners closed.
๐ŸŒ Domain RDAP and DNSDomains to registrar, creation and expiry dates, age, status, nameservers, DNSSEC and DNS records from official RDAP, in bulk.
๐Ÿ“ˆ Google Trends ScraperInterest over time for up to five keywords on one 0 to 100 scale, any country or worldwide, plus top and rising related queries.