{
  "openapi": "3.0.1",
  "info": {
    "title": "Docker Hub Repositories Scraper",
    "description": "Export public Docker Hub repository and tag metadata including pulls, stars, digests, architectures, timestamps, and descriptions.",
    "version": "0.1",
    "x-build-id": "i6kGJkdQlTX9vN0DX"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fetch_cat~docker-hub-repositories-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fetch_cat-docker-hub-repositories-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/fetch_cat~docker-hub-repositories-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fetch_cat-docker-hub-repositories-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/fetch_cat~docker-hub-repositories-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fetch_cat-docker-hub-repositories-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": "Search public Docker Hub repositories, for example postgres or redis. Supply at least one non-empty queries, repositories, or namespaces list. Lists can be combined; exact repositories are considered before queries, then namespaces, within maxRepositories. The form prefill is an example, not an API default. Results use source order; there is no sorting control.",
            "items": {
              "type": "string"
            }
          },
          "repositories": {
            "title": "Repositories",
            "type": "array",
            "description": "Exact repositories as namespace/name. Official image names such as postgres resolve to library/postgres. This list is an alternative to queries or namespaces; at least one list must contain a value. Form prefills are examples, not API defaults. Only public metadata is supported; no Docker login or customer proxy setting is used.",
            "items": {
              "type": "string"
            }
          },
          "namespaces": {
            "title": "Namespaces",
            "type": "array",
            "description": "Public Docker Hub namespaces to enumerate, for example library or bitnami. An alternative to queries or repositories; at least one list must contain a value. Enumeration is bounded by maxRepositories, so it may not cover the entire namespace.",
            "items": {
              "type": "string"
            }
          },
          "includeTags": {
            "title": "Include tags",
            "type": "boolean",
            "description": "Fetch tag metadata up to maxTagsPerRepository; default true. Repository mode nests tags in each repository row. Tag mode requires this setting to be true and maxTagsPerRepository to be at least 1. No image files are downloaded.",
            "default": true
          },
          "outputMode": {
            "title": "Output mode",
            "enum": [
              "repositories",
              "tags"
            ],
            "type": "string",
            "description": "repositories (default) saves one row per repository with nested tags when enabled. tags saves one row per fetched tag and requires includeTags=true and maxTagsPerRepository>=1; incompatible inputs are rejected before extraction. Each saved row is one item event; nested tags do not add item events in repository mode.",
            "default": "repositories"
          },
          "maxRepositories": {
            "title": "Maximum repositories",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Limit the unique repository candidates considered across all inputs, from 1 to 1000; default 20. Unavailable candidates may produce no row. In tag mode this is a repository limit, not a total tag-row limit.",
            "default": 20
          },
          "maxTagsPerRepository": {
            "title": "Maximum tags per repository",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum tags fetched per repository, from 0 to 500; default 5. Tags remain in source order, without additional sorting. Set 0 to skip tags in repository mode. Tag mode requires a value of at least 1 and includeTags=true.",
            "default": 5
          },
          "descriptionMaxLength": {
            "title": "Description maximum length",
            "minimum": 0,
            "maximum": 20000,
            "type": "integer",
            "description": "Maximum characters retained from each full repository description, from 0 to 20000. Set 0 to omit it. The input form/schema default is 20; API inputs that omit this field use the existing runtime limit of 2000. fullDescriptionTruncated indicates when an available description was shortened.",
            "default": 20
          },
          "maxRuntimeSeconds": {
            "title": "Maximum runtime",
            "minimum": 31,
            "maximum": 270,
            "type": "integer",
            "description": "Run budget from 31 to 270 seconds; default 270. A 30-second shutdown reserve reduces the time available for new work. Pending repository names are saved to PENDING_REPOSITORIES when stopping between repositories; they are not resumed automatically. RUN_SUMMARY is best-effort diagnostic information, not a guaranteed output record.",
            "default": 270
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}