Sitemap Extractor — Get All Website URLs from sitemap.xml
Pricing
from $0.25 / 1,000 url extracteds
Sitemap Extractor — Get All Website URLs from sitemap.xml
Sitemap extractor & sitemap.xml parser: get all URLs of any website. Auto-finds sitemaps via robots.txt, follows nested indexes and .gz, returns lastmod, images, hreflang, news/video data, optional status check. CSV/JSON/Excel or API. $0.50 per 1,000 URLs.
Pricing
from $0.25 / 1,000 url extracteds
Rating
0.0
(0)
Developer
Plumbline Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
Sitemap URL Extractor & sitemap.xml parser — get every URL of a website
What does Sitemap URL Extractor do?
Sitemap URL Extractor gives you every URL a website publishes in its sitemaps — as a clean table you can download as CSV, Excel or JSON, or pull via API. Enter a homepage like https://example.com and the Actor finds the sitemaps for you: it reads robots.txt, checks the usual locations (/sitemap.xml, /sitemap_index.xml, /wp-sitemap.xml, .gz files…), follows nested sitemap indexes, and returns one row per page with lastmod, changefreq, priority, images, hreflang alternates, Google News and video data.
It's built to just work on messy real-world sitemaps: gzip, plain-text sitemaps, RSS/Atom feeds, broken XML, sitemaps that return an HTML 404 page, rate-limited servers. When something goes wrong you get a clear error row that you are never charged for.
Try it: paste a website into Websites or sitemap URLs and click Start.
Why use this sitemap scraper?
- 🔎 Auto-discovery — robots.txt
Sitemap:lines + common paths; no need to know where the sitemap lives - 🪆 Nested sitemap indexes — Shopify, WordPress/Yoast, Next.js, news sites with hundreds of child sitemaps
- 🗜️ Every format — XML,
.xml.gz,sitemap.txt, RSS 2.0 and Atom feeds - 🖼️ Extensions — image URLs, hreflang language alternates, Google News title/date, video metadata
- 🎯 Filters — include/exclude regex, only URLs modified since a date, max URLs per site, path scoping (
https://example.com/blog/→ only/blog/URLs) - ✅ Optional status check — HTTP status code, redirects and final URL for each page (robots.txt-aware)
- 💸 Error rows are free — "no sitemap found", 404s and blocked sitemaps are reported but not charged
- 🤝 Polite by default — identifies itself, respects robots.txt for probes and checks, slows down automatically on 429/503
Who uses it?
- SEO specialists — audit indexable pages, find orphaned or redirected URLs, compare sitemaps before/after a migration
- AI / RAG builders — get a complete URL list to feed into a crawler or Website Content Crawler instead of crawling blind
- Competitive intelligence — monitor competitors' new product, blog or landing pages daily with Only URLs modified since
- E-commerce teams — list every product URL of a Shopify/WooCommerce store, with product images
- Content teams — export a full content inventory with last-modified dates
How to extract all URLs from a website's sitemap
- Open the Actor and add one or more websites (or direct sitemap URLs) to Websites or sitemap URLs.
- Optional: add Include only URLs matching, e.g.
/blog/, or set Only URLs modified since. - Optional: turn on Check HTTP status of each URL for an SEO health check.
- Click Start and download your data as CSV, JSON, Excel, or connect it via API, Make, Zapier or Google Sheets.
- Schedule it (daily/weekly) in Apify to monitor new pages automatically.
Input example
{"startUrls": [{ "url": "https://www.allbirds.com" },{ "url": "https://wordpress.org/news/" },{ "url": "https://docs.apify.com/sitemap.xml" }],"includeUrlPatterns": ["/products/"],"lastmodFrom": "2026-09-01","maxUrlsPerSite": 0,"checkStatus": false}
Output example
{"url": "https://www.allbirds.com/products/mens-wool-runners","site": "https://www.allbirds.com","domain": "www.allbirds.com","lastmod": "2026-10-06T09:52:08-07:00","changefreq": "daily","priority": null,"sourceSitemap": "https://www.allbirds.com/sitemap_products_1.xml?from=1878193471557&to=7369944137808","sitemapType": "urlset","foundVia": "sitemap-index","sitemapDepth": 1,"images": ["https://cdn.shopify.com/s/files/1/1104/4168/files/Allbirds_WL_RN_SF_PDP_Natural_Grey_LAT.png?v=1751143404"],"imageCount": 1,"alternates": [],"videos": [],"news": null}
With status check on, each row also gets statusCode, redirected, finalUrl and robotsAllowed. A per-site summary (sitemaps found/failed, URL count) is saved to the key-value store as SUMMARY.
Error rows look like this (not charged):
{ "site": "https://www.python.org", "isError": true, "error": "NO_SITEMAP_FOUND","errorMessage": "No sitemap found in robots.txt or common locations. Try passing the sitemap URL directly." }
How much does it cost to extract sitemap URLs?
This Actor uses pay per result: you pay $0.50 per 1,000 URLs extracted (plus a tiny Apify start fee of $0.00005 per run). Error rows are free. Examples:
| Job | URLs | Cost |
|---|---|---|
| Small business site | 300 | ~$0.15 |
| Shopify store (products, collections, blog) | 2,500 | ~$1.25 |
News site, last 30 days only (lastmodFrom) | 5,000 | ~$2.50 |
| Large site, full inventory | 100,000 | ~$50 |
Apify's free plan includes monthly credits, so you can try it at no cost. Set Maximum cost per run in the run options and the Actor stops cleanly when it's reached.
Tips
- Big sites: use Include only URLs matching or Only URLs modified since to get just what you need (and pay less).
- Sub-sections: enter
https://example.com/blog/to get only blog URLs. - Monitoring: schedule a daily run with Only URLs modified since set to yesterday's date via the API, or compare datasets between runs.
- Feeding a crawler: use the dataset as start URLs for Website Content Crawler or your own scraper.
Use it via API (Python, JavaScript, Make, Zapier, n8n)
Run the Actor and get results in one HTTP call (replace YOUR_TOKEN with your Apify API token):
curl -X POST "https://api.apify.com/v2/acts/plumbline-data~sitemap-url-extractor/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls":[{"url":"https://docs.apify.com"}],"maxUrlsPerSite":1000}'
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("plumbline-data/sitemap-url-extractor").call(run_input={"startUrls":[{"url":"https://docs.apify.com"}],"maxUrlsPerSite":1000})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
You can also schedule it (e.g. daily at 7 am) in Apify Console and send results to Google Sheets, Slack, a webhook or your database with built-in integrations.
FAQ
Is it legal to scrape sitemaps?
Sitemaps are files website owners publish specifically so that crawlers can discover their pages. This Actor only reads those files (and, if you enable it, sends lightweight HEAD requests to check status codes). It honours robots.txt for probes and status checks and identifies itself with a clear User-Agent. Always make sure your downstream use of the URLs complies with the target site's terms.
The Actor says NO_SITEMAP_FOUND — what now?
Some sites have no sitemap, or keep it at an unusual path. If you know the URL, paste it directly (e.g. https://example.com/sitemaps/main.xml). You are not charged for error rows.
Why did I get HTTP_403 for a sitemap?
Some sites block automated access to their sitemaps. We don't disguise the Actor as a browser to get around blocks — you'll see a free error row instead.
Does it crawl the pages themselves?
No — it reads sitemaps only, which is why it's fast and cheap. Turn on status check for a HEAD request per URL. For page content, chain it with a content crawler.
Can I use it via API, Python or Make/Zapier?
Yes. Every Apify Actor has a REST API, Python/JS clients, webhooks and integrations with Make, Zapier, n8n, Google Sheets, Airbyte and more.
Other Actors by Plumbline Data
- RSS & Atom Feed Reader — turn site feeds into clean JSON for monitoring and automations
- Wayback Machine URLs — list archived URLs for a domain, then compare with today's sitemap
- LEI Lookup & Company Search (GLEIF) — match company names to Legal Entity Identifiers, parents and addresses
- UK Public Tenders — Find a Tender + Contracts Finder — every UK public-sector tender in one clean feed
Found a sitemap that doesn't parse? Open an issue on the Actor's Issues tab — we aim to fix parser edge cases quickly.