API Documentation

Base URL: https://metapeek.grabshot.dev

Authentication

Pass your API key via header or query parameter:

Header: x-api-key: mp_your_api_key
Query:  ?api_key=mp_your_api_key

Get a free key at the pricing section.

Extract Metadata

GET /v1/extract?url={url}

Parameters

ParamTypeRequiredDescription
urlstringYesURL to extract metadata from
user_agentstringNoCustom User-Agent (Business plan)

Response

{
  "success": true,
  "url": "https://github.com",
  "finalUrl": "https://github.com/",
  "contentType": "text/html; charset=utf-8",
  "isHtml": true,
  "meta": {
    "title": "GitHub: Let's build from here",
    "description": "GitHub is where over 100 million developers...",
    "canonical": "https://github.com",
    "lang": "en",
    "themeColor": "#1e2327"
  },
  "og": {
    "url": "https://github.com",
    "site_name": "GitHub",
    "title": "GitHub: Let's build from here",
    "description": "...",
    "image": "https://github.githubassets.com/assets/..."
  },
  "twitter": {
    "site": "github",
    "card": "summary_large_image",
    "title": "GitHub: Let's build from here"
  },
  "favicon": "https://github.githubassets.com/favicons/favicon.svg",
  "images": ["https://github.githubassets.com/assets/..."],
  "feeds": [],
  "responseTime": 245
}

Batch Extract

Pro plan+
POST /v1/extract/batch

Request Body

{
  "urls": [
    "https://github.com",
    "https://twitter.com",
    "https://news.ycombinator.com"
  ]
}

Max 10 URLs per batch. Each URL counts as one request toward your monthly limit.

Other Endpoints

POST /v1/register

Body: {"email": "[email protected]"} → Returns API key

GET /v1/usage

Returns current usage, limits, and plan info

POST /v1/billing/checkout

Body: {"api_key": "...", "plan": "starter|pro|business"} → Returns Stripe checkout URL

POST /v1/billing/sync

Sync plan from Stripe (fallback if webhook missed)

GET /v1/health

Health check endpoint

Rate Limits

PlanMonthly RequestsPer Minute
Free10010
Starter ($9/mo)5,00030
Pro ($29/mo)50,00060
Business ($79/mo)500,000120

Error Codes

CodeMeaning
400Missing or invalid URL
401Missing or invalid API key
403Feature not available on your plan
429Rate limit or monthly limit exceeded
500Server error