# Readmint

> Any web page as clean Markdown, for LLMs and AI agents. Send a URL, get back its main content as Markdown, text or HTML, without menus, ads or cookie banners. Pages built by JavaScript are loaded in a real browser when they need it. Link previews and site maps too, from one REST call or MCP tool.

Base URL: https://api-readmint.plxi.us. Authenticate with an `X-API-Key` header (create a key at https://readmint.plxi.us/dashboard/keys).
Every operation is a POST with a JSON body and returns JSON. Failed calls are never charged.
MCP server at https://api-readmint.plxi.us/mcp (same key, same price), with these operations as tools: read_url, preview_url, map_site.

## Docs

- [API reference](https://readmint.plxi.us/docs): authentication, operations, limits, errors and webhooks
- [OpenAPI description](https://readmint.plxi.us/openapi.json): machine-readable spec of every operation
- [Pricing](https://readmint.plxi.us/pricing): Free $0/mo for 1,000 pages; Starter $10/mo for 20,000 pages; Pro $50/mo for 200,000 pages

## Operations

### POST https://api-readmint.plxi.us/v1/read

A web page's main content as clean Markdown, text or HTML, without menus, ads or cookie banners. Costs 1 credit.

Request:

```json
{
  "url": "https://example.com/"
}
```

Response:

```json
{
  "url": "https://example.com/",
  "final_url": "https://example.com/",
  "status": 200,
  "title": "Example Domain",
  "byline": null,
  "excerpt": "This domain is for use in documentation examples without needing permission. This is not a service; avoid relying on it for testing and monitoring purposes.",
  "site_name": null,
  "published": null,
  "lang": "en",
  "format": "markdown",
  "content": "This domain is for use in documentation examples without needing permission. This is not a service; avoid relying on it for testing and monitoring purposes.\n\n…\n\n[Learn more](https://iana.org/help/example-domains)",
  "word_count": 133,
  "truncated": false,
  "rendered": true,
  "article": true,
  "fetched_at": "2026-10-31T13:20:00Z",
  "credits": 1
}
```

### POST https://api-readmint.plxi.us/v1/preview

A link preview: title, description, image, site name, favicon and oEmbed details for any page. Costs 1 credit.

Request:

```json
{
  "url": "https://example.com/"
}
```

Response:

```json
{
  "url": "https://example.com/",
  "final_url": "https://example.com/",
  "status": 200,
  "title": "Example Domain",
  "description": null,
  "site_name": "example.com",
  "type": null,
  "image": null,
  "favicon": "https://example.com/favicon.ico",
  "icons": [],
  "theme_color": null,
  "author": null,
  "published": null,
  "lang": "en",
  "canonical": null,
  "feeds": [],
  "oembed_url": null,
  "oembed": null,
  "content_type": "text/html",
  "rendered": false,
  "fetched_at": "2026-10-31T13:20:00Z",
  "credits": 1
}
```

### POST https://api-readmint.plxi.us/v1/map

A site's page URLs, from its sitemaps and the links on a start page. Costs 1 credit.

Request:

```json
{
  "url": "https://example.com/",
  "max_urls": 100
}
```

Response:

```json
{
  "url": "https://example.com/",
  "urls": [
    "https://example.com/"
  ],
  "count": 1,
  "from_sitemap": 0,
  "from_page": 0,
  "sitemaps": [
    "https://example.com/sitemap.xml"
  ],
  "truncated": false,
  "credits": 1
}
```

## Guides

- [Build link previews from Open Graph tags with one API call](https://readmint.plxi.us/guides/link-previews-with-open-graph): Get a link's title, description, image with its size, favicon, site name and oEmbed details for a preview card, without scraping pages yourself.
- [Read a whole website as Markdown, page by page](https://readmint.plxi.us/guides/read-a-whole-site-as-markdown): List a site's pages from its sitemaps with map, choose the ones you need, and read each as Markdown with read. Working code included.
- [Turn any URL into clean Markdown for an LLM](https://readmint.plxi.us/guides/url-to-markdown-for-llms): How to get a web page's main content as Markdown, without navigation, ads or cookie banners, from one API call, with JavaScript pages handled for you.

## Comparisons

- [Readmint vs Firecrawl — a simpler alternative for reading pages](https://readmint.plxi.us/compare/firecrawl-alternative): Firecrawl is a full web data platform with crawling, search and browser automation. When a small per-page reader like Readmint fits better, and when it doesn't.
- [Readmint vs Jina Reader — URL to Markdown APIs compared](https://readmint.plxi.us/compare/jina-reader-alternative): Jina Reader turns a URL into Markdown by prefixing r.jina.ai. How it compares with Readmint on JavaScript pages, PDFs, previews, pricing and limits.

## Use cases

- [A web reading tool for AI agents, over MCP](https://readmint.plxi.us/use-cases/ai-agents): Give Claude, Cursor or your own agent read_url, preview_url and map_site as MCP tools, so it reads pages as Markdown instead of raw HTML.
- [Link previews for chat apps, feeds and editors](https://readmint.plxi.us/use-cases/link-previews): Show a rich card when someone pastes a link, with title, description, image size, favicon and embeds from one API call that refuses private addresses.
- [Web pages for RAG: clean Markdown to chunk and embed](https://readmint.plxi.us/use-cases/rag-ingestion): Feed docs, help centres and blogs into a retrieval pipeline as clean Markdown with titles, dates and canonical URLs, without writing scrapers.

## FAQ

- **Does it run JavaScript?** When it has to. Each page is first fetched directly; if it turns out to be built by script, or the site turns plain clients away, it is loaded in a real Chromium browser. render: "always" or "never" overrides that. A read costs one credit either way.
- **What does it leave out?** Navigation, headers, footers, sidebars, cookie banners, pop-ups and chat widgets. Mozilla's Readability finds the main content; a page that isn't an article comes back without its navigation, header and footer. selector reads one element instead.
- **Is a failed read charged?** No. Bad input, private addresses, pages behind a bot check or a login, HTTP errors and files that are not web pages are refused with a 4xx error and cost nothing.
- **Can it read pages behind a login or a CAPTCHA?** No. Readmint reads public pages only. It doesn't solve CAPTCHAs or get past bot protection, and refuses those pages without charging.
- **How fresh are the results?** A read can come from a cache up to max_age seconds old: an hour by default, a day for previews. Send max_age: 0 to read the page fresh; fetched_at says when it was read.

## Optional

- [Terms](https://readmint.plxi.us/terms)
- [Privacy](https://readmint.plxi.us/privacy)
- [Support](https://readmint.plxi.us/contact)
