LinkMeta API Documentation

LinkMeta provides a fast, reliable REST API for extracting structured metadata from any URL. Extract Open Graph data, Twitter Cards, favicons, JSON-LD, and more with a single API call. The API is completely free and open - no API keys, no authentication, no rate limits.

Base URL: http://localhost:3000/api/v1 (development) or https://api.linkmeta.dev/v1 (production)

Extract Metadata

GET/v1/extract?url={url}

Extract metadata from a single URL. Returns Open Graph, Twitter Card, favicon, JSON-LD, and general metadata.

Query Parameters

ParamTypeRequiredDescription
urlstringrequiredThe URL to extract metadata from
no_cachebooleanoptionalSet to true to bypass cache

Example Request

cURL
curl "http://localhost:3000/api/v1/extract?url=https://github.com"

Example Response

JSON Response
{
  "status": "success",
  "cached": false,
  "data": {
    "url": "https://github.com",
    "title": "GitHub: Let's build from here",
    "description": "GitHub is where people build software...",
    "image": "https://github.githubassets.com/assets/...",
    "favicon": "https://github.githubassets.com/favicons/...",
    "siteName": "GitHub",
    "type": "website",
    "locale": "en",
    "author": null,
    "publishedDate": null,
    "keywords": [],
    "themeColor": "#1e2327",
    "canonical": "https://github.com/",
    "twitter": {
      "card": "summary_large_image",
      "site": "@github",
      "creator": null,
      "title": "GitHub: Let's build from here",
      "description": "...",
      "image": "..."
    },
    "openGraph": {
      "title": "GitHub: Let's build from here",
      "description": "...",
      "image": "...",
      "url": "https://github.com/",
      "type": "website",
      "siteName": "GitHub",
      "locale": "en_US"
    },
    "jsonLd": null,
    "responseTime": 142
  }
}

Batch Extract

POST/v1/batch

Extract metadata from up to 10 URLs in a single request.

Request Body

JSON Body
{
  "urls": [
    "https://github.com",
    "https://example.com",
    "https://dev.to"
  ]
}

SDK Examples

cURL

cURL
curl "https://api.linkmeta.dev/v1/extract?url=https://github.com"

JavaScript / Node.js

JavaScript
const response = await fetch(
  'https://api.linkmeta.dev/v1/extract?url=https://github.com'
);
const { data } = await response.json();
console.log(data.title, data.description, data.image);

Python

Python
import requests

resp = requests.get(
    'https://api.linkmeta.dev/v1/extract',
    params={'url': 'https://github.com'}
)
data = resp.json()['data']
print(data['title'], data['description'])

Batch Request (JavaScript)

Batch
const response = await fetch(
  'https://api.linkmeta.dev/v1/batch',
  {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      urls: ['https://github.com', 'https://dev.to', 'https://example.com']
    })
  }
);
const { results } = await response.json();

Response Format

All responses are JSON. Successful responses include "status": "success". Error responses include "error" and "message" fields.

Error Handling

StatusMeaning
400Bad Request - Missing or invalid URL
422Unprocessable - URL returned non-2xx status
504Timeout - URL took too long (10s limit)