API Documentation

Check any URL's Open Graph tags programmatically. Free, no authentication required.

No Auth Required10 req / hourJSON ResponseCORS Enabled

Endpoint

GET https://unfurli.com/api/v1/og?url={your-url}

Parameters

ParameterTypeRequiredDescription
urlstringYesThe URL to check. Must be publicly accessible.

Response

FieldTypeDescription
urlstringThe fetched URL (after redirects)
titlestring?og:title or <title> fallback
descriptionstring?og:description or meta description fallback
imagestring?og:image URL
imageWidthnumber?og:image:width
imageHeightnumber?og:image:height
siteNamestring?og:site_name
typestring?og:type (website, article, etc.)
twitterCardstring?twitter:card value
twitterImagestring?twitter:image URL
faviconstring?Resolved favicon URL
scorenumberQuality score 0-100
issuesarrayValidation issues with severity, tag, message, suggestion
allTagsarrayAll meta tags found (property, name, content)

Examples

JavaScript / TypeScript

const res = await fetch(
  "https://unfurli.com/api/v1/og?url=https://example.com"
);
const data = await res.json();

console.log(data.title);       // "Example Domain"
console.log(data.score);       // 85
console.log(data.issues);      // [{ severity: "warning", ... }]

cURL

curl "https://unfurli.com/api/v1/og?url=https://example.com"

Python

import requests

r = requests.get(
    "https://unfurli.com/api/v1/og",
    params={"url": "https://example.com"}
)
data = r.json()

print(data["title"])   # "Example Domain"
print(data["score"])   # 85

Rate Limiting

The API allows 10 requests per hour per IP address. Responses are cached for 5 minutes.

HeaderDescription
X-RateLimit-LimitMax requests per window (10)
X-RateLimit-RemainingRequests remaining in current window
X-CacheHIT or MISS — whether the response was served from cache
Retry-AfterSeconds to wait when rate limited (429 response)

Errors

400Bad Request

Missing or invalid URL parameter, or the target URL could not be reached.

{ "error": "Could not reach the URL." }
429Rate Limited

You've exceeded 10 requests per hour. Wait for the Retry-After period.

{ "error": "Rate limit exceeded.", "resetAt": "2026-03-30T12:00:00Z" }

Use Cases

CI/CD Validation

Check OG tags on every deploy. Fail the build if the score drops below your threshold.

Link Preview Dashboards

Build internal tools that show how shared links will appear across platforms.

SEO Audits

Scan client sites programmatically and generate OG health reports.

Content Management

Validate OG tags before publishing blog posts or product pages.