URL Metadata API — OpenGraph, Twitter Card, JSON-LD, canonical avatar

URL Metadata API — OpenGraph, Twitter Card, JSON-LD, canonical

Pricing

from $0.80 / 1,000 url processeds

Go to Apify Store
URL Metadata API — OpenGraph, Twitter Card, JSON-LD, canonical

URL Metadata API — OpenGraph, Twitter Card, JSON-LD, canonical

Turn any list of URLs into structured page metadata JSON: title, description, canonical, OpenGraph, Twitter Card, JSON-LD types, favicon, language. HTTP-only, no login, no personal data. Pay per URL.

Pricing

from $0.80 / 1,000 url processeds

Rating

0.0

(0)

Developer

Alex Lin

Alex Lin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

Share

Turn any list of URLs into structured page metadata: title, description, canonical URL, OpenGraph, Twitter Card, JSON-LD @types, favicon, and language — one JSON item per URL, no browser required. Built for link previews, content pipelines, SEO audits, and AI agents that need a plain get_page_metadata(url) tool. Every URL is HTTP-only (fetch, no headless browser), so runs are fast and cheap, and one bad URL never fails the whole run — it just comes back with an error field.

Sample output

Real output from a live run of this Actor (https://apify.com):

{
"url": "https://apify.com",
"finalUrl": "https://apify.com/",
"status": 200,
"title": "Apify: The largest marketplace of trusted tools for AI",
"description": "Thousands of tools to automate your business. Get real-time web data, track competitors, generate leads, and integrate your apps and AI agents.",
"canonical": "https://apify.com/",
"lang": "en",
"og": {
"title": "Apify: The largest marketplace of trusted tools for AI",
"type": "website",
"site_name": "Apify",
"image": "https://apify.com/og-image?title=Thousands+of+tools%0Afor+your+AI"
},
"twitter": {
"card": "summary_large_image",
"creator": "@apify"
},
"jsonLdTypes": ["Organization", "WebSite", "SoftwareApplication"],
"favicon": "https://apify.com/favicon.ico?favicon.2653ilt32bing.ico?dpl=ff1ad5e33f",
"error": null
}

A URL that 404s or isn't HTML still comes back as one item, with whatever was actually recoverable and an error explaining what wasn't:

{ "url": "https://example.com/this-page-does-not-exist-404", "finalUrl": "https://example.com/this-page-does-not-exist-404",
"status": 404, "title": "Example Domain", "lang": "en", "favicon": "https://example.com/favicon.ico", "error": "HTTP 404" }
{ "url": "https://www.apify.com/favicon.ico", "finalUrl": "https://apify.com/favicon.ico", "status": 200,
"title": null, "og": {}, "twitter": {}, "jsonLdTypes": [], "favicon": null,
"error": "Not HTML (content-type: image/x-icon)" }

Download the dataset as JSON, CSV, Excel, or query it over the API.

Input

FieldTypeDefaultNotes
urlsstring[]["https://example.com", "https://apify.com"]*Web page URLs to extract metadata from.
maxConcurrencyinteger10How many URLs to fetch in parallel (1–50).

* The default only applies when urls is left empty — this is what a zero-config run uses, so it always returns real metadata in a few seconds.

Pricing

Pay per event, no subscription:

EventPriceWhen
Actor start$0.001Once per run
URL processed$0.001Once per URL attempted — including 404s, timeouts, and non-HTML responses, since fetching them still consumes platform resources (primary event)

Worked examples:

  • 10 URLs: $0.001 + 10 × $0.001 = $0.011.
  • 1,000 URLs: $0.001 + 1,000 × $0.001 = $1.001.
  • The default sample run (example.com, apify.com — 2 items): $0.001 + 2 × $0.001 = $0.003.
  • Free plan: this Actor is HTTP-only, 256–512 MB, and a 1,000-URL run finishes in well under a minute — the $5/month free platform usage covers a large volume of occasional runs on top of the event price.

The minimum spend guard (minimalMaxTotalChargeUsd) is $0.05 — small enough for an agent to call this tool with a tiny budget.

Output fields

FieldDescription
urlRequested URL.
finalUrlURL after redirects (null if the request failed outright).
statusHTTP status code (0 = request never got a response).
title<title>.
description<meta name="description">.
canonical<link rel="canonical">, resolved to an absolute URL.
lang<html lang="...">.
ogOpen Graph tags (og:*), keyed by the part after og:.
twitterTwitter Card tags (twitter:*), keyed by the part after twitter:.
jsonLdTypes@type value(s) from every application/ld+json block on the page.
faviconAbsolute favicon URL. Falls back to /favicon.ico when the page declares none (or an empty data: icon, which some sites use on purpose) — this is a best-effort guess, not verified to exist.
errorSet when the URL couldn't be fetched, returned a non-2xx status, or wasn't HTML. The item (and its charge) still exists — resources were spent either way — but most fields will be null.

Limitations & notes

  • HTTP-only: pages that require JavaScript to render their metadata (rare — OpenGraph/Twitter Card/JSON-LD are meant to be readable from the raw HTML) won't get the client-rendered fields.
  • Non-HTML responses (images, PDFs, etc.) are detected from the Content-Type header and skipped before parsing; you still get a dataset item with status and an error, and it is still charged.
  • Public page metadata only — no login, no personal data.
  • Not affiliated with Google, Meta, Twitter/X, or any site this Actor is pointed at; OpenGraph, Twitter Card, and JSON-LD are open, documented HTML conventions, not proprietary APIs.
  • Found a bug or want a field added? Open an issue on this Actor's Issues tab.