import Link from 'next/link' export default function Home() { return (

Extract, capture, and convert
any webpage

Screenshots, PDFs, markdown, structured data and more — all from a single API call. Just send a URL and get back exactly what you need.

Get started free API Playground →
$ curl -X POST /api/screenshot -d {'{'}"url": "https://example.com"{'}'}
{'{'} "success": true,
"url": "https://cdn.crawlapi.dev/s/abc123.png",
"width": 1440 {'}'}

9 endpoints, one shape

Every endpoint accepts the same request body. Send a URL and optional config — get back exactly what you need.

{[ { method: 'POST', path: '/api/crawl', desc: 'Full JS-rendered page crawl with all resources' }, { method: 'POST', path: '/api/content', desc: 'Raw HTML content of any page' }, { method: 'POST', path: '/api/screenshot', desc: 'Full-page PNG screenshot, hosted on CDN' }, { method: 'POST', path: '/api/pdf', desc: 'PDF export of any page, hosted on CDN' }, { method: 'POST', path: '/api/markdown', desc: 'Clean Markdown extraction from any page' }, { method: 'POST', path: '/api/snapshot', desc: 'HTML + screenshot combined in one call' }, { method: 'POST', path: '/api/scrape', desc: 'Structured extraction with CSS selectors' }, { method: 'POST', path: '/api/json', desc: 'Page content as structured JSON' }, { method: 'POST', path: '/api/links', desc: 'Extract all links from any page' }, ].map((ep) => (
{ep.method}
{ep.path}
{ep.desc}
))}

Simple, per-call pricing

Start free. Scale as you grow. Every endpoint costs 1 API call — no surprises.

{[ { name: 'Hobby', price: '$9', credits: '1,000 API calls/mo', concurrent: '3 concurrent requests' }, { name: 'Starter', price: '$19', credits: '3,000 API calls/mo', concurrent: '5 concurrent requests' }, { name: 'Pro', price: '$49', credits: '10,000 API calls/mo', concurrent: '10 concurrent requests' }, { name: 'Startup', price: '$99', credits: '25,000 API calls/mo', concurrent: '20 concurrent requests' }, ].map((plan) => (
{plan.name}
{plan.price}/mo
{plan.credits}
{plan.concurrent}
))}
) }