Sitemap Image Extractor avatar

Sitemap Image Extractor

Pricing

from $2.00 / 1,000 image extracteds

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

from $2.00 / 1,000 image extracteds

Rating

0.0

(0)

Developer

Nikita S

Nikita S

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

23 days 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.