Sitemap Image Extractor avatar

Sitemap Image Extractor

Pricing

Pay per usage

Go to Apify Store
Sitemap Image Extractor

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

Nikita S

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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) or xmlText (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, with pageUrl, image (the image's own loc), title, caption, geoLocation, license, and sourceSitemap.
  • 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 a sitemap.xml or sitemap index. Used only if xmlText is 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 license field 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 maxSitemaps child sitemaps and merges their <image:image> entries into the same output stream.
  • Attribute namespace is handled — <image:image> with the xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" namespace is the standard.
  • Both xmlText and sitemapUrl work; if both are set, xmlText wins.
  • XML entities (&amp;, &lt;, etc.) are decoded.
  • Fetch failures are recorded as _kind: "image" rows with error: "fetch failed: ..." and a null image — these are NOT counted in imagesFound.

Pricing (Pay per event)

EventDescriptionUSD
apify-actor-startBuilt-in start charge, per Apify platform usageper pricing tier
image_extractedOne 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.
  • sitemap-delta-monitor (public) — sitemap URL deltas, before/after, lastmod changes
  • sitemap-lastmod-window — filter any sitemap by <lastmod> date window
  • sitemap-news-sitemap-extractor — Google News sitemap parser (<news:news> namespace)
  • sitemap-priority-changefreq-analyzer<priority> and <changefreq> distribution analysis
  • robots-sitemap-feed-discovery — discover sitemaps and feeds from robots.txt
  • product-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.