Skip to main content

Web summarizer API

The web summarizer service lets you extract summaries and structured data from any publicly accessible URL. It returns page titles, descriptions, headings, paragraphs, links, images, and Open Graph metadata. No authentication is required. The service runs as a standalone deployment separate from the main Agentbot API.

Base URL

https://<your-web-summarizer-host>
The web summarizer runs as an independent service on port 3100 by default. Replace the base URL with your deployment’s address.

Service info

GET /
Returns service metadata and available endpoints.

Response

{
  "service": "Agentbot Web Summarizer",
  "description": "Summarize and extract data from any URL",
  "endpoints": {
    "POST /api/summarize": "Extract title, description, headings, key content — { url }",
    "POST /api/extract": "Extract all links, images, meta tags — { url }"
  },
  "payment": {
    "network": "base",
    "currency": "USDC",
    "payTo": "0x9Fc073659284575850614f6286158803F0526Bc2",
    "note": "x402 gating coming soon"
  }
}

Health check

GET /health
No authentication required.

Response

{
  "status": "ok",
  "service": "agentbot-web-summarizer",
  "version": "1.0.0"
}

Summarize a URL

POST /api/summarize
Fetches the given URL and extracts a content summary including the page title, meta description, headings, key paragraphs, and word count.

Request body

FieldTypeRequiredDescription
urlstringyesThe URL to summarize
curl -X POST https://<your-web-summarizer-host>/api/summarize \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com"}'

Response

{
  "url": "https://example.com",
  "title": "Example Domain",
  "description": "This domain is for use in illustrative examples.",
  "headings": ["Example Domain"],
  "paragraphs": [
    "This domain is for use in illustrative examples in documents."
  ],
  "wordCount": 28,
  "fetchedAt": "2026-03-22T19:00:00.000Z"
}

Response fields

FieldTypeDescription
urlstringThe URL that was summarized
titlestringPage title from the <title> tag, falling back to the first <h1>
descriptionstringMeta description from <meta name="description"> or <meta property="og:description">
headingsstring[]Deduplicated list of h1, h2, and h3 headings (max 20)
paragraphsstring[]Deduplicated key content paragraphs extracted from <p>, <article>, and common content selectors (max 10)
wordCountnumberApproximate word count of the full page body text
fetchedAtstringISO 8601 timestamp of when the URL was fetched

Errors

CodeDescription
400url field is missing from the request body
500The target URL could not be fetched or parsed

Error response

{
  "error": "url required"
}
POST /api/extract
Fetches the given URL and extracts all links, images, and Open Graph / Twitter Card metadata.

Request body

FieldTypeRequiredDescription
urlstringyesThe URL to extract data from
curl -X POST https://<your-web-summarizer-host>/api/extract \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com"}'

Response

{
  "url": "https://example.com",
  "links": [
    {
      "href": "https://www.iana.org/domains/example",
      "text": "More information..."
    }
  ],
  "images": [
    {
      "src": "https://example.com/logo.png",
      "alt": "Example logo"
    }
  ],
  "meta": {
    "og:title": "Example Domain",
    "og:description": "This domain is for use in illustrative examples.",
    "description": "This domain is for use in illustrative examples."
  },
  "fetchedAt": "2026-03-22T19:00:00.000Z"
}

Response fields

FieldTypeDescription
urlstringThe URL that was extracted from
linksobject[]Deduplicated list of links found on the page (max 50)
links[].hrefstringResolved absolute URL of the link
links[].textstringLink text, truncated to 100 characters
imagesobject[]Deduplicated list of images found on the page (max 20)
images[].srcstringResolved absolute image URL
images[].altstringImage alt text, truncated to 100 characters
metaobjectOpen Graph (og:*), Twitter Card (twitter:*), and description meta tags
fetchedAtstringISO 8601 timestamp of when the URL was fetched

Errors

CodeDescription
400url field is missing from the request body
500The target URL could not be fetched or parsed

Error response

{
  "error": "url required"
}

Fetch behavior

All URL fetching uses the following defaults:
SettingValue
User-AgentAgentbot-WebSummarizer/1.0
Timeout10 seconds
RedirectsFollowed automatically
Accepted contenttext/html, application/xhtml+xml
If the target URL returns a non-2xx HTTP status, the service responds with a 500 error containing the upstream status code in the error message.