API Reference

LinkMeta — URL Metadata API

Extract Open Graph, Twitter Card, and meta tags from any URL. 100 free requests/day. CORS-enabled.

Base URL

https://moneyprint.vercel.app/api/v1/metadata

Authentication

Free tier: no auth required (100 requests/day).
Pro tier: include your API key for unlimited requests + batch endpoint.

Authorization: Bearer qs_YOUR_API_KEY

Endpoints

GET/api/v1/metadata?url=...Single URL

Example request

curl "https://moneyprint.vercel.app/api/v1/metadata?url=https://github.com"

Response

{
  "ok": true,
  "tier": "free",
  "remaining": 99,
  "data": {
    "url": "https://github.com",
    "finalUrl": "https://github.com/",
    "title": "GitHub: Let's build from here",
    "description": "GitHub is where over 100 million developers shape the future of software...",
    "image": "https://github.githubassets.com/assets/github-logo-...",
    "favicon": "https://github.com/favicon.ico",
    "siteName": "GitHub",
    "type": "website",
    "locale": "en_US",
    "twitterCard": "summary_large_image",
    "twitterSite": "@github",
    "twitterCreator": null,
    "author": null,
    "publishedTime": null,
    "keywords": [],
    "themeColor": "#1e2327",
    "canonical": "https://github.com/",
    "contentType": "text/html; charset=utf-8",
    "statusCode": 200,
    "responseTimeMs": 342
  }
}
POST/api/v1/metadataSingle URL (JSON body)
curl -X POST https://moneyprint.vercel.app/api/v1/metadata \
  -H "Content-Type: application/json" \
  -d '{"url": "https://github.com"}'
POST/api/v1/metadataPROBatch (up to 10 URLs)
curl -X POST https://moneyprint.vercel.app/api/v1/metadata \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer qs_YOUR_API_KEY" \
  -d '{
    "urls": [
      "https://github.com",
      "https://vercel.com",
      "https://stripe.com"
    ]
  }'

Batch response

{
  "ok": true,
  "tier": "pro",
  "count": 3,
  "data": [
    { "url": "https://github.com", "ok": true, "data": { ... } },
    { "url": "https://vercel.com", "ok": true, "data": { ... } },
    { "url": "https://stripe.com", "ok": true, "data": { ... } }
  ]
}

Response fields

FieldTypeDescription
urlstringOriginal requested URL
finalUrlstringURL after redirects
titlestring | nullPage title (og:title > twitter:title > <title>)
descriptionstring | nullPage description (og > twitter > meta)
imagestring | nullPreview image URL (og:image or twitter:image)
faviconstring | nullFavicon URL
siteNamestring | nullSite name from og:site_name
typestring | nullContent type (og:type — website, article, etc.)
localestring | nullLocale from og:locale
twitterCardstring | nullTwitter card type
twitterSitestring | nullTwitter @handle for the site
authorstring | nullAuthor from meta tag
publishedTimestring | nullArticle publish date (ISO 8601)
keywordsstring[]Keywords from meta tag
themeColorstring | nullBrowser theme-color meta
canonicalstring | nullCanonical URL
contentTypestring | nullHTTP Content-Type header
statusCodenumberHTTP status code of the fetched page
responseTimeMsnumberTime to fetch and parse (ms)

Rate limits

Free tier
  • • 100 requests / day
  • • Single URL per request
  • • No API key required
  • • CORS enabled
Pro — ₩9,900/month
  • • Unlimited requests
  • • Batch up to 10 URLs per call
  • • API key authentication
  • • CORS enabled
Get API key →

Use cases

Link Previews

Build rich link previews in chat apps, CMS, or social feeds.

SEO Monitoring

Track meta tags across your site or competitor pages.

Content Aggregation

Pull article metadata for news aggregators or RSS readers.

Bookmark Managers

Auto-fill title, description, and thumbnail on save.

Error codes

CodeMeaning
400Missing or invalid URL parameter
403Batch endpoint requires Pro API key
429Daily rate limit exceeded — upgrade to Pro
502Failed to fetch the target URL (timeout, DNS error, etc.)