{
  "openapi": "3.0.1",
  "info": {
    "title": "Bilibili Scraper 哔哩哔哩 - Videos, Comments, Creators, No Login",
    "description": "Returns Bilibili (哔哩哔哩, B站) videos with views, likes, coins and tags, every comment and reply under a video, a creator's complete upload list and profile, trending and category rankings, and danmaku. Reads a keyword search past Bilibili's 1,000-result limit. No login, cookies or browser.",
    "version": "1.0",
    "x-build-id": "f0Q07nHX7dYfHSoed"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/benthepythondev~bilibili-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-benthepythondev-bilibili-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/benthepythondev~bilibili-scraper/runs": {
      "post": {
        "operationId": "runs-sync-benthepythondev-bilibili-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/benthepythondev~bilibili-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-benthepythondev-bilibili-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": {
          "queries": {
            "title": "Search queries",
            "type": "array",
            "description": "Keywords to search Bilibili videos for, in Chinese or English, for example \"人工智能\" or \"AI tutorial\". Each query returns videos up to the limit below. One Bilibili search lists about 1,000 videos; sorted by newest, the Actor reads on past that.",
            "items": {
              "type": "string"
            }
          },
          "creators": {
            "title": "Creators",
            "type": "array",
            "description": "Creators (UP主) whose uploads or profile you want: a space link such as https://space.bilibili.com/546195, the UID (546195), or the exact name. Returns every upload from new to old, up to the limit below. A name is looked up with Bilibili's own creator search.",
            "items": {
              "type": "string"
            }
          },
          "videoUrls": {
            "title": "Video links",
            "type": "array",
            "description": "Videos by link or id: https://www.bilibili.com/video/BV1suam6sEtq, a bare BV id, an av number (av170001) or a b23.tv short link. Each returns the video's full record; add comments or danmaku with the options below.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Rankings",
            "uniqueItems": true,
            "type": "array",
            "description": "Trending videos: `popular` is Bilibili's trending board (about 600 videos), `all` the top 100 across categories, every other value the top 100 of that category.",
            "items": {
              "type": "string",
              "enum": [
                "popular",
                "all",
                "animation",
                "music",
                "dance",
                "game",
                "knowledge",
                "tech",
                "sports",
                "car",
                "life",
                "food",
                "animal",
                "kichiku",
                "fashion",
                "entertainment",
                "film",
                "movie",
                "tv",
                "guochuang"
              ],
              "enumTitles": [
                "Trending now (about 600 videos)",
                "All categories: top 100",
                "Animation 动画",
                "Music 音乐",
                "Dance 舞蹈",
                "Games 游戏",
                "Knowledge 知识",
                "Tech 科技",
                "Sports 运动",
                "Cars 汽车",
                "Life 生活",
                "Food 美食",
                "Animals 动物圈",
                "Kichiku 鬼畜",
                "Fashion 时尚",
                "Entertainment 娱乐",
                "Film and TV 影视",
                "Movies 电影",
                "TV series 电视剧",
                "Chinese animation 国创"
              ]
            }
          },
          "maxResults": {
            "title": "Maximum videos per search, creator or ranking",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Videos to save for each search query, each creator and each ranking, up to 20,000. A video link is always one video. This is the main cost lever: every video row is charged.",
            "default": 20
          },
          "sortBy": {
            "title": "Sort order",
            "enum": [
              "relevance",
              "newest",
              "views",
              "danmaku",
              "favorites",
              "comments"
            ],
            "type": "string",
            "description": "Order of search results. For creators, `views` lists the most played uploads first and every other value the newest first.",
            "default": "relevance"
          },
          "duration": {
            "title": "Video length",
            "enum": [
              "any",
              "under10",
              "10to30",
              "30to60",
              "over60"
            ],
            "type": "string",
            "description": "Only search results of this length.",
            "default": "any"
          },
          "publishedAfter": {
            "title": "Published on or after",
            "type": "string",
            "description": "Only videos published on or after this day (2026-09-01, read as UTC) or within this age (7 days, 2 weeks). Applies to searches and creators."
          },
          "publishedBefore": {
            "title": "Published on or before",
            "type": "string",
            "description": "Only videos published up to the end of this day (UTC). Applies to searches and creators."
          },
          "creatorOutput": {
            "title": "What to return for a creator",
            "enum": [
              "videos",
              "profile",
              "both"
            ],
            "type": "string",
            "description": "`profile` returns one row per creator and no videos: followers, total likes, number of videos, level, verification, live room.",
            "default": "videos"
          },
          "includeDetails": {
            "title": "Full record for every video",
            "type": "boolean",
            "description": "Adds what lists do not carry: coins, shares, favourites, tags, description, parts, the creator's followers. Costs two requests per video (about five videos a second) and nothing extra. Video links always get the full record.",
            "default": false
          },
          "maxCommentsPerVideo": {
            "title": "Comments per video",
            "minimum": 0,
            "maximum": 20000,
            "type": "integer",
            "description": "Comments to save under each video, up to 20,000; 0 saves none. Each comment and reply is a row of its own, charged at the comment price.",
            "default": 0
          },
          "commentsSort": {
            "title": "Comment order",
            "enum": [
              "hot",
              "newest"
            ],
            "type": "string",
            "description": "Which comments come first when the limit is smaller than the comment section.",
            "default": "hot"
          },
          "includeReplies": {
            "title": "Replies under comments",
            "type": "boolean",
            "description": "Also saves the replies under each comment (楼中楼), each as a row with `rootRpid` and `isThreadReply`. They count towards the limit per video.",
            "default": false
          },
          "includeDanmaku": {
            "title": "Danmaku (弹幕)",
            "type": "boolean",
            "description": "Adds one row per video with its danmaku: the second of the video each one is shown at, its text, colour and time of sending. Bilibili's danmaku file holds a selection on busy videos (1,800 of 3,438 in a test), and the first part of a video only.",
            "default": false
          },
          "onlyNew": {
            "title": "Only videos not delivered before",
            "type": "boolean",
            "description": "For scheduled runs: skips every video an earlier run with the same monitor name saved. Use it with `sortBy: newest` to get what was published since the last run.",
            "default": false
          },
          "monitorId": {
            "title": "Monitor name",
            "type": "string",
            "description": "Names the memory of the only-new mode, for example `brand-daily`. Without a name the memory belongs to this exact list of searches, creators and rankings."
          },
          "debug": {
            "title": "Log every request",
            "type": "boolean",
            "description": "Writes each request with its size and time to the log, for support.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}