Quick Start - How to use
Fetch clean markdown from any site with Deepcrawl in minutes.
This guide shows the fastest way to turn a page into markdown with Deepcrawl. The platform exposes many endpoints—markdown extraction, link trees, logs, exports, and more—but we will focus on getMarkdown() so you can experience the basics first. Explore the navigation to dive into the rest of the API afterwards.
Choose how you want to use Deepcrawl
- Online Playground: Perfect for experimenting, no-code usage, testing options, and validating operations before integrating into your code. See the guide for details.
- REST API: Ideal when you need Deepcrawl from any environment (CLI, Zapier, Python scripts, internal tools) with zero setup.
- JavaScript/TypeScript SDK: Great for Node.js or server-side frameworks that want first-class typings, zod4-schemas, retries, and deeper integration.
Pick the option that matches your workflow and follow the steps below.
Step 1. Create an API key
Visit the Deepcrawl dashboard and sign in with your account.
Open API Keys page and generate a new key.
Copy the key and store it securely for the method you plan to use.
Store the key where your app can reach it
export DEEPCRAWL_API_KEY="dc-your-generated-key"Run this before invoking the CLI or scripts that call Deepcrawl.
# .env.local
DEEPCRAWL_API_KEY=dc-your-generated-keyWARNING
Access it in server components or API routes with
process.env.DEEPCRAWL_API_KEY.Keep the key in the secret manager your platform provides (for example, Vercel, Cloudflare, AWS). Expose it to runtime code as DEEPCRAWL_API_KEY.
Once the key is available to your environment, follow the path that fits your workflow.
Option A. Call the REST endpoint
Use GET https://api.deepcrawl.dev/read to fetch markdown anywhere. Provide either a bearer token or an x-api-key header—one is enough.
curl \
-H "Authorization: Bearer $DEEPCRAWL_API_KEY" \
"https://api.deepcrawl.dev/read?url=https://example.com"$apiKey = $env:DEEPCRAWL_API_KEY
$response = Invoke-RestMethod `
-Uri "https://api.deepcrawl.dev/read?url=https://example.com" `
-Headers @{ "Authorization" = "Bearer $apiKey" } `
-Method Get
# Replace the header with @{ "x-api-key" = $apiKey } if you prefer.
Write-Host $response.Substring(0, [Math]::Min(400, $response.Length))import os
import requests
api_key = os.environ["DEEPCRAWL_API_KEY"]
response = requests.get(
"https://api.deepcrawl.dev/read",
params={"url": "https://example.com"},
headers={"Authorization": f"Bearer {api_key}"},
timeout=30,
)
# Prefer `{"x-api-key": api_key}` if you want to omit the bearer header.
response.raise_for_status()
print(response.text[:400])# Example Domain
This domain is for use in illustrative examples in documents.Need more control? Switch to POST https://api.deepcrawl.dev/read for additional rich options. Other endpoints—link extraction, logs, exports—are documented in the API docs.
Option B. Use the TypeScript(JavaScript) SDK
Install the deepcrawl package when you want typed helpers and automatic retries in Node.js or edge/server runtimes.
pnpm add deepcrawlnpm install deepcrawlyarn add deepcrawlbun add deepcrawlMinimal Node.js example
import { DeepcrawlApp } from 'deepcrawl';
const client = new DeepcrawlApp({
apiKey: process.env.DEEPCRAWL_API_KEY!,
});
async function main() {
const markdown = await client.getMarkdown('https://example.com');
console.log(markdown.slice(0, 400));
}
main().catch((error) => {
console.error('Deepcrawl request failed', error);
process.exit(1);
});The client exposes every API group (read, links, logs, exports, and more). Browse the SDK reference to see how to generate link trees, inspect crawl history, or export responses.