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

# List Extractors

> Retrieve a list of all extractors available in your account.

List all active extractors available to your account. This includes extractors you've created and any extractors installed from the catalog.

## Request

### Headers

<ParamField header="Authorization" type="string" required>
  Bearer token authentication. Example: `Bearer YOUR_API_KEY`
</ParamField>

### Query Parameters

<ParamField query="skip" type="integer" default="0">
  Number of records to skip for pagination
</ParamField>

<ParamField query="limit" type="integer" default="100">
  Maximum number of records to return
</ParamField>

## Example Request

<CodeGroup>
  ```bash cURL theme={null}
  curl https://api.doctly.ai/api/v1/e \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```

  ```python Python theme={null}
  import requests

  headers = {"Authorization": "Bearer YOUR_API_KEY"}

  response = requests.get(
      "https://api.doctly.ai/api/v1/e",
      headers=headers
  )

  data = response.json()
  print(f"Found {data['count']} extractors")

  for extractor in data['data']:
      print(f"  {extractor['name']} ({extractor['slug']})")
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.doctly.ai/api/v1/e', {
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY'
    }
  });

  const data = await response.json();
  console.log(`Found ${data.count} extractors`);

  data.data.forEach(extractor => {
    console.log(`  ${extractor.name} (${extractor.slug})`);
  });
  ```
</CodeGroup>

## Response

<ResponseField name="data" type="array">
  Array of extractor objects

  <Expandable title="Extractor Object">
    <ResponseField name="id" type="string">
      Unique identifier (UUID) for the extractor
    </ResponseField>

    <ResponseField name="name" type="string">
      Display name of the extractor
    </ResponseField>

    <ResponseField name="slug" type="string">
      URL-friendly identifier used in API paths
    </ResponseField>

    <ResponseField name="description" type="string">
      Description of what the extractor does
    </ResponseField>

    <ResponseField name="cost_type" type="string">
      Pricing model: `PER_PAGE` or `PER_DOCUMENT`
    </ResponseField>

    <ResponseField name="cost_credits" type="integer">
      Credits charged per page or per document
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="count" type="integer">
  Total number of extractors available
</ResponseField>

## Example Responses

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "data": [
      {
        "id": "987fcdeb-a654-3210-9876-543210987654",
        "name": "Invoice Extractor",
        "slug": "invoice-extractor",
        "description": "Extract invoice details including vendor, line items, and totals",
        "cost_type": "PER_PAGE",
        "cost_credits": 5
      },
      {
        "id": "abc12345-e89b-12d3-a456-426614174000",
        "name": "Resume Parser",
        "slug": "resume-parser",
        "description": "Extract candidate information from resumes",
        "cost_type": "PER_DOCUMENT",
        "cost_credits": 10
      },
      {
        "id": "def67890-e89b-12d3-a456-426614174000",
        "name": "Bank Statement Analyzer",
        "slug": "bank-statement",
        "description": "Extract transactions and account details from bank statements",
        "cost_type": "PER_PAGE",
        "cost_credits": 8
      }
    ],
    "count": 3
  }
  ```

  ```json 200 OK — Empty theme={null}
  {
    "data": [],
    "count": 0
  }
  ```

  ```json 401 Unauthorized theme={null}
  {
    "detail": "Invalid or missing API key"
  }
  ```
</ResponseExample>

## Pricing Models

Extractors use one of two pricing models:

| Cost Type      | Description                                              |
| -------------- | -------------------------------------------------------- |
| `PER_PAGE`     | Credits charged for each page in the document            |
| `PER_DOCUMENT` | Flat credit charge per document regardless of page count |


## OpenAPI

````yaml GET /e
openapi: 3.1.0
info:
  title: Doctly API
  description: >-
    The Doctly API enables you to programmatically convert PDF documents to
    Markdown and extract structured data using custom extractors.
  version: 1.0.0
  contact:
    email: support@doctly.ai
servers:
  - url: https://api.doctly.ai/api/v1
    description: Production server
security:
  - bearerAuth: []
paths:
  /e:
    get:
      tags:
        - Extractors
      summary: List Extractors
      description: Retrieve a list of active extractors for your account
      operationId: listExtractors
      parameters:
        - name: skip
          in: query
          description: Number of records to skip
          schema:
            type: integer
            default: 0
        - name: limit
          in: query
          description: Maximum number of records to return
          schema:
            type: integer
            default: 100
      responses:
        '200':
          description: List of extractors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExtractorsPublic'
components:
  schemas:
    ExtractorsPublic:
      type: object
      required:
        - data
        - count
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ExtractorPublic'
        count:
          type: integer
    ExtractorPublic:
      type: object
      required:
        - id
        - name
        - slug
        - cost_type
        - cost_credits
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        slug:
          type: string
        description:
          type: string
          nullable: true
        cost_type:
          type: string
          enum:
            - PER_PAGE
            - PER_DOCUMENT
        cost_credits:
          type: integer
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key authentication using Bearer token

````