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.
| Free | Starter | Pro | Business | |
|---|---|---|---|---|
| Price | $0 | $3 | $10 | $20 |
| Credits | 100 / month | 1,000 | 5,000 | 15,000 |
| Expiry | Resets monthly | Never | Never | Never |
| Rate limit | 10 / min | 60 / min | 60 / min | 120 / min |
| Cost / request | free | $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.
Can AI agents use ogfetch?
Yes. Agents can sign up with a single POST to /v1/signup (no email or browser), call the API with the returned key, check their balance, and buy more credits on their own with USDC on Solana (or request a Stripe checkout link for a human to pay by card). There is also a remote MCP server at https://ogfetch.dev/v1/mcp that works with Claude, Cursor, and other MCP clients.
Can I pay with crypto?
Yes. Credit packs can be paid in USDC on Solana. Use the Solana Pay checkout at ogfetch.dev/topup (scan with Phantom or any Solana wallet), or have your agent call /v1/topup/solana. Credits are added as soon as the transaction confirms. Cards are accepted through Stripe.
Is there an MCP server?
Yes. Connect any MCP client to https://ogfetch.dev/v1/mcp (Streamable HTTP). Tools: fetch_url_metadata, create_account, get_account, get_pricing, buy_credits, buy_credits_usdc, check_usdc_payment.