ultimate-sitemap-parser
A performant library for parsing and crawling sitemaps
What it is and what it does
Ultimate Sitemap Parser is a Python library that discovers and parses sitemaps in all common formats—XML, RSS, Atom, plain text, and Google News/Image variants—and extracts URLs into an object tree. It handles malformed sitemaps gracefully, discovers sitemaps linked from robots.txt, and uses memory-efficient Expat XML parsing to avoid loading entire hierarchies into memory at once.
The library is designed for web crawlers and indexing workflows. You give it a homepage URL, and it returns a tree of sitemap objects you can iterate over to get all discovered pages. It has been field-tested with approximately 1 million URLs as part of the Media Cloud project and depends only on python-dateutil and requests, making installation straightforward on any modern Python environment.
Use it for:
- Discover all pages on a website by parsing its sitemap hierarchy for web crawling or SEO audits.
- Extract URLs from Google News or Image sitemaps for specialized content indexing.
- Build a site map inventory by recursively following nested sitemap references.
- Integrate sitemap discovery into a web scraper to respect site structure and robots.txt directives.
- Analyze sitemap coverage to identify missing or orphaned pages in a website.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Parses and crawls sitemaps in multiple formats (XML, RSS, Atom, plain text, Google News/Image) and extracts URLs efficiently without loading entire trees into memory.
Yes. The library is actively maintained, has low install friction, no known vulnerabilities, and solves a specific problem well—parsing diverse sitemap formats reliably. The copyleft GPL-3.0-or-later license is the main constraint: use it freely in open-source projects, but review licensing implications before bundling into proprietary software.
Install
ultimate-sitemap-parser on PyPI
pip
pip install ultimate-sitemap-parseruv
uv add ultimate-sitemap-parserpoetry
poetry add ultimate-sitemap-parserInstalling ultimate-sitemap-parser
Before you install
Low friction: pure Python wheel with only two stable runtime dependencies (python-dateutil and requests). Actively maintained as of 2026-06-16 with 256 repository stars.
License in practice
GPL-3.0-or-later (copyleft): you must license any derivative work or bundled application under compatible terms; suitable for open-source projects but requires legal review before use in proprietary software.
Quickstart
pip install ultimate-sitemap-parser
from ultimate_sitemap_parser.tree import sitemap_tree_for_homepage
tree = sitemap_tree_for_homepage('https://www.example.org/')
for page in tree.all_pages():
print(page.url)
Requires Python 3.10 or later; network access to fetch sitemaps from target URLs.
Verify before relying
- Whether the library handles redirects or authentication when fetching sitemaps from protected URLs.
- Memory consumption profile on very large sitemap hierarchies beyond the ~1 million URLs mentioned in testing.
- Whether custom web client support extends to proxy configuration or certificate handling.
Package facts
| License | GPL-3.0-or-later (copyleft) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 2 — python-dateutil, requests |
| Maintenance | actively maintained — 59 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 198,401/month — #9,731 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: ultimate_sitemap_parser-1.8.1-py3-none-any.whl
Keywords: sitemap, crawler, indexing, xml, rss, atom, google news
Tags
More XML packages
Beautiful Soup parses HTML and XML documents…
permissive · top 100 on PyPI
lxmllxml provides Python bindings to libxml2 and…
permissive · top 1,000 on PyPI
defusedxmlDefusedxml hardens Python's standard XML…
permissive · top 1,000 on PyPI
docutilsDocutils converts plaintext documentation in…
unclear · top 1,000 on PyPI
xmltodictConverts XML to Python dictionaries and back,…
permissive · top 1,000 on PyPI
SphinxSphinx generates professional documentation…
permissive · top 1,000 on PyPI
sphinx-sitemapGenerates sitemaps.org-compliant XML sitemaps…
permissive · top 15,000 on PyPI
googlenewsdecoderDecodes Google News redirect URLs to their…
permissive · top 15,000 on PyPI
feedparserParses Atom and RSS feeds (including RSS 0.9x,…
permissive · top 5,000 on PyPI
ProtegoProtego parses robots.txt files and determines…
permissive · top 1,000 on PyPI
feedfinder2Feedfinder2 detects and returns feed URLs (RSS,…
permissive · top 15,000 on PyPI
courlanValidates, normalizes, filters, and samples…
permissive · top 5,000 on PyPI
feedgenGenerates web feeds in ATOM and RSS formats,…
copyleft · top 15,000 on PyPI
readable-contentExtracts the main article content from web…
permissive · top 15,000 on PyPI
Crawl4AICrawl4AI is an async web crawler and scraper…
permissive · top 5,000 on PyPI
gnewsGNews searches Google News RSS feeds and…
permissive · top 15,000 on PyPI