Skip to content

Content API

Turn any webpage into clean, structured data

Rendered HTML, LLM-ready Markdown, every link, the sitemap and rich metadata — from a single request, after JavaScript has run.

No credit card required · 100 free credits every month

How it works

From URL to result in four steps

  1. 1

    Send a URL

    Call GET /v1/content with the URL and the outputs you want.

  2. 2

    Render

    The page loads in Chromium so client-side content is included.

  3. 3

    Extract

    Metadata, links, HTML and Markdown are extracted — optionally only the main content.

  4. 4

    Use it

    Index it for search, feed it to an LLM or store it for monitoring.

Features

Extraction built for search, LLMs and monitoring

HTML extraction

include_html returns the fully rendered DOM, after scripts have run.

Markdown

include_markdown converts the page to clean Markdown that's ready for embeddings and prompts.

Link scraper

Every link on the page, de-duplicated and grouped into internal, external and social.

Sitemap scraper

include_sitemap discovers the site's sitemap and returns its URLs.

Metadata parser

Title, description, favicon, Open Graph, canonical, language, keywords, author and schema.org.

Stealth mode

Fingerprint hardening and user-agent rotation for sites that block automated browsers.

Main content with Defuddle

use_defuddle strips navigation, sidebars, footers and comments, keeping only the article.

Field filtering

fields=data.metadata.title,data.links keeps responses small with dot-notation filtering.

Extract Markdown and metadata

Combine outputs freely in one call. You're charged one credit regardless of how many outputs you include.

const params = new URLSearchParams({
  url: "https://acme.example",
  include_markdown: "true",
  use_defuddle: "true",
});

const res = await fetch(`https://api.screenshotdude.com/v1/content?${params}`, {
  headers: { "x-api-key": process.env.SCREENSHOTDUDE_API_KEY },
});
const { success, data, error } = await res.json();
if (!success) throw new Error(error);
console.log(data);

200 · application/json

{
  "success": true,
  "data": {
    "metadata": {
      "title": "Acme — Project management for remote teams",
      "description": "Plan sprints, track work and ship faster with Acme.",
      "favicon": "https://acme.example/favicon.ico",
      "ogImage": "https://acme.example/og.png",
      "ogTitle": "Acme — Project management for remote teams",
      "ogDescription": "Plan sprints, track work and ship faster.",
      "canonical": "https://acme.example/",
      "lang": "en",
      "keywords": [
        "project management",
        "remote teams",
        "kanban"
      ],
      "author": "Acme Inc.",
      "schemaOrg": [
        {
          "@type": "Organization",
          "name": "Acme Inc.",
          "url": "https://acme.example"
        }
      ]
    },
    "links": {
      "internal": [
        "https://acme.example/pricing",
        "https://acme.example/blog",
        "https://acme.example/login"
      ],
      "external": [
        "https://status.acme-hosting.example"
      ],
      "social": [
        "https://x.com/acme",
        "https://www.linkedin.com/company/acme"
      ]
    },
    "markdown": "# Project management for remote teams\n\nPlan sprints, track work and ship faster..."
  }
}

Frequently asked questions

Start capturing in minutes

Create a free account and get 100 free screenshots every month. No credit card required.