Page Metadata Extractor | SEO, Open Graph & Hreflang
Pricing
$5.00 / 1,000 completed checks
Page Metadata Extractor | SEO, Open Graph & Hreflang
Extract titles, descriptions, canonical URLs, robots meta tags, Open Graph, Twitter cards, language, H1 headings and hreflang links from supplied HTML pages. Report missing and duplicate metadata for SEO audits and content pipelines.
Pricing
$5.00 / 1,000 completed checks
Rating
0.0
(0)
Developer
Austin Aryain
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Page Metadata Extractor | SEO, Open Graph & Hreflang
Extract titles, descriptions, canonical URLs, robots meta tags, Open Graph, Twitter cards, language, H1 headings and hreflang links from supplied HTML pages. Report missing and duplicate metadata for SEO audits and content pipelines.
How it works
Supply public HTML page URLs to obtain metadata suitable for a spreadsheet, CMS import, migration check or social-preview pipeline. Repeated tags remain visible instead of being silently collapsed, allowing you to identify conflicting descriptions or canonical declarations. Relative canonical and alternate link URLs are resolved against the page URL or its first valid base element. Original Open Graph and Twitter property values are preserved. The Actor reports concrete missing and duplicate tags rather than assigning a speculative SEO score.
Quick start
- Enter one or more public URLs in the Input tab, beginning with the supplied example.
- Set a maximum run charge. A completed check costs $0.005; checking 10 sources once costs $0.05.
- Start the Actor and inspect the dataset. Download JSON, CSV or Excel, or consume results through the Apify API.
- Inspect the OUTPUT run summary as well as the dataset: failed or unprocessed inputs appear there. Save the input as a task if you want to schedule future runs.
Pricing
$0.005 per completed check ($5 per 1,000), with platform usage included. There are no separate Actor-start or dataset-item fees. Empty and unchanged successful checks are charged. The maximum charge is checked before each source request and again before output. Failed network or format checks are free; see the specific HTTP-response cases below. Billing is per completed source check, not per nested array item, extracted URL, change or schema block.
Limits and interpretation
Only the original HTML response is read; JavaScript is not executed. Pages must return HTTP 200 with an HTML Content-Type and fit within 2 MB after decompression. At most 1,000 meta elements, 200 hreflang links and 200 H1 headings are returned, with truncated=true if these limits are reached. Generic robots tags are inventoried; crawler-specific tags and HTTP X-Robots-Tag are not evaluated. No links, images or scripts are fetched, and there is no cross-run history.
A run accepts 1-50 unique input URLs and requests them sequentially. Each check has an 18-second network deadline; new checks stop after 160 seconds. Use a 240-second run timeout and 512 MB memory. If the time or charge limit stops a batch, OUTPUT lists uncheckedUrls for a later run. No response exceeding the configured byte limit is accepted, and a complete record must fit within 6 MB. The Actor permits only public HTTP(S) destinations on standard ports, pins a validated DNS address per request, and refuses redirects into private networks or from HTTPS to HTTP.
The Actor uses direct HTTP requests, without a browser, residential proxy, login, CAPTCHA solving or access-control bypass. Rate limits and blocks may prevent checks. Avoid secret-bearing URLs. Results describe the source and network observed at check time.
Integrations and support
Connect the dataset and OUTPUT summary to your own n8n, Make, Zapier or API workflow. This Actor produces data; it does not automatically send email, Slack messages or webhooks to third parties. No external account credentials are needed for the supplied public examples. Report reproducible issues in the Actor Issues tab, including a non-sensitive input and run link. This is an independent utility and is not endorsed by the websites, standards bodies or services it reads.
Input example
{"urls": ["https://example.com/"]}
See the Input tab for all supported fields. Results are available through the dataset API and can be downloaded as JSON, CSV or Excel.
Output fields
| Field | Meaning |
|---|---|
| inputUrl | Normalized supplied URL. |
| checkedAt | Check time in ISO format. |
| finalUrl | Final fetched page URL. |
| httpStatus | HTTP status, 200 for completed checks. |
| titles | Title tag texts. |
| descriptions | Meta descriptions. |
| canonicalUrls | Resolved canonical link URLs. |
| robots | Generic robots meta tag values. |
| openGraph | Open Graph name/content pairs. |
| twitterCards | Twitter card name/content pairs. |
| language | HTML lang attribute. |
| h1 | H1 heading texts. |
| alternates | Language/URL pairs from hreflang links. |
| issues | Missing or multiple title/description and multiple canonical observations. |
| truncated | True when an explicitly documented element count limit was reached. |
Output example
Example from a public source check; live values vary. Long items, changes, groups and blocks arrays are shortened to two entries here for readability; the actual record contains the complete arrays within the documented limits.
{"inputUrl": "https://example.com/","checkedAt": "2026-09-07T21:05:12.433Z","finalUrl": "https://example.com/","httpStatus": 200,"titles": ["Example Domain"],"descriptions": [],"canonicalUrls": [],"robots": [],"openGraph": [],"twitterCards": [],"language": "en","h1": ["Example Domain"],"alternates": [],"issues": ["missing_description"],"truncated": false}