Web Page to Markdown for LLM — Fast & Cheap, CJK-ready
Pricing
from $0.85 / 1,000 page converteds
Web Page to Markdown for LLM — Fast & Cheap, CJK-ready
Convert web pages to clean Markdown, text or RAG chunks without a browser — fast and cheap. Correctly decodes Japanese/Chinese/Korean legacy encodings (Shift_JIS, EUC-JP, GBK, Big5), handles furigana, respects robots.txt. $1 per 1,000 pages.
Pricing
from $0.85 / 1,000 page converteds
Rating
0.0
(0)
Developer
Masahi Shop
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
13 days ago
Last modified
Categories
Share
Convert a list of web pages into clean Markdown, plain text or RAG chunks — without a browser, so it is fast and costs $1 per 1,000 pages.
Built to get Japanese, Chinese and Korean pages right:
- No mojibake: legacy encodings like Shift_JIS, EUC-JP, GBK/GB18030, Big5, EUC-KR are detected and decoded correctly
- Furigana (ruby): remove readings (
漢字) or keep them in parentheses (漢字(かんじ)) - No stray spaces between CJK characters at line breaks
- Sentence-aware RAG chunks that end at
。!?as well as. ! ?
And for every language:
- Main content extraction (Readability): navigation, ads, cookie bars and footers removed
- Tables kept as Markdown tables
- Metadata: title, description, site name, author, published time, canonical URL, language, charset
- Polite by default: respects robots.txt and Crawl-delay, waits between requests to the same site, never crawls beyond the URLs you give
What can it be used for?
- Feed web pages to ChatGPT, Claude or any LLM
- Build a RAG / vector database from documentation, news or knowledge-base pages
- Archive or translate Japanese / Chinese / Korean web content without garbled characters
- Use it from AI agents via the Apify API or MCP as a cheap "read this URL" tool
Input
| Field | Description |
|---|---|
urls | Pages to convert. Only these URLs are fetched — no link following. |
outputFormat | markdown (default), text, or chunks |
mode | article (main content, default) or fullPage |
ruby | remove (default) or parentheses |
includeLinks | Keep hyperlinks in Markdown (default: off, cleaner for LLMs) |
chunkSize / chunkOverlap | For chunks |
respectRobotsTxt | Default on |
minDelayPerSiteMs, maxConcurrency, timeoutSecs, maxPageSizeMb | Politeness and limits |
{"urls": ["https://www.aozora.gr.jp/cards/000148/files/773_14560.html"],"ruby": "parentheses"}
Output
{"url": "https://www.aozora.gr.jp/cards/000148/files/773_14560.html","status": "success","title": "夏目漱石 こころ","language": "ja","charset": "shift_jis","extraction": "article","charCount": 162544,"markdown": "### 上 先生と私\n\n#### 一\n\n 私(わたくし)はその人を常に先生と呼んでいた。…"}
status is success, failed (with error), or blocked_by_robots_txt. With outputFormat: "chunks" you get chunks: [{ index, charCount, text }] and chunkCount instead of markdown.
Pricing
| Event | Price |
|---|---|
| Page converted (per successfully converted page) | $0.001 ($1 per 1,000 pages) |
Failed pages, pages blocked by robots.txt, PDFs and non-HTML URLs are not charged. Platform usage is included.
Limitations
- No JavaScript rendering. Pages that build their content in the browser (some single-page apps) may return little text — the item then fails with an explanation and is not charged.
- Pages behind logins or paywalls are not supported.
- For PDFs use PDF to Markdown for LLM & RAG; for images and scans use OCR Japanese, Chinese, Korean & English.
Responsible use
Only submit pages you are allowed to process. The Actor identifies itself in the User-Agent (ApifyWebToMarkdownCJK), honours robots.txt by default and spaces out requests to each site.