Sitemap URL Extractor & Broken Link Checker avatar

Sitemap URL Extractor & Broken Link Checker

Pricing

$0.08 / 1,000 page urls

Go to Apify Store
Sitemap URL Extractor & Broken Link Checker

Sitemap URL Extractor & Broken Link Checker

Sitemap URL extractor for public sites. Export URLs and lastmod values as JSON with robots.txt discovery; optionally include HTTP status, redirects and request errors.

Pricing

$0.08 / 1,000 page urls

Rating

0.0

(0)

Developer

Grit

Grit

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

Sitemap links scraper returns page URLs and lastmod values from public sitemaps and robots.txt discovery. Sitemap links API results can also include HTTP status, redirect, and request error details when status checking is enabled.

Input example

{
"startUrls": [
"https://www.sitemaps.org/"
],
"checkStatus": false,
"maxItems": 20
}

The input keys and allowed values follow .actor/input_schema.json.

Output fields

FieldTypeIllustrative example
rowTypestring"url"
urlstring"https://www.sitemaps.org/protocol.html"
lastmodstring"2022-12-15"
sitemapUrlstring"https://www.sitemaps.org/sitemap.xml"
inputUrlstring"https://www.sitemaps.org/"
checkStatusstring"not_checked"
statusCodeinteger or nullnull
isBrokenboolean or nullnull
finalUrlstring or nullnull
redirectChainarray[]
requestMethodstring or nullnull
headStatusCodeinteger or nullnull
responseTimeMsnumber or nullnull
checkedAtstring or nullnull
errorsarray[]

Output example

No sample_output.json is present in this actor folder. The following illustrative row is preserved from the previous README and is not a recorded actor run.

{
"rowType": "url",
"url": "https://www.sitemaps.org/protocol.html",
"lastmod": "2022-12-15",
"sitemapUrl": "https://www.sitemaps.org/sitemap.xml",
"inputUrl": "https://www.sitemaps.org/",
"checkStatus": "not_checked",
"statusCode": null
}

Limits

SettingDefaultAccepted range
maxItems (all output rows)10001–100000
concurrency101–50
requestTimeoutSecs (each network operation)201–120
maxRetries (extra attempts per hop)20–5
maxSitemaps (global sitemap fetches)10001–10000
maxDepth (initial source = zero)100–50
maxRedirects (followed hops)100–30

A sitemap document is limited to 10 MiB before and after gzip decompression. Larger files, DTD/entity declarations, malformed XML, private IP targets and non-HTTP URLs are rejected. robots.txt requests are additional to maxSitemaps. maxItems includes free diagnostics; errors can therefore reduce the number of extracted URLs. At most 1000 starting URLs are accepted.

Retrievable sitemap entries determine coverage. Pages omitted from sitemaps are not discovered. The actor does not create sitemaps, crawl HTML links, render JavaScript, authenticate, solve CAPTCHAs or verify content-level soft 404s. robots.txt Sitemap directives are used for discovery; Disallow rules are not evaluated for page checks. Use it on sites you are authorized to check.

FAQ

What are the output limits? maxItems caps extracted URLs and diagnostics. The actor rejects malformed, oversized, non-public or non-HTTP sitemap targets.

Do I need a proxy or login? Public sitemaps need no login or proxy. Private network targets are rejected.

How is this priced? Proposed pay per event: $0.00008 per unique extracted url row, including one with a failed optional status check. Discovery diagnostics and duplicates are uncharged. These are proposals in PRICING.md; the owner must configure Store billing.

How are rate limits handled? concurrency limits HTTP requests; selected transient failures are retried with backoff and Retry-After.

How fresh is the data? Sitemaps contain only URLs the publisher exposes; this actor does not crawl page links or render JavaScript. lastmod is the publisher’s value, not an independently verified update date. Check only sites you are authorized to query.

Use with AI agents / MCP

After the actor is published, connect your agent to the Apify MCP server with an Apify API token. Use call-actor with the published actor identifier and the JSON input shown above. Read the returned dataset with get-dataset-items; the run response itself contains status and storage IDs, not the result rows. Alternatively, use the Apify API to start a run and read its default dataset. Keep the actor input bounded with maxItems, and inspect source links and any error fields before using results in an answer.