Plain-Text Stripper avatar

Plain-Text Stripper

Pricing

Pay per usage

Go to Apify Store
Plain-Text Stripper

Plain-Text Stripper

Turn messy web pages or pasted text/Markdown into clean, LLM-ready plain text. Strip HTML, scripts, styles, Markdown artifacts and extra whitespace; get one record per page plus a job summary.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Luqin Wang

Luqin Wang

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

19 days ago

Last modified

Categories

Share

Strip web pages — or pasted text/markdown — down to clean raw text. HTML tags, scripts, styles, comments, markdown artifacts, and excess whitespace are removed; what survives is the page's own words in reading order. Ideal for building LLM-ready corpora, content pipelines, and readability preprocessing.

Input

Source priority: rawText > urlsFile > urlsUrl > urlsText. The highest-priority non-empty source wins.

FieldDescription
rawTextPaste raw text or markdown to strip directly, without fetching any URL.
urlsTextPaste one URL per line.
urlsUrlPublic URL of a text file with one URL per line.
urlsFileUpload a text file (apify:// key-value-store reference).
timeoutSecPer-page fetch timeout, 5–60s (default 20).
maxUrlsMax pages per run, 1–2000 (default 500).

Output

  • Dataset — one record per stripped page/text: url, finalUrl, status, text, charCount, wordCount, truncated, error, checkedAt, plus stable _recordId / _batchId / _seq reconciliation IDs. Exportable as CSV/JSON.
  • SUMMARY.json (key-value store) — itemsPublished, pagesRequested, pagesProcessed, pageErrors. Aggregates confirmed publications only.
  • Job receipt — one job-completion record published after all page records when at least one page was published.

Non-text content (PDFs, images, …) gets an explanatory error record instead of text. Error records are published like any other page record. pageErrors in SUMMARY tracks how many.

Safety

  • SSRF-resistant fetching: DNS is resolved and pinned before connect; private/loopback/link-local targets are refused; redirects are followed manually (max 5) and re-validated per hop.
  • Hard deadlines on every fetch, key-value-store access, and the publication boundary; the single-attempt raw POST boundary means one push is exactly one POST.