{
  "openapi": "3.0.1",
  "info": {
    "title": "Open Library Scraper: Books, Ratings & ISBN Data",
    "description": "Scrape Open Library books: search by title, author, subject or year with ratings and want-to-read counts, look up ISBNs for publisher and pages, and pull work details with rating breakdowns. Export CSV, Excel, JSON, XML. No login or API key. From $0.013 per book.",
    "version": "0.1",
    "x-build-id": "H2OvBCDd8JvYjkjz8"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~open-library-books-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-open-library-books-scraper",
        "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/recordsdata~open-library-books-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-open-library-books-scraper",
        "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/recordsdata~open-library-books-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-open-library-books-scraper",
        "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": {
          "searchQuery": {
            "title": "Search query (optional)",
            "type": "string",
            "description": "Search Open Library books by title or keywords (at least 3 characters), for example dune or science fiction classics. Leave empty to browse with the filters, or to use only the ISBN, work ID, author or subject inputs. At least one search input is required.",
            "default": ""
          },
          "author": {
            "title": "Author filter (optional)",
            "type": "string",
            "description": "Filter the book search by author name, for example Frank Herbert. Combine with a search query, subject or year range.",
            "default": ""
          },
          "subject": {
            "title": "Subject filter (optional)",
            "type": "string",
            "description": "Filter the book search by subject or genre, for example fantasy or biography.",
            "default": ""
          },
          "language": {
            "title": "Language filter (optional)",
            "type": "string",
            "description": "Only return books that have at least one edition in this language. Use the 3-letter Open Library code (eng, fre, ger, spa, por, ita, rus, jpn, chi, lat) or the English name (French, German). Several languages separated by commas return books in any of them, for example eng, fre.",
            "default": ""
          },
          "ebooksOnly": {
            "title": "Only books with a readable ebook",
            "type": "boolean",
            "description": "Only return books that have a full-text ebook on Open Library or the Internet Archive (free to read or borrowable). Applies to the book search.",
            "default": false
          },
          "ebookAccess": {
            "title": "Ebook access",
            "enum": [
              "any",
              "public",
              "borrowable",
              "printdisabled",
              "no_ebook"
            ],
            "type": "string",
            "description": "Filter by how the ebook can be read: public (free to read), borrowable (lending library), printdisabled (print-disabled readers only) or no_ebook (no digital copy). Any applies no filter. Applies to the book search.",
            "default": "any"
          },
          "publisher": {
            "title": "Publisher filter (optional)",
            "type": "string",
            "description": "Only return books with an edition from this publisher, for example Penguin or Ace Books. Applies to the book search.",
            "default": ""
          },
          "yearFrom": {
            "title": "First published from (optional)",
            "minimum": 1000,
            "type": "integer",
            "description": "Only return books first published in this year or later, for example 1960. Applies to the book search."
          },
          "yearTo": {
            "title": "First published to (optional)",
            "minimum": 1000,
            "type": "integer",
            "description": "Only return books first published in this year or earlier, for example 1980. Applies to the book search."
          },
          "minRatingsCount": {
            "title": "Minimum number of ratings (optional)",
            "minimum": 1,
            "type": "integer",
            "description": "Only return books with at least this many reader ratings, for example 50. Useful to skip books nobody rated. Applies to the book search."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "rating desc",
              "new",
              "old",
              "editions",
              "want_to_read",
              "trending"
            ],
            "type": "string",
            "description": "Order of book search results: relevance, rating (best first), newest, oldest, most editions, most wanted-to-read or trending (Open Library trending score).",
            "default": "relevance"
          },
          "includeWorkDetails": {
            "title": "Add description and links to book rows",
            "type": "boolean",
            "description": "Adds the work description, links and first publish date to every book row. Costs one extra request per row, so the run is slower (about 1 second per row). Off by default.",
            "default": false
          },
          "coverSize": {
            "title": "Cover image size",
            "enum": [
              "S",
              "M",
              "L"
            ],
            "type": "string",
            "description": "Size of the cover image link in the output: S (small), M (medium, default) or L (large).",
            "default": "M"
          },
          "isbns": {
            "title": "ISBN lookups (optional)",
            "type": "array",
            "description": "List of ISBN-10 or ISBN-13 numbers. Each valid ISBN returns one edition row with publisher, publish date, page count and format.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "workIds": {
            "title": "Work IDs (optional)",
            "type": "array",
            "description": "List of Open Library work IDs such as OL893414W (or the full work URL). Each returns one work row with description, subjects and the 1-5 star rating breakdown.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "authorSearch": {
            "title": "Author search (optional)",
            "type": "string",
            "description": "Find authors by name (at least 3 characters), for example Frank Herbert. Each author is one row with birth and death date, number of works, top work, top subjects and reader counts. Wrap a full name in double quotes for an exact phrase.",
            "default": ""
          },
          "authorSortBy": {
            "title": "Author sort",
            "enum": [
              "relevance",
              "work_count desc",
              "name",
              "birth_date asc",
              "birth_date desc"
            ],
            "type": "string",
            "description": "Order of the author search results: relevance (an exact name match comes first), most works first, name A to Z, or birth date oldest or youngest first.",
            "default": "relevance"
          },
          "authorIds": {
            "title": "Author IDs (optional)",
            "type": "array",
            "description": "List of Open Library author IDs such as OL79034A (or the full author URL). Each returns one author row.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeAuthorDetails": {
            "title": "Add biography and links to author rows",
            "type": "boolean",
            "description": "Adds biography, links, external ids (Wikidata, VIAF, ISNI) and photo to every author row. Costs one extra request per author, so the run is slower. Off by default.",
            "default": false
          },
          "subjectNames": {
            "title": "Subjects (optional)",
            "type": "array",
            "description": "List of Open Library subjects, for example science fiction, fantasy or place:london, person:sherlock_holmes, time:20th_century. Each returns one subject row with the number of works, ebooks, related subjects, top authors and publishers. Use the subject filter to list the books of a subject.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Maximum number of rows to return across book search, ISBN, work, author and subject results. Free Apify users are limited to 10 rows; paid users can go up to 1,000,000. You are only charged for rows delivered.",
            "default": 10
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}