Describe the data you want. Get production-ready JSON back — one API call.
500 free pages · No credit card · No credit multipliers
| name | price | rating | in_stock |
|---|---|---|---|
| Aurora Desk Lamp | 49.00 | 4.8 | true |
| Birch Bookend Set | 24.50 | 4.6 | true |
| Dune Ceramic Vase | 32.00 | 4.7 | true |
| Fern Print Cushion | 21.00 | 4.9 | true |
| Grove Candle Trio | 18.50 | 4.6 | false |
{
"pages_used": 50,
"cost_usd": 0.079,
"data": [
{ "name": "Aurora Desk Lamp",
"price": 49.00, "rating": 4.8,
"in_stock": true },
...1,846 more rows
]
}
Stop writing extraction code. Stop maintaining selectors.
Built for the AI stack
Every company has written the same scraper thousands of times.
CSS selectors break. XPath breaks. HTML changes on a Tuesday.
LLMs understand pages. So we built the scraper that speaks English.
# pip install plainscrape from plainscrape import scrape data = scrape( url="shopzone.example", instruction=""" every product under $50 with rating above 4.5 """, max_pages=50, )
{
"rows": 1847,
"pages_used": 50,
"cost_usd": 0.079,
"result_id": "res_8xk2m",
"data": [
{ "name": "Aurora Desk Lamp",
"price": 49.0,
"rating": 4.8,
"in_stock": true },
...
],
"skipped": []
}
The literal response. Typed rows, cost included, failures listed — nothing to guess.
Plainscrape remembers what you've already extracted — so follow-up instructions don't require crawling the web again.
Nobody gets an extraction perfect on the first request — not humans, not agents. Everywhere else, that means re-crawling the whole site and paying for it twice.
With Plainscrape, a follow-up instruction is an API call, not a re-crawl. The dataset updates in place, and the pages you already paid for stay paid for.
Add Plainscrape as an MCP server and your agent can point at any site, describe what it needs, and get typed JSON back — no HTML in the context window, no token waste.
# one command to web-enable your AI $ claude mcp add plainscrape -- npx -y plainscrape-mcp # tools your agent gets plainscrape_extract # request → clean JSON plainscrape_refine # follow-up → updated dataset, 0 re-crawl plainscrape_crawl # scoped: stops when the answer is complete plainscrape_markdown # fit-markdown for RAG plainscrape_monitor # standing instructions + webhooks plainscrape_status # pages_used + cost_usd in every result
Agents that budget themselves
Every response carries cost_usd, so an autonomous agent can reason about spend: “stop if this job exceeds $0.50.”
Transparent pricing isn't a tagline. It's an API field.
The site redesigned overnight? Your extraction adapts to meaning, not markup. No 3 a.m. selector patching, ever.
JavaScript apps, infinite scroll, logins, PDFs, HTML from 2004. If a browser can see it, you can extract it.
Deduplicated, type-cast, validated against your request. Missing values say NOT_FOUND — never a confident guess.
“First 50 pages.” “Only /products/.” Scoped crawling stops when the answer is complete — you pay for pages that matter.
“Actually, skip out-of-stock items.” A follow-up prompt updates the result in place — the pages you paid for stay paid for.
English, Hindi, Spanish, Japanese — describe the data the way you actually think about it.
| DIY script | Selector tools | Most scraping APIs | Plainscrape | |
|---|---|---|---|---|
| Setup time | Days | Hours | Minutes | One instruction |
| Refine without re-crawling | ✗ | ✗ | ✗ | ✓ conversational |
| Survives redesigns | ✗ | ✗ | Partly | ✓ self-healing |
| Non-dev friendly | ✗ | Partly | ✗ | ✓ plain English |
| Price of a JS page | Your time | 1–25 credits | Up to 9× base | 1 page = 1 page |
| Cost visibility | — | Monthly surprise | Credit math | $ in every response |
Same tasks, measured openly → see the benchmarks
Every competitor's pricing page, weekly. Flag changes.
All Series A+ fintech companies from these 3 directories.
Product specs and reviews for our RAG knowledge base.
New listings under $2,000/mo, 2BR+, posted today.
Every grant deadline on these 40 university pages.
All open remote AI roles with salary shown, apply links.
No multipliers for JavaScript, stealth, or “premium” sites. The price you compute is the price you pay.
On Growth. Credit-based AI scrapers charge up to $0.0075–$0.05 per comparable page.
pages_used and cost_usd ride along with your data. Budget caps per API key.
Export to JSON, CSV, or markdown anytime. We never resell your data and never train on it.
Most scraping APIs return markdown or HTML you still have to parse, clean, validate, and deduplicate. Plainscrape returns the finished dataset — and one page always costs one page, instead of up to 9 credits.
One page fetched = one page counted. No hidden multipliers for JavaScript rendering, proxies, or AI extraction. Failed pages don't count at all.
No. The dashboard takes a URL and a request in plain language. Developers get the same power via API, SDKs, and the MCP server.
Rotating proxies, real-browser rendering, and polite pacing are built in. We respect robots.txt and rate limits by default, and we're upfront about which site classes we support.
Yes — session support, infinite scroll, and “next page” logic are automatic. You can also describe actions in English: “click Load more until there's nothing left.”
Your extractions are yours. We don't resell data and we don't train models on your results. Enterprise options include VPC and self-hosting.