Skim
About
Turn any URL into clean Markdown for AI agents — one read(url) tool, hosted, no signup, no API key.
Details
- Author
- Unknown
- Categories
- Web Scraping, Knowledge Base, Other
Jump to
Skim reads a URL and returns its main content as clean Markdown. Free, no signup, no key. Two ways to use it.
Streamable-HTTP MCP endpoint — add it as a remote server:
read({ url: "https://example.com/post", // required, absolute http(s) links: true, // optional, keep text; default true max_chars: 8000 // optional, truncate long content })
Returns{ url, title, description, format, content, word_count, bytes, ms }.
GET https://skim.perch-app.workers.dev/api/read?url=https%3A%2F%2Fexample.com%2F POST https://skim.perch-app.workers.dev/api/read {"url":"https://example.com/","links":true,"max_chars":8000}
Query/body options:format=markdown|text|data|jobs(markdown default;textalso drops link markup;data= structured JSON;jobs= normalized ATS/job-board array, see below),links=0,max_chars=N.
Structured data (format=data) — for aggregators
Instead of the readable body, get the machine-readable data the page already embeds — no HTML parsing on your side:
GET https://skim.perch-app.workers.dev/api/read?url=<page>&format=data
Returns{ title, description, canonical, jsonld:[…], opengraph:{…}, twitter:{…}, meta:{…}, counts:{…} }.jsonldis the page's schema.org blocks (Product, Offer, JobPosting, Review, Article, BreadcrumbList…) parsed from every<script type="application/ld+json">(including@graph), so a price/spec/job/product aggregator can read structured fields straight from the source. Works withrender=jsfor SPA pages. Sites without embedded data return empty arrays (still valid JSON).
Not an agent? Paste any URL into theclean readerto strip ads, popups and clutter and get a readable, shareable page:https://skim.perch-app.workers.dev/r?url=<page>.
Building a job aggregator or feed reader
Skim works well as a server-side fetch + extract layer: your aggregator or agent calls Skim, Skim fetches upstream and hands back clean content, so you never ship a browser or a scraper stack. Two patterns:
Normalized jobs (format=jobs) — one schema for every ATS.Add&format=jobsand Skim maps Greenhouse, Lever, Ashby, Workable, SmartRecruiters and Recruitee feeds (plus any careers page carrying JSON-LDJobPosting, and a generic array fallback) into one unified array — so you write your aggregator once instead of a parser per provider:
GET https://skim.perch-app.workers.dev/api/read?url=https%3A%2F%2Fboards-api.greenhouse.io%2Fv1%2Fboards%2Fgitlab%2Fjobs&format=jobs → { "url": "...", "status": 200, "format": "jobs", "source": "greenhouse", "count": 196, "jobs": [ { "title": "Account Executive", "url": "https://.../jobs/123", "location": "Remote, Italy", "department": "Sales", "employment_type": "FullTime", "updated_at": "2026-08-10T16:52:46-04:00", "remote": true }, … ] }
Same call works over MCP (read(url, format:"jobs")) and for a JS-rendered board (addrender=js). Prefer the raw feed? Omitformatand Skim returns the provider JSON verbatim:
ATS JSON APIs (raw)— Skim returns JSON verbatim (the whole body, up to 5 MB), so you can parse it directly:
GET https://skim.perch-app.workers.dev/api/read?url=https%3A%2F%2Fboards-api.greenhouse.io%2Fv1%2Fboards%2F<company>%2Fjobs # Greenhouse: https://boards-api.greenhouse.io/v1/boards/{company}/jobs # Ashby: https://api.ashbyhq.com/posting-api/job-board/{company} # Lever: https://api.lever.co/v0/postings/{company}?mode=json
Client-rendered job boards (SPA)— addrender=jsso Skim runs the page in a real headless browser before extracting, then returns clean Markdown:
GET https://skim.perch-app.workers.dev/api/read?url=<board-url>&render=js
Skim passes the upstream HTTP status straight through — a404means that company/board doesn't exist on that ATS (not a Skim error), and a403means the site blocked the fetch. Large bodies come back whole up to 5 MB; passmax_chars=Nonly if you want to cap length yourself.
Batch reads— polling several boards at once? Send up to 10 URLs in one call and get an array back (each result carries its ownurl/status/contentorerror):
POST https://skim.perch-app.workers.dev/api/read-batch {"urls":["https://boards-api.greenhouse.io/v1/boards/a/jobs","https://api.lever.co/v0/postings/b?mode=json"]} # or: GET https://skim.perch-app.workers.dev/api/read-batch?urls=<url1>,<url2> → {"count":N,"results":[...]}
Call it straight from the browser— every endpoint sendsAccess-Control-Allow-Origin: *, so a client-side dashboard or aggregator canfetch()Skim directly with no backend and no CORS errors (Skim does the upstream fetch server-side for you):
const r = await fetch("https://skim.perch-app.workers.dev/api/read?url=" + encodeURIComponent(u) + "&format=data"); const data = await r.json(); // JSON-LD / OpenGraph / meta, from your frontend
HTML (→ Markdown, main-content extracted), plain text, JSON and XML (returned as-is). PDFs and binaries aren't supported yet. Private/internal addresses are blocked. Rate limit: 40 reads/minute per IP.
Skim identifies itself asSkimBot/1.0and follows redirects. It's a reader, not a scraper farm — be considerate of the sites you read.
BrowserAct MCP Server is a standardized MCP service that lets MCP clients connect to the BrowserAct platform to discover and run browser automation workflows, access results/files and related storage, and trigger real-world actions via natural language.
Extract documentation for AI agents from any site with llms.txt support. Features MCP server, REST API, batch processing, and multiple export formats.
AI Influencer Search, Creator Data, & Live Scraping
A Developers Tool — Scrape entire documentation recursively and ask questions using AI
An MCP server for the Urlbox Screenshot API. It enables your client to take screenshots, generate PDFs, extract HTML/markdown, and more from websites.
Query ChatGPT, Gemini, Perplexity, Copilot, Grok, Google AI Mode, and Google Search/News from any country as MCP tools.
Download DocSend and Papermark decks as PDF/PPTX and data rooms as ZIPs, including email-gated and protected links.
Fetch web page content with recursive exploration.
Crawl websites to generate Markdown documentation and make it searchable through an MCP server.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.




