{
  "openapi": "3.0.1",
  "info": {
    "title": "PDF Text Extractor & Markdown for LLM RAG: OCR, Tables, Chunks",
    "description": "Convert PDF to clean Markdown for LLM & RAG pipelines: text extractor with OCR fallback (50 languages), GitHub-flavored table reconstruction (incl. tables spanning pages), right-to-left script support, and optional RAG chunking. ~$0.005 for a 20-page text PDF. Pay only for pages with real text.",
    "version": "0.2",
    "x-build-id": "7djc1NMoIxKtkVGph"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/pankovs~pdf-to-llm-markdown/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-pankovs-pdf-to-llm-markdown",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/pankovs~pdf-to-llm-markdown/runs": {
      "post": {
        "operationId": "runs-sync-pankovs-pdf-to-llm-markdown",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/pankovs~pdf-to-llm-markdown/run-sync": {
      "post": {
        "operationId": "run-sync-pankovs-pdf-to-llm-markdown",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "pdfs": {
            "title": "PDF URLs",
            "type": "array",
            "description": "http(s) URLs of PDF files to convert. At least one URL is required unless a file is uploaded via pdfFile.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "pdfFile": {
            "title": "Upload a PDF (optional)",
            "type": "string",
            "description": "Upload a single PDF from your computer via the Apify Console. Processed in addition to any URLs in pdfs."
          },
          "ocrMode": {
            "title": "OCR mode",
            "enum": [
              "auto",
              "always",
              "never"
            ],
            "type": "string",
            "description": "auto: OCR only pages with too little extractable text. always: OCR every page. never: text layer only.",
            "default": "auto"
          },
          "ocrLanguages": {
            "title": "OCR languages",
            "pattern": "^(eng|rus|deu|fra|spa|por|ita|pol|lav|ukr|nld|swe|dan|nor|fin|ces|slk|hun|ron|tur|ell|ara|heb|fas|urd|hin|ben|tam|tel|mar|tha|vie|ind|msa|chi_sim|chi_tra|jpn|kor|bul|srp|hrv|slv|lit|est|cat|glg|eus|afr|swa|fil)(\\+(eng|rus|deu|fra|spa|por|ita|pol|lav|ukr|nld|swe|dan|nor|fin|ces|slk|hun|ron|tur|ell|ara|heb|fas|urd|hin|ben|tam|tel|mar|tha|vie|ind|msa|chi_sim|chi_tra|jpn|kor|bul|srp|hrv|slv|lit|est|cat|glg|eus|afr|swa|fil)){0,4}$",
            "type": "string",
            "description": "Tesseract language codes for scanned pages, joined with '+', e.g. eng+deu (up to 5). 50 languages: eng (English), rus (Russian), deu (German), fra (French), spa (Spanish), por (Portuguese), ita (Italian), pol (Polish), lav (Latvian), ukr (Ukrainian), nld (Dutch), swe (Swedish), dan (Danish), nor (Norwegian), fin (Finnish), ces (Czech), slk (Slovak), hun (Hungarian), ron (Romanian), tur (Turkish), ell (Greek), ara (Arabic), heb (Hebrew), fas (Persian), urd (Urdu), hin (Hindi), ben (Bengali), tam (Tamil), tel (Telugu), mar (Marathi), tha (Thai), vie (Vietnamese), ind (Indonesian), msa (Malay), chi_sim (Chinese (Simplified)), chi_tra (Chinese (Traditional)), jpn (Japanese), kor (Korean), bul (Bulgarian), srp (Serbian (Cyrillic)), hrv (Croatian), slv (Slovenian), lit (Lithuanian), est (Estonian), cat (Catalan), glg (Galician), eus (Basque), afr (Afrikaans), swa (Swahili), fil (Filipino). All are built in. Pick only the languages present in your scans: each extra language makes OCR slower. If OCR confidence is low, the page's script is detected automatically (Latin, Cyrillic, Greek, Arabic, Hebrew, Devanagari, Bengali, Tamil, Telugu, Thai, Chinese, Japanese, Korean) and the page is re-read with that script's language added. Pages OCR'd with low confidence (below 60%) are flagged in warnings and not charged.",
            "default": "eng"
          },
          "maxPagesPerPdf": {
            "title": "Max pages per PDF",
            "minimum": 1,
            "type": "integer",
            "description": "Stop processing a PDF after this many pages.",
            "default": 200
          },
          "extractTables": {
            "title": "Extract tables",
            "type": "boolean",
            "description": "Rebuild tables from the text layer as GitHub-flavored Markdown tables (| cell | cell |), kept whole in RAG chunks. Low-confidence layouts stay plain text. Not applied to OCR pages.",
            "default": true
          },
          "outputChunks": {
            "title": "Output RAG chunks",
            "type": "boolean",
            "description": "Also split the Markdown into overlapping chunks for retrieval-augmented generation.",
            "default": false
          },
          "chunkSize": {
            "title": "Chunk size (characters)",
            "minimum": 100,
            "type": "integer",
            "description": "Target chunk length in characters, used when outputChunks is enabled.",
            "default": 2000
          },
          "chunkOverlap": {
            "title": "Chunk overlap (characters)",
            "minimum": 0,
            "type": "integer",
            "description": "Number of characters each chunk overlaps with the previous one. At most half of chunkSize: a larger value is reduced to chunkSize / 2 and the item gets a warning.",
            "default": 200
          },
          "includePageMarkers": {
            "title": "Include page markers",
            "type": "boolean",
            "description": "Insert an HTML comment marker before each page's Markdown, e.g. <!-- page: 3 -->.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}