43 API endpoints. Cloudflare bypass. Playwright automation. AI schema detection. MCP server. $29 one-time. No API keys. No rate limits. No subscriptions.
From simple static pages to JavaScript-heavy SPAs behind Cloudflare. One tool. 43 endpoints. Zero compromises.
Built-in FlareSolverr integration + stealth Playwright. Bypass Cloudflare, DataDome, PerimeterX, and custom WAFs automatically.
flare_solverrFull browser automation with 50+ stealth plugins. Fingerprint rotation, viewport randomization, human-like mouse movements.
playwrightDrop a URL, get structured JSON. Our AI automatically detects the page schema and extracts clean, typed data without config.
ai_detectionScrape, crawl, screenshot, extract tables, download PDFs, monitor changes, rotate proxies, manage sessions. All in one API.
43_endpointsNative Model Context Protocol support. Connect Pry to Claude, Cursor, or any MCP client. Let AI scrape for you.
mcp_serverYour data never leaves your server. Docker Compose in one command. No API keys. No rate limits. No vendor lock-in.
self_hostedNo complex configuration. No puppeteer headaches. Just a clean API that works.
import requests # Scrape any URL — Cloudflare bypass included resp = requests.post("http://localhost:8000/scrape", json={ "url": "https://example.com", "render_js": True, "schema": "auto" # AI detects the structure }) data = resp.json() print(data["title"]) # "Example Domain" print(data["content"]) # Clean extracted text print(data["links"]) # All URLs found
curl -X POST http://localhost:8000/crawl \ -H "Content-Type: application/json" \ -d '{"url": "https://docs.example.com", "max_depth": 3}'
fetch("http://localhost:8000/screenshot", { method: "POST", body: JSON.stringify({ url: "https://example.com", full_page: true, device: "iPhone 14" }) }).then(r => r.blob())
See how Pry compares to Firecrawl, ScrapingBee, Bright Data, and Apify.
| Feature | Pry | Firecrawl | ScrapingBee | Bright Data | Apify |
|---|---|---|---|---|---|
| Pricing | $29 one-time | $65/mo | $49/mo | $500+/mo | $49/mo |
| Self-hosted | ✓ Yes | ✗ No | ✗ No | ✗ No | ✗ No |
| Open Source | ✓ Yes | ✗ No | ✗ No | ✗ No | ✗ Partial |
| Cloudflare Bypass | ✓ Built-in | ✓ Yes | ✓ Yes | ✓ Yes | ✓ Yes |
| Playwright | ✓ Full | ✓ Yes | ✗ Limited | ✓ Yes | ✓ Yes |
| AI Schema | ✓ Built-in | ✗ No | ✗ No | ✗ No | ✗ No |
| MCP Server | ✓ Native | ✗ No | ✗ No | ✗ No | ✗ No |
| Rate Limits | ✓ None | ✗ Yes | ✗ Yes | ✗ Yes | ✗ Yes |
| API Keys | ✓ None | ✗ Required | ✗ Required | ✗ Required | ✗ Required |
One payment. Lifetime access. No recurring fees. No usage limits. Source code included.
Join 89+ developers who switched from expensive APIs to Pry.
"Switched from Firecrawl and saved $780/year. The Cloudflare bypass actually works — something I never got reliable with other tools."
"The AI schema detection is magic. I pointed it at a product page and got perfectly structured JSON without writing a single selector."
"Self-hosted means my scraping data never leaves my servers. For compliance-heavy industries, this is non-negotiable."
Complete source code for the Pry scraper engine, all 43 API endpoints, Docker Compose setup, MCP server integration, documentation, and lifetime updates. One payment, use forever.
No. Pry is self-hosted. You run it on your own server. No API keys to manage, no monthly bills, no usage limits. Just your server and your targets.
Pry integrates FlareSolverr for Cloudflare challenge solving and uses stealth Playwright with fingerprint rotation, viewport randomization, and human-like behavior patterns. Works on Cloudflare, DataDome, PerimeterX, and most custom WAFs.
Yes. The Personal license covers commercial use for individuals and small teams. The Team license ($79) covers up to 5 developers. Enterprise licensing is available for larger organizations.
Python 3.12, FastAPI, Playwright, FlareSolverr, Docker, Redis (optional caching), and PostgreSQL (optional persistence). Runs on any Linux server with 2GB RAM.
Join 89+ developers who own their scraping infrastructure. $29 one-time. Lifetime access. Source code included.