Website Metadata & SEO Tag Extractor
Pricing
from $1.40 / 1,000 page results
Website Metadata & SEO Tag Extractor
Extract title, meta description, canonical, robots, headings, Open Graph, Twitter cards, JSON-LD structured data, hreflang, feeds and favicon from any list of URLs, with a plain list of on-page SEO issues per page. Fast, no browser.
Pricing
from $1.40 / 1,000 page results
Rating
0.0
(0)
Developer
Fleet
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Features
Share
Paste a list of page URLs and get, for each page, every tag that search engines and social networks read: title, meta description, canonical, robots and X-Robots-Tag, headings, Open Graph, Twitter card, JSON-LD structured data (schema.org types), microdata types, hreflang alternates, RSS feeds, favicon, plus word count, link and image counts, and a plain list of on-page issues (missing description, several <h1>, canonical pointing elsewhere, noindex, images without alt, invalid JSON-LD, and more).
It fetches each page once with a plain HTTP request (no browser), so it is fast and cheap: thousands of pages per run.
Use it for
- SEO audits: check titles, descriptions, canonicals and headings across a whole site (give it the URL list from a sitemap).
- Social previews: see which pages lack
og:imageor a Twitter card before a campaign. - Structured data checks: list the schema.org types (Product, Article, FAQPage, BreadcrumbList...) each page declares and catch broken JSON-LD.
- Competitor research: compare how competitors title and describe their pages.
- Link previews and enrichment: get title, description, image and favicon for any URL, e.g. for an app or an AI agent.
Input
| Field | What it does |
|---|---|
| Page URLs (required) | One per line, up to 50,000. Each page is fetched once; links are not followed. |
| Return only pages with issues | Only pages with at least one issue are returned (and charged). |
| Include full JSON-LD | Full parsed JSON-LD blocks (default) or only the list of types. |
| Respect robots.txt | Default on: pages disallowed by robots.txt are skipped, listed in RUN_SUMMARY, and not charged. |
| Timeout / parallel requests | Defaults 30 s, 10 in total, 2 per website. |
Output
One item per page that could be read. A real example from a test run (shortened: the full item also lists h2, hreflang and more):
{"url": "https://wordpress.org/plugins/","finalUrl": "https://wordpress.org/plugins/","statusCode": 200,"responseTimeMs": 1100,"title": "WordPress Plugins | WordPress.org","titleLength": 33,"metaDescription": "Choose from thousands of free plugins to build, customize, and enhance your WordPress website.","metaDescriptionLength": 94,"metaRobots": "max-image-preview:large","canonicalUrl": "https://wordpress.org/plugins/","lang": "en-US","h1": ["Plugins"],"h1Count": 1,"openGraph": {"title": "WordPress Plugins","description": "Choose from thousands of free plugins to build, customize, and enhance your WordPress website.","site_name": "WordPress.org","type": "website","url": "https://wordpress.org/plugins"},"twitterCard": {},"jsonLdTypes": ["WebSite"],"wordCount": 1028,"issues": ["Missing og:image"]}
The issues list
Issues are factual checks, not opinions: missing <title>, title over 60 or under 10 characters, missing meta description or over 160 / under 50 characters, no <h1> or more than one, no canonical or a canonical pointing to another URL, noindex in meta robots or X-Robots-Tag, no viewport tag, no lang attribute, missing og:title or og:image, images without alt, and JSON-LD blocks that are not valid JSON.
Pricing
Pay per result: $0.002 per page returned ($2 per 1,000 pages), with lower prices on Apify's Bronze, Silver and Gold plans, plus Apify's small run-start fee. Pages that cannot be read (network errors, HTTP errors, non-HTML files, robots.txt disallowed), invalid lines and duplicates are not charged; they are listed in RUN_SUMMARY with the reason. You can set a maximum cost per run; the Actor stops cleanly when it is reached.
Limits and honest notes
- The Actor reads the HTML the server sends. Pages that build their tags with JavaScript in the browser (some single-page apps) may show fewer tags here than in a browser. Search engines that do not run JavaScript see the same as this Actor.
- Some sites block requests from data centers (bot protection). Such pages are reported as not read and not charged.
Personentries in JSON-LD (author names, emails) are redacted on purpose; only{"@type": "Person", "redacted": true}is kept. No other personal data is collected.- Up to 5 MB of HTML is read per page.
- Check sites you have a legitimate reason to check; the defaults are deliberately polite.
Use it from the API, a schedule or an AI agent
API. Start a run and get the results in one call (replace YOUR_APIFY_TOKEN):
curl -X POST "https://api.apify.com/v2/acts/fleet261114~website-metadata-extractor/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"urls": ["https://www.python.org/", "https://wordpress.org/plugins/"]}'
This waits up to 5 minutes. For large lists, start a run with POST /v2/acts/fleet261114~website-metadata-extractor/runs and read its dataset when it finishes.
Whole site. Get the site's URL list with a sitemap extractor (for example Sitemap URL Extractor) and pass the URLs here.
Schedules and integrations. Save your input as a task, attach an Apify schedule (e.g. weekly), and send results to Google Sheets, Slack, Make, Zapier or n8n.
AI agents (MCP). Add the Actor as a tool in any MCP client (Claude, Cursor and others) through Apify's hosted MCP server:
https://mcp.apify.com?tools=fleet261114/website-metadata-extractor
The agent sees the input schema and field descriptions and can call the Actor directly. Set a maximum cost per run in the call options to cap spending.
FAQ
Does it crawl my whole site? No. It checks exactly the URLs you give. Feed it a sitemap's URL list to cover a site.
Why is a tag missing that I see in my browser? Your page probably adds it with JavaScript after loading. This Actor reads the server's HTML, like most crawlers that don't render JavaScript.
Why was my page "not read"? See RUN_SUMMARY: the reason is given (timeout, HTTP 403/404, not HTML, robots.txt). You are not charged for it.
What does a typical run cost? At $0.002 per page, a 500-page site costs about $1.
Questions and problems
Open an issue on the Actor's Issues tab with the run link.