Sitemap URL Extractor: Every Page URL of Any Domain
Pricing
$0.10 / 1,000 url harvesteds
Sitemap URL Extractor: Every Page URL of Any Domain
Type a domain and get every URL it publishes in its sitemaps, with lastmod, changefreq, priority and image/hreflang counts. Follows robots.txt, sitemap indexes and .gz files. Built by Physea Labs (Liminal). Launch Sale: 90% OFF for the first week. $0.10 per 1,000 URLs.
Pricing
$0.10 / 1,000 url harvesteds
Rating
0.0
(0)
Developer
jay casey
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Type a domain and get the full list of URLs it publishes in its sitemaps, one row per URL with last-modified date, change frequency and priority. A fast way to inventory a site before crawling, auditing or monitoring it.
🚀 Launch Sale: 90% OFF for the first week! Prices below are the regular rates; launch-week runs are billed at a tenth of them.
What can it do?
| What you get | Features |
|---|---|
| 🗺️ Every sitemap URL, deduplicated | ⚡ Pure XML parsing: thousands of URLs per second |
| 📅 lastmod, changefreq, priority per URL | 🔁 Follows robots.txt, nested sitemap indexes, .xml.gz and text sitemaps |
| 🖼️ Image, video, hreflang and Google News counts | 🎯 Glob and modified-since filters |
Who this is for
- SEO audits: compare what the sitemap promises against what is indexed
- Seeding a crawler with every product, blog or docs URL
- Monitoring competitors: new pages since last week (
modifiedSince) - Site migrations: a full URL inventory for redirect maps
What you get back
| Field | Type | What you get | Example |
|---|---|---|---|
url | string | Page URL from the sitemap | https://apify.com/about |
path | string | URL path | /about |
lastmod | string | Last modified date as published | 2026-10-01 |
changefreq | string | Declared change frequency | weekly |
priority | number | Declared priority 0-1 | 0.8 |
image_count | integer | entries | 2 |
hreflang_alternates | integer | Language alternates | 0 |
sitemap_url | string | Sitemap file it came from | https://apify.com/sitemap/pages.xml |
status | string | ok or error | ok |
Every run also writes RUN_SUMMARY.json to the key-value store (counts, spend-limit flag, pricing).
What you need to provide
| Field | Type | What it does | Example |
|---|---|---|---|
domains | array | One domain or homepage per line. We read robots.txt for its sitemaps and fall back to /sitemap.xml. | ["apify.com"] |
sitemapUrls | array | Direct links to sitemap.xml, sitemap index or .xml.gz files, if you already know them. | - |
maxUrls | integer | Stop after this many unique URLs. | 200 |
maxSitemaps | integer | Safety cap on how many sitemap files to read. | 50 |
includeGlobs | array | Glob patterns, e.g. https://apify.com/blog/* | - |
excludeGlobs | array | Glob patterns, e.g. /tag/ | - |
modifiedSince | string | Only keep URLs whose sitemap lastmod is on or after this date. | - |
Quick start
- Click Try for free.
- Press Start: the sample input finishes in under a minute with no API keys or setup.
- Replace the sample with your own values and run again.
- Open the dataset, or export it as JSON, CSV or Excel.
Pricing
🚀 Launch Sale: 90% OFF for the first week!
url-harvested: $0.0001 per unique URL ($0.10 per 1,000 URLs).- Duplicates and URLs removed by your filters are not charged.
- Set a max cost per run in the run options and the run stops cleanly when it hits it.
- Normal Apify platform usage applies.
Limits and honest notes
- Only URLs the site lists in its sitemaps are returned; this actor does not crawl links. Use our Website to Markdown Crawler for that.
- Sites without a sitemap return one
errorrow (not charged). - lastmod, changefreq and priority are whatever the site declares; many sites leave them empty.
- No other Apify actor is called: everything is collected in-house over plain HTTP.
Run it from code
Same input as the Console sample:
{"domains": ["apify.com"],"maxUrls": 200}
curl -X POST "https://api.apify.com/v2/acts/physealabs~sitemap-url-harvester/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" -d @input.json
from apify_client import ApifyClientitems = ApifyClient("YOUR_APIFY_TOKEN").actor("physealabs/sitemap-url-harvester").call(run_input={"domains": ["apify.com"], "maxUrls": 200})
It also works from Zapier, Make, n8n and Apify schedules.
About Physea Labs · Liminal
Built and maintained by Physea Labs: the same extraction layer that feeds Liminal, our grounded research and decision engine. If it is good enough to feed Liminal's citations, it is good enough for your pipeline.