{
  "openapi": "3.0.1",
  "info": {
    "title": "Bulk OCR: Google Sheet or CSV of Image & PDF URLs to Text",
    "description": "Bulk OCR for a Google Sheet or CSV with a column of image or PDF URLs. Batch image to text: each row comes back with your columns plus the text, page counts and OCR confidence. Tesseract 5 runs inside the Actor, no outside AI. $0.005 per OCR page, $0.0005 per digital page. Failed files are free.",
    "version": "0.1",
    "x-build-id": "Iid8WWn4co9WEaa31"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/brasspage~bulk-ocr-google-sheets-csv/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-brasspage-bulk-ocr-google-sheets-csv",
        "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/brasspage~bulk-ocr-google-sheets-csv/runs": {
      "post": {
        "operationId": "runs-sync-brasspage-bulk-ocr-google-sheets-csv",
        "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/brasspage~bulk-ocr-google-sheets-csv/run-sync": {
      "post": {
        "operationId": "run-sync-brasspage-bulk-ocr-google-sheets-csv",
        "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": {
          "sheetUrl": {
            "title": "Google Sheet or CSV link",
            "type": "string",
            "description": "Paste a Google Sheets link or a link to a CSV file. The first row must hold the column names, and one column must hold the image or PDF URLs. In Google Sheets, click Share and set General access to 'Anyone with the link' (no sign-in or API key). For a sheet with several tabs, copy the link while the tab is open. Google Drive and Dropbox links to a CSV work too."
          },
          "csvFile": {
            "title": "Or upload a CSV file",
            "type": "string",
            "description": "A CSV file from your computer (comma, semicolon or tab separated). Used when the link above is empty. Excel files: save as CSV first."
          },
          "datasetId": {
            "title": "Or an Apify dataset ID",
            "type": "string",
            "description": "One of your datasets, for example a scraper's output with image URLs. Each item is a row. When set, the link and the file above are not used."
          },
          "urlColumn": {
            "title": "Column with the URLs",
            "type": "string",
            "description": "Optional. The name of the column that holds the image or PDF URLs (case does not matter). Leave empty to use the column with the most links."
          },
          "pages": {
            "title": "Pages",
            "pattern": "^[0-9,\\- ]*$",
            "type": "string",
            "description": "Optional. Pages to read in each file, for example 1 for the first page only, or 1-3, 5. Leave empty for all pages. An image is page 1."
          },
          "language": {
            "title": "Language",
            "enum": [
              "eng",
              "spa",
              "fra",
              "deu",
              "por",
              "rus",
              "ara",
              "hin",
              "chi_sim",
              "jpn"
            ],
            "type": "string",
            "description": "The language of scanned pages and images. English also reads most Latin-alphabet text, but accents come out better with the right language. Pages with a text layer are read as they are, in any language.",
            "default": "eng"
          },
          "outputFormat": {
            "title": "Text format",
            "enum": [
              "text",
              "markdown"
            ],
            "type": "string",
            "description": "Plain text has no formatting. Markdown keeps headings, lists and tables. Tables are pipe tables in both.",
            "default": "text"
          },
          "maxPagesPerRun": {
            "title": "Max pages per run",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Safety limit. The run stops after this many pages in total. The rows after that get 'Skipped' in ocrError.",
            "default": 5000
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}