> ## Documentation Index
> Fetch the complete documentation index at: https://docs.reader.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Make your first Reader request in under a minute.

By the end of this page you'll have scraped a real web page with Reader and seen clean markdown come back. Takes about 60 seconds.

## Step 1 - Get your API key

<Card title="Open Dashboard →" href="https://console.reader.dev" horizontal>
  Sign up free at console.reader.dev. You get **1,000 credits every month** on the free tier - no credit card required.
</Card>

Once you're signed in:

1. Click **API Keys** in the sidebar
2. Click **Create API Key** and give it a name (like "Playground")
3. Copy the key - it starts with `rdr_` and you'll only see it once

<Warning>
  Treat your API key like a password. Never commit it to version control or expose it in client-side code.
</Warning>

## Step 2 - Make your first request

Reader has one endpoint for everything: `POST /v1/read`. Send a URL, get back clean markdown.

<CodeGroup>
  ```bash curl theme={null}
  curl -X POST https://api.reader.dev/v1/read \
    -H "Content-Type: application/json" \
    -H "x-api-key: rdr_your_api_key" \
    -d '{
      "url": "https://example.com"
    }'
  ```

  ```javascript JavaScript theme={null}
  import { ReaderClient } from "@vakra-dev/reader-js";

  const reader = new ReaderClient({
    apiKey: "rdr_your_api_key",
  });

  const result = await reader.read({
    url: "https://example.com",
  });

  if (result.kind === "scrape") {
    console.log(result.data.markdown);
  }
  ```

  ```python Python theme={null}
  from reader_py import ReaderClient

  with ReaderClient(api_key="rdr_your_api_key") as reader:
      result = reader.read(url="https://example.com")
      if result.kind == "scrape":
          print(result.data.markdown)
  ```
</CodeGroup>

You should get back something like:

```json theme={null}
{
  "success": true,
  "data": {
    "markdown": "# Example Domain\n\nThis domain is for use in...",
    "metadata": {
      "title": "Example Domain",
      "description": "...",
      "statusCode": 200
    }
  }
}
```

That's it. You just scraped a page.

## Step 3 - Try something more interesting

Scrape a real article with main content extraction:

```bash theme={null}
curl -X POST https://api.reader.dev/v1/read \
  -H "Content-Type: application/json" \
  -H "x-api-key: rdr_your_api_key" \
  -d '{
    "url": "https://en.wikipedia.org/wiki/Web_scraping",
    "formats": ["markdown"],
    "onlyMainContent": true
  }'
```

Reader strips navigation, sidebars, and footers - you get just the article body as markdown. Perfect for feeding to an LLM.

## What's next

<CardGroup cols={2}>
  <Card title="Scrape vs Crawl" icon="arrows-split-up-and-left" href="/home/concepts/scrape-vs-crawl">
    Learn when to use a single URL vs an array vs a crawl.
  </Card>

  <Card title="Batch scraping" icon="layer-group" href="/home/guides/advanced/batch-scraping">
    Scrape hundreds of URLs in parallel.
  </Card>

  <Card title="Crawling a website" icon="sitemap" href="/home/guides/advanced/crawling">
    Discover and scrape every page on a domain.
  </Card>

  <Card title="SDKs" icon="box" href="/sdk/overview">
    Official JavaScript and Python clients.
  </Card>
</CardGroup>
