Deepcrawl

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-key

WARNING

Don't expose the key in client-side code.
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 deepcrawl
npm install deepcrawl
yarn add deepcrawl
bun add deepcrawl

Minimal 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.

What’s next