Skip to main content
Glama

Extract page metadata and Open Graph tags

extract_website_metadata
Read-only

Fetch URLs and return page metadata such as title, meta description, canonical URL, language, social tags, JSON-LD, favicon, RSS feeds, and hreflang for link previews, enrichment, and SEO checks.

Instructions

Fetch a list of URLs (plain HTTP, no browser) and return each page's title, meta description, canonical URL, language, Open Graph and Twitter card tags, schema.org JSON-LD, favicon, RSS feeds and hreflang links. Use it for link previews, enrichment or quick SEO checks of specific pages. Failed URLs come back as free error rows. Cost, charged to your own Apify account: $0.001 per URL processed; $0.00005 per Actor start (per GB of memory, once per run). Each call is capped at maxCostUsd (default $0.25). Runs Apify Actor fecklesspleb/website-metadata-extractor (https://apify.com/fecklesspleb/website-metadata-extractor).

Input Schema

NameRequiredDescriptionDefault
urlsYesURLs. Pages to read, one row per URL, e.g. ["https://www.python.org/", "https://books.toscrape.com/"]. Plain URL strings or {"url": "..."} objects; duplicates are removed and a URL without http(s):// gets https:// added. Only the given URLs are fetched (no crawling); robots.txt is obeyed. Default ["https://www.python.org/"] alone is a sample run that stops after 15 s.
maxCostUsdNoMost this call may charge your Apify account, in US dollars. Default 0.25, maximum 5. Passed to Apify as maxTotalChargeUsd, the most Apify will charge for this run.
maxResultsNoMax results. Maximum rows saved in the run. Default 0 = no cap. Free rows for failed URLs also count. Each row with metadata costs $0.001.
includeJsonLdNoInclude JSON-LD data. If true (default), each row includes jsonLd: the parsed schema.org JSON-LD blocks, with email, telephone, author, creator, contributor, editor and reviewedBy keys removed. Set false for smaller rows; jsonLdTypes and jsonLdErrors are always included.
maxConcurrencyNoMax concurrency. URLs fetched in parallel, 1 to 30. Default 10. Requests to the same host are spaced at least 0.5 s apart (longer if robots.txt sets a crawl delay).
includeFailedUrlsNoInclude failed URLs. Add a row with the error for URLs that fail (HTTP 400 or higher, not an HTML page, DNS or connection errors, timeouts, robots.txt blocks). These rows are free. Turn off to skip them.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/openWorld/destructive annotations: it discloses the no-browser fetch method, robots.txt obedience, that failed URLs surface as free error rows, the exact pricing model ($0.001/URL, $0.00005 per Actor start) charged to the caller's Apify account, the default $0.25 cap, and the backing Actor. For a billed, external-network tool this is the information an agent needs before invoking.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with capability and return fields, then usage, then cost — a sensible priority order. It is dense and mostly earns its length, though the trailing Actor URL and the repeated default-charge figure are slightly redundant against the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description explicitly enumerates the returned fields and the error-row behavior, so an agent knows what it gets back. Combined with pricing, cost ceiling, and failure handling, nothing material is missing for a six-parameter billed extraction tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all six parameters are already documented in the schema; the description's only parameter-touching sentence restates the maxCostUsd cap and default without adding new semantics. Baseline 3 applies since the schema does the parameter work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Fetch a list of URLs") plus the exact return payload (title, meta description, canonical, language, OG/Twitter tags, JSON-LD, favicon, RSS, hreflang), and scopes it as plain HTTP with no browser. That is enough to separate it from seo_audit_website (broader audit) and extract_sitemap_urls (discovery) without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete use cases — "link previews, enrichment or quick SEO checks of specific pages" — and the inline note that only supplied URLs are fetched (no crawling). It does not name a sibling alternative or state when to prefer seo_audit_website instead, so the routing guidance stops at clear context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.