URL Metadata API

Unfurl any URL.
Get metadata instantly.

One API call returns title, description, OG image, favicon, canonical URL, word count, and detected tech stack. Works on any public URL. No headless browser, no JavaScript rendering. Just fast, clean JSON.

100 free requests on signup. No credit card required.

Live demo

// Response will appear here
// Try: https://vercel.com or https://github.com

Response fields

Open Graph

  • og.title
  • og.description
  • og.image
  • og.type
  • og.siteName
  • og.url

Twitter Cards

  • twitter.card
  • twitter.title
  • twitter.description
  • twitter.image
  • twitter.creator

Page info

  • title
  • description
  • canonical
  • favicon
  • wordCount
  • meta.author

Tech stack

  • Next.js
  • WordPress
  • Shopify
  • Vercel
  • Cloudflare
  • 20+ more...

Meta tags

  • meta.keywords
  • meta.robots
  • meta.themeColor

Request info

  • statusCode
  • responseTime
  • fetchedAt
  • url (resolved)

How it works

01

Plain HTTP fetch

We request the URL with a standard HTTP client and parse the raw HTML. No headless browser, no Playwright, no Puppeteer. Fast and predictable.

02

Full metadata extraction

We extract all Open Graph tags, Twitter card tags, favicons, canonical URLs, word count, and detect which framework or CMS the site is using.

03

Clean JSON back to you

Consistent response schema every time. Null fields for missing data, not missing keys. Resolved absolute URLs for images and favicons.

Sample response

{
  "url": "https://github.com",
  "title": "GitHub: Let's build from here",
  "description": "GitHub is where over 100 million developers shape the future of software.",
  "favicon": "https://github.com/favicon.ico",
  "og": {
    "title": "GitHub: Let's build from here",
    "image": "https://github.githubassets.com/images/modules/site/social-cards/homepage.png",
    "type": "website"
  },
  "wordCount": 842,
  "techStack": ["React", "Cloudflare"],
  "responseTime": 187,
  "fetchedAt": "2025-06-17T14:23:01.000Z"
}

Code examples

cURL

curl -G https://ogfetch.dev/v1/fetch \
  -H "X-Api-Key: ogf_your_key" \
  --data-urlencode "url=https://github.com"

JavaScript

const res = await fetch(
  'https://ogfetch.dev/v1/fetch?url=' +
    encodeURIComponent('https://github.com'),
  { headers: { 'X-Api-Key': 'ogf_your_key' } }
);
const data = await res.json();
console.log(data.title, data.og.image);

Python

import requests

r = requests.get(
    "https://ogfetch.dev/v1/fetch",
    headers={"X-Api-Key": "ogf_your_key"},
    params={"url": "https://github.com"},
)
print(r.json()["title"])

Pricing

Buy credits once, use them when you need them. Credits never expire.

FreeStarterProBusiness
Price$0$3$10$20
Credits100 / month1,0005,00015,000
ExpiryResets monthlyNeverNeverNever
Rate limit10 / min60 / min60 / min120 / min
Cost / requestfree$0.003$0.002$0.0013

FAQ

Does it handle JavaScript-rendered content?

No. We do a plain HTTP fetch and parse the returned HTML. Sites that load metadata via JavaScript after the page loads will not have that data in the response. For the vast majority of URLs (blogs, e-commerce, news sites, GitHub, etc.) the metadata is in the static HTML and this works perfectly.

What counts as a credit?

One successful response (HTTP 2xx from your target URL) consumes one credit. Requests that fail due to network errors, invalid URLs, or server errors on the target site do not consume credits.

How long do credits last?

Paid credit packs never expire. The free 100 credits reset monthly.

Can I try it without signing up?

Yes. The live demo above lets you test up to 8 URLs per hour without an account.

What happens if a site blocks bots?

We request pages with a real User-Agent string and handle redirects. Some sites will still block or return partial content. In that case the response will contain whatever metadata was in the blocked/redirected page.

Start with 100 free requests

No credit card required. API key delivered to your inbox.

Get my API key