Sitemap Image Extractor
Pricing
Pay per usage
Sitemap Image Extractor
Parse any public sitemap.xml (or sitemap index) and extract every <image:image> extension entry. Emits one row per (URL, image) with loc, title, caption, geo_location, license.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Nikita S
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Sitemap Image Extractor (image:image namespace)
Parse any public sitemap.xml (or sitemap index) and emit one dataset row per <image:image> extension entry with loc, title, caption, geo_location, license. Sitemap-index BFS-followed up to maxSitemaps (default 25, max 100). Pairs with the public sitemap-delta-monitor and sitemap-lastmod-window Actors.
- Inputs:
sitemapUrl(public sitemap URL) orxmlText(inline sitemap XML),maxSitemaps(BFS cap, default 25, max 100),timeoutSec(per-fetch, default 20, max 120). - Per-row output:
_kind: "image"— one row per<image:image>block found, withpageUrl,image(the image's ownloc),title,caption,geoLocation,license, andsourceSitemap.
- Output (
SUMMARY):ok,sitemapsFetched,urlsScanned,imagesFound,totalRows.
Quick start
apify call stellar_ballet_0bu/sitemap-image-extractor -i '{"sitemapUrl": "https://www.google.com/sitemap.xml","maxSitemaps": 5}'
The default dataset will have one item per <image:image> entry found across the sitemaps. SUMMARY.imagesFound returns the total image count.
Inputs
sitemapUrl— public URL of asitemap.xmlor sitemap index. Used only ifxmlTextis empty.xmlText— inline sitemap XML string. Useful for offline test fixtures and crawlers that have the XML in hand.maxSitemaps— BFS cap on how many child sitemaps to follow from a sitemap index. Default 25, max 100.timeoutSec— per-fetch timeout in seconds. Default 20, max 120.
Use cases
- Image SEO audit: count and surface every image declared in a publisher's sitemap (Google Image Search, Bing Image Search).
- Content migration QA: confirm the new site still declares the same set of image URLs as the old site.
- Asset license compliance: pull the
licensefield for every image declared in the sitemap. - News/publisher inventory: build a CSV/JSON view of all images the publisher has indexed in their sitemap.
- RAG image indexing: produce a clean list of image URLs for downstream image-to-text or visual embedding pipelines.
API notes
- Pure XML parser + simple HTTP fetcher. No browser, no JS execution, no anti-bot circumvention. Public URLs only.
- Sitemap-index BFS: if the root sitemap is an index, the Actor fetches up to
maxSitemapschild sitemaps and merges their<image:image>entries into the same output stream. - Attribute namespace is handled —
<image:image>with thexmlns:image="http://www.google.com/schemas/sitemap-image/1.1"namespace is the standard. - Both
xmlTextandsitemapUrlwork; if both are set,xmlTextwins. - XML entities (
&,<, etc.) are decoded. - Fetch failures are recorded as
_kind: "image"rows witherror: "fetch failed: ..."and anullimage — these are NOT counted inimagesFound.
Pricing (Pay per event)
| Event | Description | USD |
|---|---|---|
apify-actor-start | Built-in start charge, per Apify platform usage | per pricing tier |
image_extracted | One charge per <image:image> block actually emitted. Fetch-error rows and zero-image sitemaps cost nothing. | $0.0001 |
currentPricingInfo activates on 2026-07-22T00:00:00Z. The Actor's code calls Actor.charge({ eventName: 'image_extracted', count: imagesFound }) only for actually-emitted image rows.
Cost expectations
A typical news publisher's sitemap with 50k URLs and 30k image entries will cost roughly $3 of usage credits on top of the standard start charge. Use maxSitemaps to cap the BFS depth if you only need a sample.
FAQ
Does it follow robots.txt? No — the Actor is a sitemap parser, not a crawler. It will fetch whatever URL you give it, up to maxSitemaps children. Use maxSitemaps to scope BFS for large publisher sites.
What about <image:thumbnail> or other image extensions? Only the image:image namespace is supported (the Google/Bing sitemap-image extension). Other extensions are ignored.
Does it work with robots.txt-discovered sitemaps? Pass the sitemap URL directly. If you have multiple sitemaps, run the Actor N times or chain via a wrapper.
Why are some rows missing title/caption/license? Those are optional fields in the spec. The Actor emits null for missing fields, never synthesised values.
What happens with non-XML responses? The parser will produce zero image rows and log a parse failed: ... row. Check SUMMARY.urlsScanned — if it's 0, the URL probably wasn't a sitemap.
Can I get a JSON list of unique image URLs only? No — the Actor emits one row per (URL, image) pair. Run the dataset through csv-dedupe-normalizer to dedupe by the image column.
Limits
- BFS capped at
maxSitemaps(default 25, max 100). For very large publishers with thousands of child sitemaps, run multiple invocations. - Per-fetch
timeoutSec(default 20, max 120) — long-running fetches will be aborted. - XML only — sitemap.txt, RSS, Atom, RDF are not supported.
Related Actors
sitemap-delta-monitor(public) — sitemap URL deltas, before/after, lastmod changessitemap-lastmod-window— filter any sitemap by<lastmod>date windowsitemap-news-sitemap-extractor— Google News sitemap parser (<news:news>namespace)sitemap-priority-changefreq-analyzer—<priority>and<changefreq>distribution analysisrobots-sitemap-feed-discovery— discover sitemaps and feeds fromrobots.txtproduct-feed-delta-monitor— for product/feed deltas, not sitemaps
Support
- Source: hidden (paid Actor pattern; not exposed by default).
- Issues / feature requests: open a thread on the public Apify Store Actor page (button on the right of the Store listing) or message the maintainer through the Apify Console.
- For paid-pilot bulk runs (large publisher audits, scheduled re-runs, custom output formats), contact the maintainer via the Apify Console.
License
MIT-style Apify Actor Source-Available License. You may use the public Actor output and integrate the public results; you may not re-host the Actor source or re-publish it as a competing Actor.