Skip to content
Eden Engine

Web Page Image Scraper

omnial/web-scrape-images

Fetches a single URL and returns every image asset found on the rendered page: each one's location (a linked URL or, for an inlined icon, the raw SVG markup itself), the HTML element it came from, whether it's a linked asset or inline markup, and its alt text when present. Optional deduplication collapses visually-duplicate images to their highest-resolution copy.

activeper callv1
Provider
Web & Business Data Network
Category
web_scrape
Provider price
$0.0012285 per call
Latency p50 / p95
— / —
Success rate
Verified

Provider list price; Omnial MCP charges provider cost plus a platform markup on top.

Contract

input_schema.json
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Full URL to fetch, including the http:// or https:// scheme."
    },
    "dedupe": {
      "type": "boolean",
      "default": false,
      "description": "Remove visually duplicate images: every image is loaded and perceptually hashed and only the highest-resolution copy of each duplicate group is kept. Default false."
    },
    "maxAgeMs": {
      "type": "integer",
      "default": 86400000,
      "maximum": 2592000000,
      "minimum": 0,
      "description": "Reuse a cached result younger than this many milliseconds. Default 86400000 (1 day), max 2592000000 (30 days). Set 0 to always fetch fresh."
    },
    "timeoutMS": {
      "type": "integer",
      "maximum": 300000,
      "minimum": 1000,
      "description": "Upstream timeout in milliseconds (max 300000). Context.dev aborts the call with a 408 when exceeded. Keep it below the endpoint's requestTimeoutMs so the provider answers before the platform's own budget expires."
    },
    "waitForMs": {
      "type": "integer",
      "maximum": 30000,
      "minimum": 0,
      "description": "Extra browser wait in milliseconds after page load before the content is captured (0-30000). Useful for JavaScript-heavy pages."
    }
  },
  "additionalProperties": false
}
output_schema.json
{
  "type": "object",
  "required": [
    "success",
    "url",
    "images",
    "cache_metadata"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "The URL that was scraped (echoes the request)."
    },
    "images": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "alt": {
            "type": [
              "string",
              "null"
            ],
            "description": "The image's alt text. Observed null on most images (including every linked asset seen) and a short string on at least one inline icon -- not reliably present."
          },
          "src": {
            "type": "string",
            "description": "The image's location: an absolute URL when `type` is \"url\" (a linked asset, e.g. an <img> src or favicon), or the raw inline markup (e.g. a full `<svg>...</svg>` string) when `type` is \"html\"."
          },
          "type": {
            "type": "string",
            "description": "\"url\" when `src` is a linked asset, \"html\" when `src` is inline markup."
          },
          "element": {
            "type": "string",
            "description": "The source HTML context the image was found in, e.g. \"img\", \"svg\", \"link\", \"meta\", or \"css\" (a CSS background-image), as observed across fixtures."
          }
        },
        "additionalProperties": true
      },
      "description": "Every image asset found on the page, in document order. Empty when the page has no detectable image assets (observed on example.com)."
    },
    "success": {
      "type": "boolean",
      "description": "Whether the scrape completed successfully."
    },
    "cache_metadata": {
      "type": "object",
      "properties": {
        "age_ms": {
          "type": "number",
          "description": "Age of the cached result in milliseconds. 0 on a fresh (miss) fetch."
        },
        "status": {
          "type": "string",
          "description": "\"miss\" or \"hit\", both observed across the two kept fixtures."
        }
      },
      "description": "Whether this result was served from cache and, if so, how old it is.",
      "additionalProperties": true
    }
  },
  "description": "The scrape result, narrowed to routing.responseResultPath ($.output).",
  "additionalProperties": true
}

Pricing

Every real charge, itemised. A model that quietly omits one is a slow financial leak, so nothing here is rolled up, and a charge that only applies to some inputs says so rather than being added in.

Prices in this catalog are the provider's own list price, not your bill: Omnial MCP charges provider cost plus a platform markup on top, so what you are charged is higher than the figure shown. For the exact amount a specific call will cost, run omnial_execute with dry_run: true; that number includes the markup and is what we hold while the call runs. It is a quote, not a cap on the charge.

ChargeRate
Per call
Flat, regardless of what comes back
$0.0012285
Cost basis
Not recorded

This tool's catalog entry does not record how its final bill is determined, so we will not tell you whether its cost is fixed before the call or reported by the provider afterwards. Either way what is held is a quote rather than a cap: you are charged what the call actually costs, bounded at 2x the quote.

Updated
Sep 8, 2026